C语言,求两个集合的并集

给定2个集合A和B,请你计算A和B 这2个集合的并集?

Input

输入数据有1组,第1行为n,代表集合A 的元素个数;第2行为集合A的这n个元素;第3行为m,代表集合B的元素个数;第4行为集合B的m个元素。

Output

输出共1行,为这2个集合的并。(注意:集合中的数字是有序的,升序),题目中所有数字都是大于0并且小于100的!

Sample Input

4
1 2 3 4

4

3 4 5 6

Sample Output

1 2 3 4 5 6

供参考:

#include<stdio.h>
#define N 20
int main()
{
    int a[N],b[N],c[2*N],m,n,i,j,k;

    scanf("%d",&m);
    for(i=0;i<m;i++) //输入第一组整数数据
        scanf("%d",&a[i]);

    scanf("%d", &n);
    for(i=0;i<n;i++) //输入第二组整数数据
        scanf("%d",&b[i]);
 
    i = 0; j = 0; k = 0;
    while(i < m && j < n)
    {
        if(a[i] > b[j])
           c[k++] = b[j++];
        else if(a[i] < b[j])
           c[k++] = a[i++];
        else{
           c[k++] = a[i++];
           j++;
        }
    }
    while(j < n) c[k++] = b[j++];
    while(i < m) c[k++] = a[i++];

    for(i=0;i<k;i++)
        printf("%4d",c[i]);
    return 0;
}


#include<stdlib.h>
#include<stdio.h>
int main()
{
    int a[100],b[100],c[200];
    int m, n,cnt=0;
    scanf("%d", &m);
    for (int i = 0; i < m; i++)
    {
        scanf("%d", &a[i]);
        c[i] = a[i];
    }
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &b[i]);
        c[m + i] = b[i];
    }
    for(int i=0;i<m+n-1;i++)
        for(int j=0;j<m+n-i-1;j++)
            if (c[j] > c[j + 1])
            {
                int temp;
                temp = c[j];
                c[j] = c[j + 1];
                c[j + 1] = temp;
            }
    
    for(int i=0;i<m+n-1-cnt;i++)
        for (int j = 0; j < m + n - i - 1-cnt; j++)
            if (c[i] == c[i + 1])
            {
                cnt++;
                for (int k = i; k < m + n; k++)
                    c[k] = c[k + 1];
            }
    for (int i = 0; i < m + n-cnt; i++)
        printf("%d\t", c[i]);
    return 0;
}