输入一个正整数n(1<n<10),再输入n个整数数放入数组a中;然后输入一个正整数m(1<m<10),再输入m个整数数放入数组b中,找出所有不属于这两个数组的共有元素并输出 c语言
时间: 2024-11-22 07:48:28 浏览: 47
在 C 语言中,你可以通过以下步骤实现这个功能:
1. 首先,你需要声明两个整型数组 `a` 和 `b` 来存储输入的数字,并定义两个整数变量 `n` 和 `m` 分别表示数组长度。
```c
#include <stdio.h>
#include <stdbool.h>
int main() {
int n, m;
scanf("%d", &n);
int a[n]; // 存储第一个数组的元素
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &m);
int b[m]; // 存储第二个数组的元素
for (int j = 0; j < m; j++) {
scanf("%d", &b[j]);
}
```
2. 接下来,你可以创建一个新数组 `common` 来存放它们共有的元素。声明一个布尔数组 `seen` 来跟踪每个数字是否已经检查过。遍历 `a` 数组,对于每个元素检查它是否出现在 `b` 中,如果没有,则添加到 `common`。
```c
bool seen[100]; // 假设100足够大用于储存所有可能的元素
int common[100] = {0}; // 初始化所有元素为0
for (int i = 0; i < n; i++) {
if (!seen[a[i]]) {
for (int j = 0; j < m; j++) {
if (a[i] == b[j]) {
seen[a[i]] = true;
common[a[i]] = 1;
break;
}
}
}
}
```
3. 最后,遍历 `common` 数组,输出不属于这两个数组的共有元素。注意,这里我们通常只打印非零值,因为如果一个元素同时属于两数组,它的值在 `common` 中会被置为1。
```c
for (int k = 0; k < 100; k++) {
if (common[k] == 0) {
printf("%d ", k); // 输出公共但不属于任何数组的元素
}
}
return 0;
}
```
阅读全文