数组 求并集问题 新人求教

求两组整数的并集
最后以从大到小顺序输出将第一组和第二组整数合并(在两组整数中都出现的整数只出现一次)

帮忙看看 哪里出错 感激不尽

#include<string.h>
int main()
{
    char a[20],b[20];
    char c[20];
    int i,j,t;
    for(i=0;i<20;i++)
    scanf("%d",&a[i]);
    for(j=0;j<20;j++)
    scanf("%d",&b[j]);
    for(i=0;i<20;i++)
        {for(j=0;j<20;j++)
        if(a[i]!=b[j]&&a[i]>0)
            strcpy(c,a);
    }
for(j=0;j<20;j++)
        {for(i=0;i<20;i++)
        if(b[j]!=a[i]&&b[j]>0)
            strcpy(c,b);
    }
for(i=0;i<20;i++)
    {for(j=1;j<19;j++)
    if(c[j]<c[i])
        {t=c[j];
       c[j]=c[i];
       c[i]=t;}
}
c[i]='\0';
puts(c);
}


for循环属实是看不懂
for(循环变量赋初值;循环条件 ;循环变量增值 )
{

}

for(i=0;i {for(j=0;j for(j=0;j {for(i=0;i 都是什么玩意,用工具栏上的“代码片”格式化好了再提问!!!

或者你可以直接参考我之前的回答

https://ask.csdn.net/questions/237898

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

void arrunion(int a[], int b[], int r[], int an, int bn, int * n)
{
    *n = an;
    memcpy(r, a, an * sizeof(int));
    for (int i = 0; i < bn; i++)
    {
        bool f = true;
        for (int j = 0; j < an; j++)
        {
            if (r[j] == b[i]) { f = false; break; }
        }
        if (f) { r[*n] = b[i]; *n = *n + 1; }
    }
}

int main()
{
    int a[20],b[20];
    int c[40];
    int i,j,t;
    for(i=0;i<20;i++)
        scanf("%d",&a[i]);
    for(j=0;j<20;j++)
        scanf("%d",&b[j]);
    int n = 0;
    arrunion(a, b, c, 20, 20, &n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-1;j++)
            if(c[j]<c[j+1])
            {
                t=c[j];
                c[j]=c[j+1];
                c[j+1]=t;
            }
    }
    for (int i = 0; i < n; i++)
        printf("%d ", c[i]);
    return 0;
} 

原来代码太乱,我给你写个标准库的,放心用

#include "pch.h"
#include <set>
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;

int main(void)
{
    int i = 0;
    set<int> s1;
    set<int> s2;
    const int COUNT = 20;   
    for (i = 0; i < COUNT; i++)
    {
        cout << "input first array[" << i << "]=" << endl;
        int nTmp = 0;
        cin >> nTmp;
        s1.insert(nTmp);
    }
    for (i = 0; i < COUNT; i++)
    {
        cout << "input second array[" << i << "]=" << endl;
        int nTmp = 0;
        cin >> nTmp;
        s2.insert(nTmp);
    }
    vector<int> ANS;
    set_union(s1.begin(), s1.end(), s2.begin(), s2.end(), inserter(ANS, ANS.begin()));
    for (auto it : ANS)
        cout << it << endl;
    return 0;
}

代码写的够乱的,给你改了一下看看吧:

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

int main()
{
    int a[20], b[20];
    int c[40];
    int i, j, t = 0;
    for (i = 0; i<20; i++) scanf("%d", &a[i]);
    for (j = 0; j<20; j++)  scanf("%d", &b[j]);

    memcpy(c, a, sizeof(a));
    memcpy(c + 20, b, sizeof(b));

    for (j = 0; j < 40; j++)
    for (i = 0; i<40 - j - 1; i++)
    if (c[i]>c[i + 1])
    {
        t = c[i]; c[i] = c[i + 1]; c[i + 1] = t;
    }
    for (i = 0; i < 40; i++)
        printf("%d", c[i]);
    printf("\n");
}

int main()
{
char a[20],b[20],c[20];

int i,j,t;
printf("请输入2个字符串:\n");
gets(a);
gets(b);
strcat(a,b);
for(i=0;i<strlen(a);i++)
{
for(j=i+1;j<strlen(a);j++)
{
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
puts(a);

}