用c语言写:输入两个正整数说明了两个集合A和B分别包含n个和m个集合,之后写出n个和m个正整数表示其中的集合元素,要求除去A集合中有B集合也含有的元素,并打印出剩下的元素
时间: 2023-05-24 10:06:40 浏览: 43
```c
#include <stdio.h>
#define MAX_N 100
#define MAX_M 100
int a[MAX_N], b[MAX_M]; // 定义数组存储集合元素
int main() {
int n, m;
printf("请输入两个正整数n和m:");
scanf("%d %d", &n, &m);
// 输入集合A的元素
printf("请输入集合A中的%d个元素:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 输入集合B的元素
printf("请输入集合B中的%d个元素:\n", m);
for (int i = 0; i < m; i++) {
scanf("%d", &b[i]);
}
// 找出集合A中没有出现在集合B中的元素
int count = 0;
printf("A - B = {");
for (int i = 0; i < n; i++) {
int flag = 1; // 定义标志位,表示当前元素是否同时存在于集合B中
for (int j = 0; j < m; j++) {
if (a[i] == b[j]) {
flag = 0;
break;
}
}
if (flag) {
if (count > 0) {
printf(", ");
}
printf("%d", a[i]);
count++;
}
}
printf("}\n");
return 0;
}
```
注意事项:
1. 在定义数组时,要根据题目给出的n和m的最大值来决定数组的大小。
2. 在输入元素时,要确保输入的都是正整数。
3. 在判断集合元素是否同时存在于集合B中时,可以使用双重循环来遍历两个集合的元素,效率不高但比较简单。也可以先将集合B中的元素存储在一个哈希表中,然后遍历集合A的元素,在哈希表中检查是否存在这样的元素,这种方法时间复杂度更低,但实现起来需要一些额外的代码。