C语言关于数组求并集的

如题所述

第1个回答  2016-05-14
#include <stdio.h>
int main(void)
{
int a[5],b[5],c[10],j = 0,k = 0,flag ;
int i;
for(i = 0; i < 5; i++)
scanf("%d",&a[i]);
for(i = 0; i < 5; i++)
scanf("%d",&b[i]);
for(i = 0; i < 5 ; i++)
c[k++] = a[i];
for(i = 0; i < 5; i++)
{
flag = 1;
for(j = 0; j < k ;j++)
if(b[i] == a[j])
{
flag = 0;
break;
}
if(flag)
c[k++] = b[i];
}
for(i = 0; i < k ; i++)
printf("%d ",c[i]);
printf("\n");
return 0;
}

追答

追问

你好厉害

不过有的我看不懂

我这样有什么错误吗?

追答

你的结果怎么样呢,我感觉是对的呀

追问

结果是乱码

不是乱码

是这个

本来应该只输出一个1的,现在有5个1,

追答

知道你的错误了,你把这两句话用大括号括起来
{
k = a[i];
printf("%d ",k);
}

追问

不能加大括号吗?

追答

加大括号,感觉你没懂我的意思这样
if(a[i] != c && a[i] != d&&a[i] != e&&a[i] != f&&a[i] != g)
{
k = a[i];
printf("%d ",k);
}

就是if后面加大括号,你没加

懂了没?

追问

追答

没懂私信问我

追问

这样是对了嘛?

追答

对啊

你看这个就是并集啊,没有重复的

追问

就是数与数之间没有空格了

追答

printf("%d ",b[j]);输出加一个空格在%d后面

还有那个k输出同理

追问

谢谢啦

追答

不谢

本回答被提问者采纳
第2个回答  2016-05-14
#include <stdio.h>

int main(void)
{
    int arr1[5],arr2[5],array[10]={0};
    int i,j;
    scanf("%d %d %d %d %d",&arr1[0],&arr1[1],&arr1[2],&arr1[3],&arr1[4]);
    scanf("%d %d %d %d %d",&arr2[0],&arr2[1],&arr2[2],&arr2[3],&arr2[4]);
    for(i=0;i<5;i++)
    {
        array[i]=arr1[i];
    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            if(arr2[i]==arr1[j])
                break;
            if(j==4)
                array[i+5]=arr2[i];
        }

    }

    for(i=0;i<10;i++)
    {
        if(array[i]!=0)
            printf("%d ",array[i]);
    }
    return 0;
}

相似回答