关于集合运算的问题
前面的都写出来了,不知道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.再计算