#include <stdio.h>
#include <stdlib.h>
int in_a();
int in_b();
int jiao_a_b();
int bing_a_b();
int cha_a_b();
// 定义全局变量
int input_a[99] = {0};
int input_b[99] = {0};
// 集合A、B的元素下标
int i = 0;
int m = 0;
int main()
{
int n = 1; // 退出菜单的标记
while (n)
{
int s;
printf("====欢迎使用集合系统====\n");
printf("++输入对应数字指令实现相应功能++\n");
printf("********1---输入集合A和B********\n");
printf("********2---求集合A交B********\n");
printf("********3---求集合A并B********\n");
printf("********4---求集合A差B********\n");
printf("********5---输出集合A、B******\n");
printf("*****输入一个负数退出程序~*****\n");
printf("请输入指令:\n");
scanf("%d", &s);
switch (s)
{
case 1:
system("cls");
printf("输入集合A和B\n");
in_a();
in_b();
break;
case 2:
system("cls");
printf("求集合A交B\n");
jiao_a_b();
printf("\n");
break;
case 3:
system("cls");
printf("求集合A并B\n");
bing_a_b();
printf("\n");
break;
case 4:
system("cls");
printf("求集合A差B\n");
cha_a_b();
printf("\n");
break;
case 5:
system("cls");
printf("输出集合A、B\n");
// 输出集合A
printf("集合A:");
for (int k = 0; k < i; k++)
{
printf("%d ", input_a[k]);
}
printf("\n");
// 输出集合B
printf("集合B:");
for (int k = 0; k < m; k++)
{
printf("%d ", input_b[k]);
}
printf("\n");
break;
default:
system("cls");
if (s < 0)
{
n = 0;
printf("程序退出成功,欢迎下次使用~~\n");
}
else
{
printf("您输入的指令有误,请重新输入~\n");
}
}
}
return 0;
}
// 1. 输入集合a函数
int in_a()
{
int num;
// 集合a的输入
printf("请输入集合a,以负数为结束的记号结束输入\n");
while (scanf("%d", &num) > 0 && getchar() != '\n')
{
i++;
if (i == 1)
input_a[i - 1] = num;
else
{
for (int y = 0; y <= i - 2; y++)
{
// 判断输入的数和前面的是否相等
if (num != input_a[y])
{
input_a[i - 1] = num;
}
else
{
printf("你输入的集合a含重复的元素,请重新输入集合a~\n");
i = 0;
in_a();
}
}
}
}
}
// 2. 输入集合b函数
int in_b()
{
int num;
// 集合b的输入
printf("请输入集合b,以负数为结束的记号结束输入\n");
while (scanf("%d", &num) > 0 && getchar() != '\n')
{
m++;
if (m == 1)
input_b[m - 1] = num;
else
{
for (int y = 0; y <= m - 2; y++)
{
if (num != input_b[y])
{
input_b[m - 1] = num;
}
else
{
printf("你输入的集合b含重复的元素,请重新输入集合b~\n");
m = 0;
in_b();
}
}
}
}
}
// 3. 交函数
int jiao_a_b()
{
printf("集合A交B为:");
for (int k = 0; k < i; k++)
{
for (int j = 0; j < m; j++)
{
if (input_a[k] == input_b[j])
{
printf("%d ", input_a[k]);
}
}
}
printf("\n");
}
// 4. 并函数
int bing_a_b()
{
int t = 0;
printf("集合A并B为:");
for (int k = 0; k < i; k++)
{
printf("%d ", input_a[k]);
}
for (int j = 0; j < m; j++)
{
for (int k = 0; k < i; k++)
{
if (input_b[j] != input_a[k])
{
t++;
}
}
if (t == i)
printf("%d ", input_b[j]);
t = 0;
}
printf("\n");
}
// 5. 差函数
int cha_a_b()
{
int t = 0;
printf("集合A差B为:");
for (int k = 0; k < i; k++)
{
for (int j = 0; j < m; j++)
{
if (input_a[k] != input_b[j])
t++;
}
if (t == m)
printf("%d ", input_a[k]);
t = 0;
}
printf("\n");
}
C语言集合系统求交集并集差集等
最新推荐文章于 2024-08-05 10:31:48 发布