给定两个整型数组,本题要求找出不是两者共有的元素。用c语言编写程序 输入 输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。 输出 在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。
时间: 2024-02-03 17:11:49 浏览: 63
找出不是两个数组共有的元素.c
以下是一个可能的解法:
```c
#include <stdio.h>
int main()
{
int n1, n2, i, j, k = 0;
int a[20], b[20], c[40];
// 读入数组1
scanf("%d", &n1);
for (i = 0; i < n1; i++)
scanf("%d", &a[i]);
// 读入数组2
scanf("%d", &n2);
for (i = 0; i < n2; i++)
scanf("%d", &b[i]);
// 找不是两者共有的元素
for (i = 0; i < n1; i++)
{
for (j = 0; j < n2; j++)
{
if (a[i] == b[j])
break;
}
if (j == n2) // a[i] 不在数组2中
{
// 判断是否已经输出过
for (j = 0; j < k; j++)
{
if (c[j] == a[i])
break;
}
if (j == k) // a[i] 没有重复输出过
c[k++] = a[i];
}
}
for (i = 0; i < n2; i++)
{
for (j = 0; j < n1; j++)
{
if (b[i] == a[j])
break;
}
if (j == n1) // b[i] 不在数组1中
{
// 判断是否已经输出过
for (j = 0; j < k; j++)
{
if (c[j] == b[i])
break;
}
if (j == k) // b[i] 没有重复输出过
c[k++] = b[i];
}
}
// 输出结果
for (i = 0; i < k; i++)
{
printf("%d", c[i]);
if (i < k - 1)
printf(" ");
}
return 0;
}
```
思路解释:
首先读入两个数组,然后对于第一个数组中的每个元素,找到它是否在第二个数组中出现过。如果没有出现过,则判断它是否已经输出过,如果没有输出过则输出它并记录下来。同样地,对于第二个数组中的每个元素,找到它是否在第一个数组中出现过,并按照同样的方式进行处理。最后输出所有不重复的元素。
阅读全文