(一维数组应用)编程实现:模拟集合运算(集合的并、交、差):集合A和B为随机生成的无重复整数数据集合,数据规模均为20,求A、B的交集和差集。
时间: 2023-03-25 17:03:08 浏览: 46
可以回答这个问题。实现代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 20
void generateSet(int set[], int size);
void printSet(int set[], int size);
void intersection(int setA[], int setB[], int size);
void difference(int setA[], int setB[], int size);
int main()
{
int setA[SIZE], setB[SIZE];
srand(time(NULL));
generateSet(setA, SIZE);
generateSet(setB, SIZE);
printf("Set A: ");
printSet(setA, SIZE);
printf("Set B: ");
printSet(setB, SIZE);
printf("Intersection: ");
intersection(setA, setB, SIZE);
printf("Difference A - B: ");
difference(setA, setB, SIZE);
printf("Difference B - A: ");
difference(setB, setA, SIZE);
return ;
}
void generateSet(int set[], int size)
{
int i, j, num;
for (i = ; i < size; i++) {
do {
num = rand() % 100 + 1;
for (j = ; j < i; j++) {
if (set[j] == num) {
break;
}
}
} while (j < i);
set[i] = num;
}
}
void printSet(int set[], int size)
{
int i;
printf("{");
for (i = ; i < size; i++) {
printf("%d", set[i]);
if (i < size - 1) {
printf(", ");
}
}
printf("}\n");
}
void intersection(int setA[], int setB[], int size)
{
int i, j;
printf("{");
for (i = ; i < size; i++) {
for (j = ; j < size; j++) {
if (setA[i] == setB[j]) {
printf("%d", setA[i]);
if (i < size - 1) {
printf(", ");
}
break;
}
}
}
printf("}\n");
}
void difference(int setA[], int setB[], int size)
{
int i, j, flag;
printf("{");
for (i = ; i < size; i++) {
flag = 1;
for (j = ; j < size; j++) {
if (setA[i] == setB[j]) {
flag = ;
break;
}
}
if (flag) {
printf("%d", setA[i]);
if (i < size - 1) {
printf(", ");
}
}
}
printf("}\n");
}