11-1 改错题
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
函数merge的功能是:合并两个字符集合为一个新集合,每个字符串在新集合中仅出现一次,函数返回新集合中字符串的个数。
【含有错误的源程序】
#include <stdio.h>
#include <string.h>
#define N 100
#define M 10
int merge(char s1[][M],int n1, char s2[][M],int n2, char s3[][M])
{
int i,j,k=0;
for(i=0; i<n1; i++)
for(j=0; j<n2; j++)
if(strcmp(s2[i],s1[j])==0)
break;
if(j>n2)
s3[k++]=s1[i];
for(i=0; i<n1; i++)
{
for(j=0; j<n2; j++)
if(strcmp(s2[i],s1[j])==0)
break;
if(j>n2)
strcpy(s3[k++],s2[i]);
}
return k;
}
void main()
{
char s1[N][M], s2[N][M], s3[N+N][M];
int i, n1,n2;
scanf("%d", &n1);
for(i=0; i<n1; i++) scanf("%s", s1[i]);
scanf("%d", &n2);
for(i=0; i<n2; i++) scanf("%s", s2[i]);
int n3=merge(s1[][10],s2[][10],s3[ ][10],n1,n2);
for(i=0; i<n3; i++)
printf("%s ",s3[i]);
}
测试案例:
输入:
7 while for switch if continue for if
6 for case do else char switch
输出:
while for switch if continue case do else char