用C语言写两个集合的笛卡尔乘积
时间: 2024-03-24 12:35:58 浏览: 30
好的,我们可以定义一个结构体来表示一个集合:
```
typedef struct {
int *elements; // 集合元素数组
int size; // 集合大小
} Set;
```
接下来,我们可以实现两个集合的笛卡尔积计算,具体实现如下:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *elements; // 集合元素数组
int size; // 集合大小
} Set;
// 初始化集合
void initSet(Set *set, int size) {
set->elements = (int *) malloc(size * sizeof(int));
set->size = size;
}
// 释放集合内存
void freeSet(Set *set) {
free(set->elements);
}
// 计算两个集合的笛卡尔积
void cartesianProduct(Set *set1, Set *set2, int *result, int *count) {
for (int i = 0; i < set1->size; i++) {
for (int j = 0; j < set2->size; j++) {
result[(*count)++] = set1->elements[i];
result[(*count)++] = set2->elements[j];
}
}
}
int main() {
Set set1, set2;
initSet(&set1, 2);
set1.elements[0] = 1;
set1.elements[1] = 2;
initSet(&set2, 2);
set2.elements[0] = 3;
set2.elements[1] = 4;
int result[set1.size * set2.size];
int count = 0;
cartesianProduct(&set1, &set2, result, &count);
for (int i = 0; i < count; i += 2) {
printf("(%d, %d)\n", result[i], result[i+1]);
}
freeSet(&set1);
freeSet(&set2);
return 0;
}
```
这段代码实现了两个集合的笛卡尔积计算,输出结果为:
```
(1, 3)
(1, 4)
(2, 3)
(2, 4)
```