c语言题目急求大神指点

题目是输入两个集合A,B(小于10000个数),求交集(即既属于A又属于B),输入形式是第一行是A第二行是B,元素中间有空格,,每一行末尾输入-1代表结束,每个集合元素不... 题目是输入两个集合A,B(小于10000个数),求交集(即既属于A又属于B),输入形式是第一行是A第二行是B,元素中间有空格,,每一行末尾输入-1代表结束,每个集合元素不超过10000个,不含重复元素,元素值不大于200000,从小到大输出A,B的交集。请问我的代码哪里有问题呢?求大神指点啊

#include<stdio.h>
#include<stdlib.h>
int a[10000],b[10000],d[10000];
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
int main()
{
char c;
int i,j,k,i1,k1,l,l1,l2,l3;

for(i=0;(c=getchar())!='-1';i++)
{
a[i]=c;
}
for(k=0;(c=getchar())!='-1';k++)
{
b[k]=c;
}
for(l=0,l2=0;l<=(i<k?k:i);l++)
{
for(l1=0;l1<=(i<k?i:k);l1++)
{
if(a[l]==b[l1])
{
d[l2]=a[l];
l2++;
}
}
}
for(l3=0;l3<=l2;l3++)
{
qsort(d,10000,sizeof(d[0]),cmp);
}
for(l3=0;l3<=l2;l3++)
{
printf("%d",d[l3]);
}
return 0;
}
展开
 我来答
porker2008
推荐于2016-05-19 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
#include<stdio.h>
#include<stdlib.h>
int a[10000], b[10000], d[10000];
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
int c;
int i, j, k, i1, k1, l, l1, l2, l3;

for (i = 0; scanf("%d", &c), c != -1; i++) {
a[i] = c;
}
for (k = 0; scanf("%d", &c), c != -1; k++) {
b[k] = c;
}
for (l = 0, l2 = 0; l < i; l++) {
for (l1 = 0; l1 < k; l1++) {
if (a[l] == b[l1]) {
d[l2] = a[l];
l2++;
}
}
}
qsort(d, l2 , sizeof(d[0]), cmp);
for (l3 = 0; l3 < l2; l3++) {
printf("%d ", d[l3]);
}
return 0;
}
追问
请问如果是求属于A不属于B的集合呢,我把17到24行部分改成了
for (l = 0, l2 = 0; l < i; l++) {
for (l1 = 0,m=0; l1 < k; l1++){
if (a[l] != b[l1]) continue;
m++;}

if(m=0){
d[l2] = a[l];
l2++;}
}
于是又不输出了。。。
追答
if(m == 0) 少了个等号
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式