输入一个正整数n(1<n<10),再输入n个整数,存入笫1个数组中;然后输入一个正整数m(I<m<10),再输入m个整数,存入第2个数组中,试编写程序找出并输出所有不是这两个数组共有的元素。用最简单的c语言
时间: 2024-10-27 15:05:03 浏览: 47
进制转换 把一个任意的十进制正整数 N 转换成 d 进制数。 N 是一个正整数,d 是一个大于 1 小于 10 的整数,二者均由用户输入,且两数字用换行分隔。
在C语言中,我们可以使用`#include <stdio.h>`头文件来处理输入和输出,并利用两个数组分别存储输入的整数。为了找出非共有的元素,我们可以在两个数组遍历完成后,创建一个新的数组存放第一个数组中不在第二个数组中存在的元素,以及第二个数组中不在第一个数组中存在的元素。以下是简单的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h> // 使用malloc分配内存
#define MAX_NUMS 10 // 数组最大容量
void find_unique(int* arr1, int* arr2, int size1, int size2) {
int unique[size1 + size2]; // 新建一个足够大的数组来存储唯一元素
int unique_size = 0;
// 遍历第一个数组,检查每个元素是否在第二个数组中
for (int i = 0; i < size1; i++) {
int found = 0;
for (int j = 0; j < size2; j++) {
if (arr1[i] == arr2[j]) {
found = 1;
break;
}
}
if (!found) {
unique[unique_size++] = arr1[i];
}
}
// 遍历第二个数组,同样的逻辑
for (int i = 0; i < size2; i++) {
int found = 0;
for (int j = 0; j < size1; j++) {
if (arr2[i] == arr1[j]) {
found = 1;
break;
}
}
if (!found) {
unique[unique_size++] = arr2[i];
}
}
// 输出唯一的元素
printf("非共有元素:\n");
for (int i = 0; i < unique_size; i++) {
printf("%d ", unique[i]);
}
printf("\n");
}
int main() {
int n, m;
printf("请输入第一个数组的长度(n): ");
scanf("%d", &n);
int* arr1 = (int*) malloc(n * sizeof(int)); // 动态分配空间
printf("请输入第一个数组的元素:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &arr1[i]);
}
printf("请输入第二个数组的长度(m): ");
scanf("%d", &m);
int* arr2 = (int*) malloc(m * sizeof(int)); // 动态分配空间
printf("请输入第二个数组的元素:\n");
for (int i = 0; i < m; i++) {
scanf("%d", &arr2[i]);
}
find_unique(arr1, arr2, n, m);
free(arr1); // 释放第一个数组的内存
free(arr2); // 释放第二个数组的内存
return 0;
}
```
阅读全文