你今天学C了吗 发表于 2020-5-23 19:52:54

集合AB的交集

求集合A和集合B的交集,即所有同时在集合A和集合B中的元素。已知数组a存放集合A的元素,共10个整数:

{1,3,5,7,9,11,13,15,17,19}

编程完成: 输入整数k(1<=k<=10),表示集合B元素的个数;输入集合B的各元素,集合元素各不相同;求集合A和集合B的交集C,输出交集C中的各个元素。

输入格式:
第一行输入k

第二行输入B集合的元素(整数),数之间用空隔分开

输出格式:
交集C中的元素,每个元素后有1个空格

输入样例:
10
1 2 3 4 5 6 7 8 9 10
输出样例:
1 3 5 7 9

请问这个程序应该怎么写?下面这个程序为什么啥都输出不了?
#include<stdio.h>
#include<math.h>
int main()
{
      int a={1,3,5,7,9,11,13,15,17,19},b[]={0},k,c[]={0},i,t;
      scanf("%d",&k);
      for(i=1;i<=k;i++)
                scanf("%d",&b);
      if(a==b)
                c=a;
      printf("%d",c);
      return 0;
}

wp231957 发表于 2020-5-23 20:02:26

连循环都不用???

你今天学C了吗 发表于 2020-5-23 20:04:36

wp231957 发表于 2020-5-23 20:02
连循环都不用???

在printf之前吗

赚小钱 发表于 2020-5-23 20:18:04

初学者,就不要省略大括号了,好不好。

永恒的蓝色梦想 发表于 2020-5-23 20:57:48

赚小钱 发表于 2020-5-23 20:18
初学者,就不要省略大括号了,好不好。

强烈同意

冰清玉洁丸 发表于 2020-5-24 08:29:24

你没有大括号呀
for (;;)
{
    //应该这样写
}

if ()
{
    //也是这样写
}

java2python 发表于 2020-5-24 16:35:36

首先为了加快测试节奏
for(i=1;i<=k;i++)
    scanf("%d",&b);
第一步奏:以上代码,一开始,也和a一样,int b={1,2,3,4,5,6,7,8,9,10};赋值
然后求集合A和集合B的交集C,输出交集C中的各个元素。
这一步对了,再把b={}的固定值设定,改成可以手动输入。

这个交集很麻烦,有java的hashmap就好了,因为他要先排序a,b,然后a,b一个一个比较。
或者是全比较,但也有问题,如果a={3,3,3,3,3,3,3,3,3,3},b={3,3,3,3,3,3,3,3},使用
for(int i=0;i<10;i++) for(int j=0;j<10;j++) if(a==b) c = a;
就会向C加100个数。

#include<stdio.h>
#include<math.h>
int main()
{
    int a={1,3,5,7,9,11,13,15,17,19};
    int b[]={1,2,3,4,5,6,7,8,9,10};
    int c;
    int c_ptr=0;
    for(int i=0;i<10;i++) for(int j=0;j<10;j++) if(a==b) c = a;

    for(int i=0;i<c_ptr;i++) printf("c[%d]=%d\n",i,c);
    system("pause");
    return 0;
}
页: [1]
查看完整版本: 集合AB的交集