合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
练习7-4 找出不是两个数组共有的元素
给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数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> // 引入标准输入输出库,用于使用 scanf 和 printf 函数
int main() {
int n1; // 定义变量 n1,用于存储第一个数组的长度
scanf("%d", &n1); // 读取第一个数组的长度 n1
int numArr1[n1]; // 定义第一个数组 numArr1,长度为 n1
for (int i = 0; i < n1; i++) { // 遍历第一个数组
scanf("%d", &numArr1[i]); // 读取第一个数组的每个元素
}
int n2; // 定义变量 n2,用于存储第二个数组的长度
scanf("%d", &n2); // 读取第二个数组的长度 n2
int numArr2[n2]; // 定义第二个数组 numArr2,长度为 n2
for (int i = 0; i < n2; i++) { // 遍历第二个数组
scanf("%d", &numArr2[i]); // 读取第二个数组的每个元素
}
int resultArr[n1 + n2]; // 定义结果数组 resultArr,长度为 n1 + n2
int cnt = 0; // 定义变量 cnt,用于记录结果数组的长度
// 找出 numArr1 中不在 numArr2 中的元素
for (int i = 0; i < n1; i++) { // 遍历第一个数组
int isUnique = 1; // 假设当前元素是唯一的
for (int j = 0; j < n2; j++) { // 遍历第二个数组
if (numArr1[i] == numArr2[j]) { // 如果找到相同元素
isUnique = 0; // 标记为非唯一
break;
}
}
if (isUnique) { // 如果当前元素是唯一的
int digit = numArr1[i]; // 获取当前元素
resultArr[cnt] = digit; // 将当前元素添加到结果数组
cnt++; // 结果数组长度加 1
}
}
// 找出 numArr2 中不在 numArr1 中的元素
for (int i = 0; i < n2; i++) { // 遍历第二个数组
int isUnique = 1; // 假设当前元素是唯一的
for (int j = 0; j < n1; j++) { // 遍历第一个数组
if (numArr2[i] == numArr1[j]) { // 如果找到相同元素
isUnique = 0; // 标记为非唯一
break;
}
}
if (isUnique) { // 如果当前元素是唯一的
int digit = numArr2[i]; // 获取当前元素
resultArr[cnt] = digit; // 将当前元素添加到结果数组
cnt++; // 结果数组长度加 1
}
}
int tempArr[cnt]; // 定义临时数组 tempArr,用于标记重复元素
for (int i = 0; i < cnt; i++) { // 遍历结果数组
for (int j = i + 1; j < cnt; j++) { // 检查当前元素是否与后续元素重复
if (resultArr[i] == resultArr[j]) { // 如果找到重复元素
tempArr[j] = 1; // 标记为重复
}
}
}
int m = 0; // 定义变量 m,用于控制输出格式
for (int i = 0; i < cnt; i++) { // 遍历结果数组
if (tempArr[i] != 1) { // 如果当前元素未被标记为重复
if (m == 0) { // 如果是第一个元素
printf("%d", resultArr[i]); // 直接输出
} else { // 如果是其他元素
printf(" %d", resultArr[i]); // 在前面加一个空格后输出
}
m++; // 输出计数器加 1
}
}
return 0; // 程序正常结束
}