📄 03081626_1.c
字号:
#include<stdio.h>
#define N 10
char E[N];
void IN(char *A,char *E,int *b)
{
int i,j;
for(i=0;i<strlen(E);i++) b[i]=0;
for(j=0;j<strlen(A);j++)
for(i=0;i<strlen(E);i++)
if(E[i]==A[j])
b[i]=1;
}
void print(int *a,char *b)//输出函数
{
int i;
printf(" {");
for(i=0;i<N;i++)
if(a[i]==1)
printf("%c ",b[i]);
printf("}");
printf("\n");
}
void cro(int *x,int *y,int z[N])//求交集,用z来储存所求得的交集
{
int i;
for(i=0;i<N;i++)
z[i]=0;
for(i=0;i<N;i++)
if(x[i]==1&&y[i]==1)
z[i]=1;
}
void inc(int *x,int *y,int z[N])//求并集,用z来储存所求得的并集
{
int i;
for(i=0;i<N;i++)
z[i]=0;
for(i=0;i<N;i++)
if(x[i]==1||y[i]==1)
z[i]=1;
}
void sub(int *x,int *y,int z[N])//求两集合相减
{
int i;
for(i=0;i<N;i++)
if(x[i]==1&&y[i]==0)
z[i]=1;
else z[i]=0;
}
void com(int *x,int *y)//求补集,用y来储存求得的补集
{
int i=0;
for(i;i<N;i++)
{
if(x[i]==0)
y[i]=1;
else
y[i]=0;
}
}
main()
{
int k=1;
char E[10],A[10],B[10],C[10];
int a[10],b[10],c[10];
int p1[10],p2[10],p3[10];
printf("输入全集:");
gets(E);
printf("输入子集A:");
gets(A);
printf("输入子集B:");gets (B);
printf("输入子集C:");gets(C);
IN(A,E,a);
IN(B,E,b);
IN(C,E,c);
printf(" A与B的补集的交集为:\n");
com(b,p1);cro(a,p1,p2 );
print(p2,E);
printf(" A与B的交集与C补集的并集为:\n");
cro(a,b,p1 );com(c,p2);inc(p1,p2,p3);
print(p3,E);
printf(" A与B交C的差集为:\n");
cro(b,c,p1);sub(a,p1,p2 );
print(p2,E);
printf(" A与B的对称差为:\n");
inc(a,b,p1);cro(a,b,p2);sub(p1,p2,p3);
print(p3,E);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -