用C语言编写一个能完成集合的交、并和差运算的程序。要求: (1)集合的元素限定为任意个英文小写字母。(2)用数组表示集合
时间: 2024-05-06 16:18:23 浏览: 92
以下是一个用C语言编写的能够完成集合的交、并和差运算的程序,集合的元素限定为任意个英文小写字母,使用数组表示集合:
```c
#include <stdio.h>
#include <string.h>
#define SET_SIZE 26 // 集合大小为26个小写字母
void print_set(int set[]) {
printf("{ ");
for (int i = 0; i < SET_SIZE; i++) {
if (set[i]) {
printf("%c ", i + 'a');
}
}
printf("}\n");
}
void set_union(int set1[], int set2[], int result[]) {
for (int i = 0; i < SET_SIZE; i++) {
result[i] = set1[i] || set2[i];
}
}
void set_intersection(int set1[], int set2[], int result[]) {
for (int i = 0; i < SET_SIZE; i++) {
result[i] = set1[i] && set2[i];
}
}
void set_difference(int set1[], int set2[], int result[]) {
for (int i = 0; i < SET_SIZE; i++) {
result[i] = set1[i] && !set2[i];
}
}
int main() {
int set1[SET_SIZE] = {0};
int set2[SET_SIZE] = {0};
int result[SET_SIZE] = {0};
// 初始化集合
set1['a' - 'a'] = 1;
set1['b' - 'a'] = 1;
set1['c' - 'a'] = 1;
set2['b' - 'a'] = 1;
set2['c' - 'a'] = 1;
set2['d' - 'a'] = 1;
// 求并集
set_union(set1, set2, result);
printf("set1 = ");
print_set(set1);
printf("set2 = ");
print_set(set2);
printf("set1 ∪ set2 = ");
print_set(result);
// 求交集
set_intersection(set1, set2, result);
printf("set1 = ");
print_set(set1);
printf("set2 = ");
print_set(set2);
printf("set1 ∩ set2 = ");
print_set(result);
// 求差集
set_difference(set1, set2, result);
printf("set1 = ");
print_set(set1);
printf("set2 = ");
print_set(set2);
printf("set1 - set2 = ");
print_set(result);
return 0;
}
```
程序的运行结果为:
```
set1 = { a b c }
set2 = { b c d }
set1 ∪ set2 = { a b c d }
set1 = { a b c }
set2 = { b c d }
set1 ∩ set2 = { b c }
set1 = { a b c }
set2 = { b c d }
set1 - set2 = { a }
```
阅读全文