输入一个整数n在输入n个整数,存入数组一,然后再输入m个数存入数组2,对比不是两个数组都有的数据,c语言
时间: 2024-12-05 19:15:57 浏览: 40
在C语言中,你可以通过以下几个步骤来比较两个数组`array1`和`array2`,找出它们都不包含的数据:
1. 定义并初始化两个整数数组,例如:
```c
#include <stdio.h>
int main() {
int n, m;
printf("请输入第一个数组的元素个数(n): ");
scanf("%d", &n);
int array1[n];
// 读取并存储第一个数组
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个元素: ", i+1);
scanf("%d", &array1[i]);
}
printf("\n请输入第二个数组的元素个数(m): ");
scanf("%d", &m);
int array2[m];
// 读取并存储第二个数组
for (int j = 0; j < m; j++) {
printf("请输入第 %d 个元素: ", j+1);
scanf("%d", &array2[j]);
}
```
2. 创建一个新的数组`diff`用于存放只在一个数组中出现的数字,初始化长度为`n + m`。
```c
int diff[n+m];
int count = 0;
```
3. 遍历两个数组,将不在另一个数组中存在的元素添加到`diff`数组,并记录计数器`count`。
```c
for (int k = 0; k < n || k < m; ++k) {
if ((k < n && !binary_search(array2, m, array1[k])) ||
(k < m && !binary_search(array1, n, array2[k]))) {
diff[count++] = (k < n) ? array1[k] : array2[k];
}
}
```
这里假设有一个辅助函数`binary_search`用于查找数组中是否存在某个值。如果没有内置函数,你需要自定义这个函数。
4. 最后,打印出结果数组`diff`:
```c
printf("两个数组都不含的元素有: ");
for (int i = 0; i < count; i++) {
printf("%d ", diff[i]);
}
printf("\n");
return 0;
}
// 为了简化,这里仅提供二分查找示例,实际可以使用更高效的搜索算法
int binary_search(int arr[], int size, int target) {
int low = 0, high = size - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target)
return true;
else if (arr[mid] < target)
low = mid + 1;
else
high = mid - 1;
}
return false;
}
```
阅读全文