练习7-4 找出不是两个数组共有的元素 (20分)
程序员文章站
2022-06-07 14:39:53
...
PTA
题目:
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[20], b[20], c[20],flag=0;//这里flag做旗帜变量
int m, n, i, j, k=0;
scanf("%d", &m);
for(i=0; i<m; i++)
scanf("%d", &a[i]);
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &b[i]);//对数组赋值
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
if(a[i]==b[j])
break;
if(j>=n)
{
c[k]=a[i];
k++;
flag=1;
}//将不重复的数字添加到c中
}
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
if(b[i]==a[j])
break;
if(j>=m)
{
c[k]=b[i];
k++;
flag=1;
}
}
if(flag!=0)
{
printf("%d", c[0]);//这并没用考虑到完全相同的情况
for(i=1; i<k; i++)
{
for(j=0; j<i; j++)
if(c[i]==c[j])
break;
if(j>=i)
printf(" %d", c[i]);
}
}
return 0;
}
详解:
- 总体思路:先赋值,将a数组中不存在与b数组的元素填入c数组中,再将b数组中不存在于a数组中的元素填入c数组中,最后进行去重判断,同时要保留一种特殊情况即:两个数组完全相同。
- 判断特殊情况只需要一个旗帜变量flag即可很容易处理。除赋值外第一个大的for循环实现a数组的添加,第二个for循环实现b数组的添加。最后一个for循环实现判断去重。
结果: