关于集合运算的问题
前面的都写出来了,不知道6.7怎么实现题目3:集合运算功能:实现两个集合的运算,集合的元素采用小写字母’a’~’z’的形式等。
基本要求:、并运算、补运算、子集判断、组合
1设计简单的菜单,能够进行系统功能选择。
2实现两组集合的录
程序代码:#include<stdio.h>
int main()
{
int i,n,sum=0;
printf("请输入工作天数:");
scanf("%d",&n);
for(i=1;i<=n;n=n-i++)
sum=sum+i*i;
printf("共奖励金币:%d\n",sum+n*i);
return 0;
}
#include <stdio.h>
#include <string.h>
#include<windows.h>
#include <math.h>
#include<stdlib.h>
char a[100],b[100],c[100];
int p,q,i,j,n;
char d[26],t;
void init(char *a);
void display(char *a);
void jiao(char *a,char *b,char *c);
void bing(char *a,char *b,char *c);
void cha(char *a,char *b,char *c);
void bu(char *a);
void jihejihe(char *a,char *b);
void yuansujihe(char *a);
void main()
{
int choice;
while (1)
{
printf("\n\n\n\n");
printf( "\t\t========================================");
printf("\n\n");
printf("\t\t 1:初始化 \n");
printf( "\t\t 2:显示 \n");
printf("\t\t 3:交 \n");
printf("\t\t 4:并 \n");
printf("\t\t 5:差 \n");
printf("\t\t 6:补 \n");
printf("\n");
printf("\t\t请选择;");
scanf("%d",&choice);
system("cls");
switch(choice)
{
case 1:
init(a);
break;
case 2:
display(a);
break;
case 3:
jiao(a,b,c);
break;
case 4:
bing(a,b,c);
break;
case 5:
cha(a,b,c);
break;
case 6:
bu(a);
break;
}
}
}
void init(char *a)//创建一个集合
{
printf("请输入集合中元素个数");
scanf("%d",&n);
getchar();
printf("请输入集合之中的元素");
for(i=0;i<n;i++)
scanf("%c",&a[i]);
for(i=0;i<n;i++)
printf("%c",a[i]);
printf("\n");
Sleep(8000);
system("cls");
}
void display(char *a)//输出一个集合
{
printf("请输入集合中元素个数");
scanf("%d",&n);
getchar();
printf("请输入集合之中的元素");
for(i=1;i<=n;i++)
scanf("%c",&a[i]);
printf("{");
for(i=1;i<=n;i++)
{
printf("%c",a[i]);
}
printf("}");
Sleep(8000);
system("cls");
}
void jiao(char *a,char *b,char *c)//求集合的交
{
int k;
k=1;
printf("请输入第一个集合中元素个数");
scanf("%d",&p);
getchar();
printf("请输入集合之中的元素");
for (i=1;i<=p;i++)
scanf("%c",&a[i]);
getchar();
printf("请输入第二个集合中元素个数");
scanf("%d",&q);
getchar();
printf("请输入集合之中的元素");
for (j=1;j<=q;j++)
scanf("%c",&b[j]);
printf("{");//求集合的交
for(i=1;i<=p;i++)
{
for (j=1;j<=q;j++)
if(a[i]==b[j])
{
printf("%c",a[i]);
}
}
printf("}");
Sleep(8000);
system("cls");
}
void bing(char *a,char *b,char *c)//求集合的并
{
printf("请输入第一个集合中元素个数");
scanf("%d",&p);
getchar();
printf("请输入集合之中的元素");
for (i=1;i<=p;i++)
scanf("%c",&a[i]);
getchar();
printf("请输入第二个集合中元素个数");
scanf("%d",&q);
getchar();
printf("请输入集合之中的元素");
for (j=1;j<=q;j++)
scanf("%c",&b[j]);
for(i=1;i<=p;i++)
{
for (j=1;j<=q;j++)
if(a[i]==b[j])
a[i]='0';
}
printf("{");
for(i=1;i<=p;i++)
if(a[i]!='0')
printf("%c",a[i]);
for(j=1;j<=q;j++)
printf("%c",b[i]);
printf("}");
Sleep(8000);
system("cls");
}
void cha(char *a,char *b,char *c)//求集合的差
{
printf("请输入第一个集合中元素个数");
scanf("%d",&p);
getchar();
printf("请输入集合之中的元素");
for (i=1;i<=p;i++)
scanf("%c",&a[i]);
getchar();
printf("请输入第二个集合中元素个数");
scanf("%d",&q);
getchar();
printf("请输入集合之中的元素");
for (j=1;j<=q;j++)
scanf("%c",&b[i]);
for(i=1;i<=p;i++)
{
for (j=1;j<=q;j++)
if(a[i]==b[j])
a[i]='0';
}
printf("{");
for(i=1;i<=p;i++)
if(a[i]!='0')
printf("%c",a[i]);
printf("}");
Sleep(8000);
system("cls");
}
void bu(char *a)//集合的补
{
printf("请输入集合中元素个数");
scanf("%d",&n);
getchar();
printf("请输入集合之中的元素");
for (i=1;i<=n;i++)
scanf("%c",&a[i]);
for(i=0;i<26;i++)
d[i]=i+97;
for(i=1;i<=n;i++)
for (j=0;j<26;j++)
{
if (a[i]==d[j])
d[j]='0';
}
printf("{");
for(j=0;j<26;j++)
if(d[j]!='0')
printf("%c",d[j]);
printf("}");
Sleep(8000);
system("cls");
}
入功能。3实现两组集合的交运算。
4实现两组集合的并运算。
5实现两组集合的补运算。
6实现两组集合的子集关系判断。
7实现两组集合的组合运算。
提示:设两组集合分别为A和B,则组合运算如 表示, ,该组合运算可以拆分为两步:1.先计算 ;2.再计算

