zcmerlin 2016-09-03 08:14 采纳率: 70%
浏览 1721
已采纳

C语言,两个非零整数数列求交集

题目要求分别输入两个 非零 整数 数列A,B,然后求AB的交集并输出。
要求先输入A数列元素的个数,在分别输入元素,B数列同理
如:
3
1 3 4
4
2 4 5 3
输出为
3 4

下面是我的代码,编译通过,但输入第二个数字时报错了,请问哪里出错了呢?

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int num1, array1[20], i;          //num1记数列A元素个数
    scanf_s("%d", &num1);          //输入元素个数
    for (i = 0; i < num1; i++)
    {
        scanf_s("%d", array1[i]);       //依次输入元素
        if (array1[i] == 0)                 //如果输入0,则显示error,并重新输入
        {
            i--;
            printf("ERROR\n");
        }
    }

    int num2, array2[20], j;             //B数列操作同A
    scanf_s("%d", &num2);
    for (j = 0; j < num2; j++)
    {
        scanf_s("%d", array2[j]);
        if (array2[j] == 0)
        {
            i--;
            printf("ERROR\n");
        }
    }

    int count[20], num = 0, n;         //count用来存储两数列的交集,n用来记录交集的个数
    for (i = 0; i < num1; i++)
    {
        for (j = 0; j < num2; j++)
        {
            if (array1[i] == array2[j])
            {
                count[num] = array1[i];       //两数列中元素相等时,赋值给count
                array1[i] = array2[j] = 0;
                num++;
            }
        }
    }
    n = num;                 //记录交集元素的个数

    for (num = 0; num < n; num++)
    {
        printf("%d ", count[num]);              //依次输出交集的元素
    }

    system("pause");
    return 0;
}
  • 写回答

4条回答 默认 最新

  • 编天码地 2016-09-03 08:24
    关注

    图片说明 改成 &array1[i]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?