用C语言编制一个能演示执行集合的交、并和差运算的程序。集合元素用小写英文字母,执行各种操作应以对话方式执行。
时间: 2024-05-13 20:17:22 浏览: 108
好的,我可以帮您编写这个程序。以下是程序代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SET_SIZE 26 // 集合大小
void print_set(int set[]);
void add_element(int set[], char element);
void remove_element(int set[], char element);
void union_set(int set1[], int set2[], int result[]);
void intersection_set(int set1[], int set2[], int result[]);
void difference_set(int set1[], int set2[], int result[]);
int main()
{
int set1[MAX_SET_SIZE] = {0};
int set2[MAX_SET_SIZE] = {0};
int result[MAX_SET_SIZE] = {0};
char operation[10];
char element;
printf("请输入第一个集合的元素,以空格分隔,按回车键结束:\n");
while (1) {
scanf("%c", &element);
if (element == '\n') {
break;
}
add_element(set1, element);
}
getchar(); // 吃掉回车符
printf("请输入第二个集合的元素,以空格分隔,按回车键结束:\n");
while (1) {
scanf("%c", &element);
if (element == '\n') {
break;
}
add_element(set2, element);
}
getchar(); // 吃掉回车符
printf("请输入操作(交、并、差),按回车键结束:\n");
scanf("%s", operation);
if (strcmp(operation, "交") == 0) {
intersection_set(set1, set2, result);
printf("交集为:");
print_set(result);
} else if (strcmp(operation, "并") == 0) {
union_set(set1, set2, result);
printf("并集为:");
print_set(result);
} else if (strcmp(operation, "差") == 0) {
difference_set(set1, set2, result);
printf("差集为:");
print_set(result);
} else {
printf("无效操作!\n");
}
return 0;
}
// 打印集合
void print_set(int set[])
{
int i;
for (i = 0; i < MAX_SET_SIZE; i++) {
if (set[i] == 1) {
printf("%c ", i + 'a');
}
}
printf("\n");
}
// 向集合中添加元素
void add_element(int set[], char element)
{
if (element >= 'a' && element <= 'z') {
set[element - 'a'] = 1;
}
}
// 从集合中删除元素
void remove_element(int set[], char element)
{
if (element >= 'a' && element <= 'z') {
set[element - 'a'] = 0;
}
}
// 计算两个集合的并集
void union_set(int set1[], int set2[], int result[])
{
int i;
for (i = 0; i < MAX_SET_SIZE; i++) {
result[i] = set1[i] || set2[i];
}
}
// 计算两个集合的交集
void intersection_set(int set1[], int set2[], int result[])
{
int i;
for (i = 0; i < MAX_SET_SIZE; i++) {
result[i] = set1[i] && set2[i];
}
}
// 计算两个集合的差集
void difference_set(int set1[], int set2[], int result[])
{
int i;
for (i = 0; i < MAX_SET_SIZE; i++) {
result[i] = set1[i] && !set2[i];
}
}
```
程序运行时,会先提示用户输入两个集合的元素,以空格分隔,按回车键结束。然后提示用户输入操作类型(交、并、差),按回车键结束。最后,程序会输出计算结果。
例如,如果用户输入:
```
请输入第一个集合的元素,以空格分隔,按回车键结束:
a b c d e f g
请输入第二个集合的元素,以空格分隔,按回车键结束:
b e g h i
请输入操作(交、并、差),按回车键结束:
差
```
程序将会输出:
```
差集为:a c d f
```
阅读全文