目录
输入格式:
输出格式:
输入样例:
输出样例:
代码呈现
测试点
给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。
输出格式:
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。
输入样例:
10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1
输出样例:
3 5 -15 6 4 1
代码呈现
//C语言
#include <stdio.h>
int main()
{
// 目标数组
int a1[20] = { 0 };
// 目标数组
int a2[20] = { 0 };
// 临时数组
int a3[20] = { 0 };
// 分别表示两个数组的长度(元素个数)
int n, m;
// 先输入的表示 a1 的长度,然后输入目标数组 a1 的每个元素
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a1[i]);
}
// 先输入的表示 a2 的长度,然后输入目标数组 a2 的每个元素
scanf("%d", &m);
for (int i = 0; i < m; i++)
{
scanf("%d", &a2[i]);
}
// k 为临时数组的索引
int k = 0;
for (int i = 0; i < n; i++)
{
// flag表示假设当前元素在另一个数组中不出现
int flag = 1;
for (int j = 0; j < m; j++)
{
// 如果找到相同的元素,就将 flag 置为 0 ,假设不成立
if (a1[i] == a2[j])
{
flag = 0;
}
}
// 如果假设成功,就将当前元素放入临时数组
if (flag) a3[k ++] = a1[i];
}
for (int i = 0; i < m; i++)
{
int flag = 1;
for (int j = 0; j < n; j++)
{
if (a2[i] == a1[j])
{
flag = 0;
}
}
if (flag) a3[k++] = a2[i];
}
// 打印临时数组的数据,重复的只打印一次
for (int i = 0; i < k; i++)
{
int flag = 1;
// 向前寻找看有没有相同元素
for (int j = 0; j < i; j++)
{
// 有就将 flag 置为 0 ,后面的 if 就不进去
if (a3[i] == a3[j])
{
flag = 0;
}
}
// 如果 flag 为 1 ,说明当前的元素没有重复,进入 if
if (flag)
{
// 控制输入格式,题目会检查
if (!i)
{
// 如果是第一个元素就不打印空格
printf("%d", a3[i]);
}
else
{
// 将空格往前打印,因为最后不能有空格
printf(" %d", a3[i]);
}
}
}
return 0;
}