一个C程序

【问题描述】

从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素有可能重复)。合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序输出(即两组整数集“异或”),重复整数只输出一次。

【输入形式】

首先输入第一组整数的个数,然后在下一行输入第一组整数,以一个空格分隔各个整数;然后同样的方式输入第二组整数。

【输出形式】

先按从大到小顺序排序输出合并后的整数集(去掉在两组整数中都出现的整数,以一个空格分隔各个整数)。

【样例输入】

9
5 1 4 32 872 9 -6 32 872
10
1 5 2 87 10 1 9 5 1 10

【样例输出】

872 87 32 10 4 2 -6

【样例说明】

第一组整数9个,分别为5 1 4 32 872 9 -6 32 872,第二组整数10个,分别为1 5 2 87 10 1 9 5 1 10。将第一组和第二组整数合并(去掉在两组整数中都出现的整数5、1、9),并从大到小顺序排序后结果为-872 87 32 10 4 2 -6。重复的32、872、10只输出一次

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

int main()
{
    int i,j,j1=0,j2=0,k1=0,k2=0,tmp,flag=0;
    char a=0;
    
    int ii = 0;
    scanf("%d", &ii);
    int num1[ii];
    while(a!= '\n') {
        scanf("%d",&num1[j1++]);
        a= getchar();
    }
    a=0;
    
    int iii = 0;
    scanf("%d", &iii);
    int num2[ii];
    while(a != '\n'){
        scanf("%d", &num2[j2++]);
        a= getchar();
    }

    int num3[iii + ii], num4[iii + ii];
    for (i = 0; i <j1; i++) {
        for (j = 0; j<j2; j++) {
            if (num1[i] == num2[j]) {
                flag=1;
            }
        }
        if(flag){
            num3[k1++]=num1[i];

        }else{
            num4[k2++]=num1[i];

        }
        flag=0;
    }
    for (i = 0; i <j2; i++) {
        for (j = 0; j <j1; j++) {
            if (num2[i] == num1[j]) {
                flag=1;
            }
        }
        if(!flag){
            num4[k2++]=num2[i];

        }
        flag=0;
    }
    for (i = 0; i < (k2-1); i++) {
        for (j = i+1;j < k2; j++) {
            if (num4[i] > num4[j]) {
                tmp = num4[i];
                num4[i] = num4[j];
                num4[j] = tmp;
            }
        }
    }

    for (i = 0; i < (k2-1); i++) {
        for (j = i+1;j < k2; j++) {
            if (num4[i] < num4[j]) {
                tmp = num4[i];
                num4[i] = num4[j];
                num4[j] = tmp;
            }
        }
    }
    for (i = 0; i < k2 -1; i++) {
        if(num4[i] != num4[i+1]){
            printf("%d ", num4[i]);
        }
    }
    printf("%d ", num4[k2 -1]);
    printf ("\n");

    return 0;
}

好久不写C代码了,这次因为一个女孩的请求,马马虎虎地写了这样的代码。最后希望她称为我的女朋友啊!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值