当前位置: 代码迷 >> 综合 >> 离散数学(实验一),集合的交,并,差运算
  详细解决方案

离散数学(实验一),集合的交,并,差运算

热度:110   发布时间:2023-11-25 10:31:25.0

 

#include  <stdio.h>
#include <windows.h>
int input(int d[],int n)   //numa=input(A,0);   numb=input(B,0);
{int i;//n=0;do{scanf("%d",d+n);n+=1;}while(d[n-1]>=0);   //限制集合中的数为正整数d[n-1]='\0';return n-1;
}
void sort(int d[],int *n)  //   sort(C,&n);  并集
{int i,j,t,k;for(i=0;i<*n-1;i++){for(j=*n-1;j>i;j--){   if(d[j]==d[j-1]) //并集时两个数相等时,将重复的数覆盖{*n-=1;for(k=j;k<*n;k++)d[k]=d[k+1];}if(d[j]<d[j-1]){t=d[j];d[j]=d[j-1];d[j-1]=t;}}}
}
int fn(int d1[],int num1,int d2[],int num2)
{                                  // fn(A,numa,B,numb);int i,j,m;for(i=0;i<num1;i++){m=0;   //假设m等于0的时候就成立for(j=0;j<num2;j++){if(d1[i]==d2[j]){m=1;break;}}if(m==0)printf("%d,",d1[i]);}
}int main()
{SetConsoleTitle("集合的并交差运算");system("mode con cols=60 lines=20");printf("\n************离散数学,实验报告《一》************\n\n");printf("姓名: 123  ******************** 学号: 20201312087\n\n");printf("温馨提示:以下在输入集合时,当遇到负数时就自动跳出循环,\n进入下一步输入.\n\n");int A[100],B[100],C[200];int numa,numb,n;int i,j;int chioce;//输入printf("请输入集合A:  ");numa=input(A,0);sort(A,&numa);printf("请输入集合B:  ");numb=input(B,0);sort(B,&numb);printf("*********************\n");printf("输入‘1’表示交集\n");printf("输入‘2’表示并集\n");printf("输入‘3’表示差集\n");printf("*********************\n");printf("请选择:");while(1){scanf("%d",&chioce);switch (chioce){case 1://交集printf("\n\n集合交集A ∩ B={");for(i=0;i<numa;i++)      //外层循环行{for(j=0;j<numb;j++)  //内层控制列{if(A[i]==B[j]){printf("%d,",A[i]);}}}printf("\b}\n\n");break;case 2://并集n=numa+numb;printf("集合并集A∪B={");for(i=0;i<numa;i++){C[i]=A[i];}for(i=numa;i<n;i++){C[i]=B[i-numa];}sort(C,&n);for(i=0;i<n;i++)printf("%d,",C[i]);printf("\b}\n\n");break;case 3://集合差printf("集合的差集A-B={");fn(A,numa,B,numb);printf("\b}\n\n");break;default:printf("只能输入1~3之间的整数\n");}
}}


  相关解决方案