C语言数组实现交并差
这个是输入数组时会检查重复并让重新输入,以小于0的整数结束数组的输入
#include<stdio.h>
#define MAX 100
int main()
{
char A,B;
int i=0,j=0,k=0,num=0,num_D=0,NUM=0,nums=0;
int nums_01[MAX];//第一个数组
int nums_02[MAX];//第二个数组
int nums_03[MAX];//记录交集数组
int nums_04[MAX];//记录并集数组
bool Judge=true;//用来判断是否重复
printf("输入集合名:");
scanf("%c",&A);
printf("\n输入集合数字:");
scanf("%d",&nums_01[i]);
while(nums_01[i]>=0)
{
Judge=true;
for(nums=0;nums<i;nums++)//判断是否重复
{
if(nums_01[i]==nums_01[nums])
{
printf("输入有重复请重新输入!!!\n");
Judge=false;
break;
}
}
if(Judge)//重复就跳过重新输入
{
nums_04[k]=nums_01[i];
i++;
k++;
}
scanf("%d",&nums_01[i]);
}
printf("\n输入集合名:");
fflush(stdin);
scanf("%c",&B);
printf("\n输入集合数字:");
fflush(stdin);
scanf("%d",&nums_02[j]);
while(nums_02[j]>=0)
{
Judge=true;
for(nums=0;nums<j;nums++)//判断是否重复
{
if(nums_02[j]==nums_02[nums])
{
printf("输入有重复请重新输入!!!\n");
Judge=false;
break;
}
}
if(Judge)//重复就跳过重新输入
{
nums_04[k]=nums_02[j];//记录并集
for(num=0;num<=i;num++)//用来记录
{
if(nums_02[j]==nums_01[num])
{
nums_03[num_D]=nums_02[j];//记录交集
nums_01[num]=-1;//赋予-1,用来区分差集
num_D++;
k--;//因为重复所以自减覆盖这个数字来达到并集
break;
}
}
j++;
k++;
}
scanf("%d",&nums_02[j]);
}
printf("%c交%c:",A,B);
for(NUM=0;NUM<=num_D-1;NUM++)
{
printf("%d\t", nums_03[NUM]);
}
printf("\n%c交%c:",A,B);
for(NUM=0;NUM<k;NUM++)
{
printf("%d\t", nums_04[NUM]);
}
printf("\n%c-%c:",A,B);
for(num=0;num<i;num++)
{
if(nums_01[num]!=-1)
printf("%d\t", nums_01[num]);
}
return 0;
}