C语言程序设计 求两组整数的异或集

C语言程序设计 求两组整数的异或集,第1张

C语言程序设计 求两组整数的异或集

【问题描述】

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

【输入形式】

首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上输入第二组整数,以一个空格分隔,行末有回车换行。

【输出形式】

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

【样例输入】

5 1 4 32 8 7 9 -6
5 2 87 10 1

【样例输出】

87 32 10 9 8 7 4 2 -6

【样例说明】

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

#include 
int main()
{
	int a[20] = { 0 };
	int b[20] = { 0 };
	int c[40] = { 0 };
	char ch = 0;
	int i = 0,j = 0;
    //赋值
	while (ch != 'n')
	{
		scanf("%d" ,&a[i++]);
		ch = getchar();
	}
	ch = 0;
	while (ch != 'n')
	{
		scanf("%d", &b[j++]);
		ch = getchar();
	}
    //两序列合并
    int count = 0,x;
    for(x = 0;x < i;x++)
    {
        c[count] = a[x];
        count++;
    }
    for(x = 0;x < j;x++)
    {
        c[count] = b[x];
        count++;
    }
    //冒泡排序
    for(i = 0;i < count;i++)
    {
        for(j = 0;j < count-1-i;j++)
        {
            if(c[j] < c[j+1])
            {
                int t = c[j];
                c[j] = c[j+1];
                c[j+1] = t;
            }
        }
    }
    //输出
    for(i = 0;i < count;i++)
    {
        if(c[i] == x)
            continue;
        if(c[i] == c[i+1] && i < count - 1)
        {
             x = c[i];
            continue;
        }
        printf("%d ",c[i]);
    }
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5097271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存