C语言很简单的一道问题,新手急求

【问题描述】两个集合的差集定义如下:集合A、B的差集,由所有属于A但不属于B的元素构成。输入两个集合A、B,每个集合中元素都是自然数。求集合A、B的差集。【输入形式】从标... 【问题描述】两个集合的差集定义如下:
集合A、B的差集,由所有属于A但不属于B的元素构成。
输入两个集合A、B,每个集合中元素都是自然数。求集合A、B的差集。
【输入形式】
从标准输入接收集合中的自然数元素,以空格分隔。-1表示输入结束。
其中,每个集合都不输入重复的元素。
【输出形式】
输出差运算后集合中的元素,以空格分隔。输出元素的顺序与原有集合A输入的顺序一致。
如果A、B的差集为空集,则不输出任何数值。
【样例输入】
2 8 3 4 -1
6 1 4 9 -1
【样例输出】
2 8 3
#include <stdio.h>
int main()
{
int a[100],b[100],c[100],i,j,m,n,k;
k=0;
for(i=0;;i++){
scanf("%d",&a[i]);
if(a[i]==-1)
m=i;
break;
}
for(j=0;;j++){
scanf("%d",&b[j]);
if(b[j]==-1)
n=j;
break;
}
for(i=0;i<=m;i++){
for(j=0;j<=n;j++){
if(a[i]==a[j]){
c[k]=a[i];
k=k+1;
}
}
}
for(k=0;;k++)
printf("%d ",a[k]);
printf("\n");
return 0;
}

求具体解法或帮我看下错在哪里
展开
 我来答
Trinco
2011-11-12 · TA获得超过142个赞
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:155万
展开全部
#include <stdio.h>

int main()
{
int a[100],b[100],c[100],x;
int ia=0,ib=0,ic=0;
do
{
scanf("%d",&x);
a[ia]=x;
ia++;
}while(x!=-1);
ia--;
do
{
scanf("%d",&x);
b[ib]=x;
ib++;
}while(x!=-1);
ib--;

for(int i=0;i<ib;i++)
{
for(int j=0;j<ia;j++)
{
if(a[i]==b[j])
break;
}
if(j==ia)
{
c[ic]=a[i];
ic++;
}
}

for(int k=0;k<ic;k++)
printf("%d ",c[k]);
printf("\n");
return 0;
}
乌托邦之神
2011-11-12 · TA获得超过163个赞
知道答主
回答量:197
采纳率:0%
帮助的人:66.1万
展开全部
你的逻辑有问题,这哪里是求差集明明是求的交集,第三个循环很明显逻辑错误。
整个程序一团糟,break语句要放到if的花括号里面,第三个循环中数组写错了,
最后也不是输出a数组呀,输出c才对的。
追问
谢谢,豁然开朗。。但改了一会老是出错,能具体帮忙修改一下吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zengfa688
2011-11-12 · TA获得超过332个赞
知道小有建树答主
回答量:522
采纳率:50%
帮助的人:199万
展开全部
定义一维数组,利用循环语句一个一个判断
追问
求具体解法或帮我看下错在哪里。谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吹瞳亦淡04
2011-11-12
知道答主
回答量:20
采纳率:0%
帮助的人:20.6万
展开全部
c数组中存的是a和b的交集
追问
谢谢。能具体帮忙修改一下吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式