测试用例由什么组成:请看一下我编的程序

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 12:30:29
程序的目的是合并两个数组,相同的字母只输出一次,不相同的字母要输出。如a={"w","a"},b={"w","c"},则要输出{"w","a","c"}
我得程序是 :

#include<stdio.h>
#include<string.h>
void main()
{
int i,j,k=0 ;char a[200][10]={"assume","bunch","composer","dinner\
","cat","dog"};
char b[5][10]={"assume","zaali","circle","online","dinner"};
for(i=0;i<7;i++)
for(j=0;j<6;j++)
if(strcmp(a[i],b[j])!=0)
{ strcpy(a[6+i],b[j]);
k++;
}
for(i=0;i<14;i++)
printf("%s\n",a[i]);
}
知道了是两个for循环是有问题,该怎么改?

#include<stdio.h>
#include<string.h>
void main()
{
int i,j,k=6;//k初始化成a的长度
int result = 0;//标志是否存在相同字符串
char a[200][10]={"assume","bunch","composer","dinner"\
,"cat","dog"};
char b[5][10]={"assume","zaali","circle","online","dinner"};

for(i=0;i<5;i++) //i是控制数组b
{
for(j=0;j<6;j++) //j控制数组a
{
if(strcmp(b[i],a[j]) == 0)
{
result = 1;//只要有一个相同标志为1
break;
}
}
if (!result)//只有都不相同的情况才保存
{
strcpy(a[k],b[i]);
k++;
}
result = 0;//标志复位
}
输出
for(j=0;j < k;j++)
{
printf("%s\n",a[j]);
}
}
改了挺多的,我运行可以完成你得功能,
强烈建议你用for语句不管他块里面有几条语句都要用大括号,别以为不家括号显得你理解c语言,很幼稚
还有一个大问题,不可以在字符串中换行!!!!!!声明a的时候

错了,上面的.#include<stdio.h>
#include<string.h>
void main()
{
int i,j,k=6;//k初始化成a的长度
int result = 0;//标志是否存在相同字符串
char a[200][10]={"assume","bunch","composer","dinner","cat","dog"};
char b[5][10]={"assume","zaali","circle","online","dinner"};
for(i=0;i<5;i++) //i是控制数组b
{
for(j=0;j<6;j++) //j控制数组a
{
if(strcmp(b[i],a[j]) == 0)
{
result = 1;//只要有一个相同标志为1
break;}
}
if (!result)//只有都不相同的情况才保存
{
strcpy(a[k],b[i]);
k++;
}
result = 0;//标志复位
}
for(j=0;j < k;j++)
{
printf("%s\n",a[j]);
}
}
这样才行,他编的很好,但是没去掉\,还有break后面的分号应用英文状态的,否则会出错,我相信这一定是他的无心之失.