weixin_44764457
wei xin_44706101
2019-03-29 10:01
采纳率: 86.7%
浏览 833

数组 求并集问题 新人求教

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

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

#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);
}


  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • Moon_X_code
    _MoonX_ 2019-03-29 10:12
    已采纳

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

    }

    点赞 评论
  • caozhy

    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;
    } 
    
    点赞 评论
  • DRACULAX05
    DRACULAX05 2019-03-29 10:33

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

    #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;
    }
    
    点赞 评论
  • phenix2009
    白色一大坨 2019-03-29 10:39

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

    #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");
    }
    
    点赞 评论
  • mym2018
    mym2018 2019-03-29 11:01

    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);

    }

    点赞 评论

相关推荐