一道C语言题目

题目:1、实现算法:集合的交并差。2、集合A表示上课的学生,B为男生集合,C为女生集合,D为考试合格的同学。编程实现:输入集合ABCD(用两位学号表示)。求出:没来上课的... 题目:
1、 实现算法: 集合的交 并 差。
2、 集合A表示上课的学生,B为男生集合,C为女生集合,D为考试合格的同学。编程实现:
输入集合A B C D (用两位学号表示) 。
求出:没来上课的男生
考试不及格的女生。
没来上课且考试不及格的男生
求问我做的哪里有错误?
#include<stdio.h>

int FindUnion(int A[],int B[],int C[],int a,int b)
{
int i,flag=1,t=0,j;
for(i=0;i<b;i++)
{
C[i]=B[i];
}
for(i=0;i<a;i++)
{
flag=1;
for(j=0;j<b;j++)
{
if(A[i]==B[j])
{
flag=0;
break;
}

if(flag!=0)
{
C[b]=A[i];
b++;
}
}
}return b;

}
int FindDeference(int A[],int B[],int a,int b)
{
int i,j,t=1,m;
for(i=0;i<b;i++)
{
for(j=0;j<a;j++)
{
if(A[j]==B[i])
{
for(m=0;m<a-t;m++)
{
A[m]=A[m+1];
t++;
}
break;
}
}
}return a-t+1;
}
int FindIntersection(int A[],int B[],int C[],int a,int b)
{
int i,j,k=0,q;
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
if(A[i]==B[j])
{
C[k]=A[i];
k++;
break;
}
}
}return k;
}

int main()
{
int A[100],B[100],C[100],D[100],E[100]={0},F[100]={0},G[100]={0},H[100]={0};
int a=0,b=0,c=0,d=0,e,k,f,x,g,l,h;
printf("输入集合A的元素,输入负数表示输入结束:\n");
while(A[a]>0)
{
scanf("%d",&A[a]);
a++;
}
printf("输入集合B的元素:\n");
while(B[b]>0)
{
scanf("%d",&B[b]);
b++;
}
printf("输入集合C的元素:\n");
while(C[c]>0)
{
scanf("%d",&C[c]);
c++;
}
printf("输入集合D的元素:\n");
while(D[d]>0)
{
scanf("%d",&D[d]);
d++;
}
printf("没来上课的男生:\n");
e=FindDeference(B,A,E,b,a);
for(k=0;k<e;k++)
{
printf("%d ",E[k]);
}
printf("\n");
printf("考试不及格的女生:\n");
f=FindDeference(C,D,F,c,d);
for(x=0;x<f;x++)
{
printf("%d ",F[x]);
}
printf("\n");
printf("没来上课且考试不及格的男生:\n");
g=FindDeference(B,D,G,b,d);
h=FindIntersection(G,E,H,g,e);
for(l=0;l<h;l++)
{
printf("%d ",H[l]);
}
printf("\n");
return 0;
}
展开
 我来答
珈蓝运珧E
推荐于2016-09-08
知道答主
回答量:11
采纳率:0%
帮助的人:9.8万
展开全部

#include<stdio.h>

int main(){

int A[100]={0},B[100]={0},C[100]={0},D[100]={0};

int a,b,c,d,i,j,k,p,q;

printf("上课的学生\n");

for (a=0;;a++){

scanf("%d",&A[a]);

if (A[a]<0)

break; 

}

printf("男生集合\n");

for (b=0;;b++){

scanf("%d",&B[b]);

if (B[b]<0)

break; 

}

printf("女生集合\n");

for (c=0;;c++){

scanf("%d",&C[c]);

if (C[c]<0)

break; 

}

printf("及格的同学\n");

for (d=0;;d++){

scanf("%d",&D[d]);

if (D[d]<0)

break; 

}

printf("\n没来上课的男生:\n");

for (i=0;i<b;i++){

for (k=j=0;j<a;j++){

if (B[i]==D[j]) k=1;

}

if (k==0)

printf("%d ",B[i]);

}

printf("\n女生不及格的 :\n");

for (i=0;i<c;i++){

for (k=j=0;j<d;j++){

if (C[i]==D[j]) k=1;

}

if (k==0)

printf("%d ",B[i]);

}

printf("\n没来上课且不及格的男生 :\n");

for (i=0;i<b;i++){

for (k=j=0;j<a;j++){

if (B[i]==D[j]) k=1;

}

if (k==0){

for (p=q=0;p<d;p++){

if (B[i]==D[p]) q=1;

}

if (q==0)

printf("%d ",B[i]);

}

}

}

自己写的,参考

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式