c语言好难昂 发表于 2021-12-9 21:11:27

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

求集合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中的各个元素。
pta平台说我的答案部分正确,为什么?

#include<stdio.h>
#include<math.h>
int main()
{
    int a={1,3,5,7,9,11,13,15,17,19};
    int b,i,j,k;
    scanf("%d",&k);
      for(i=0;i<k;i++)
                scanf("%d",&b);
    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("%d ",c);
    system("pause");
    return 0;
}

傻眼貓咪 发表于 2021-12-9 21:50:40

#include <stdio.h>

int main()
{
    int A = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
    int B = {0}, C = {0}, k;
    scanf("%d", &k);
    for(size_t i = 0, n = 0; i < 10; i++){
      scanf("%d", &B);
      for(size_t j = 0; j < 10; j++){
            if(A == B) C = A;
      }
    }
    for(size_t i = 0; C; i++) printf("%d ", C);
    return 0;
}

傻眼貓咪 发表于 2021-12-9 21:55:20

另外一种解法:#include <stdio.h>

int main()
{
    int A = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
    int k, B = {0}, C = {0};
    scanf("%d", &k);
    for(size_t i = 0, n = 0; i < 10; i++){
      scanf("%d", &B);
      if(B%2 && B < 20) C = B;
    }
    for(size_t i = 0; C; i++) printf("%d ", C);
    return 0;
}
页: [1]
查看完整版本: 求集合A和集合B的交集,即所有同时在集合A和集合B中的元素。已知数组a存放集合A的...