给定两个整型数组,本题要求找出不是两者共有的元素。

输入格式:

输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。

输出格式:

在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。

输入样例:

10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1

输出样例:

3 5 -15 6 4 1

>_code

#include <stdio.h>
#define N 20
int main(int argc, char const *argv[])
{
    int i,j,k=0,l=0;
    int n1,num1[N] = {0};
    int n2,num2[N] = {0};
    int num3[N] = {0};
    scanf("%d",&n1);
    for(i = 0; i < n1; i++)
        scanf("%d",&num1[i]);
    scanf("%d",&n2);
    for(i = 0; i < n2; i++)
        scanf("%d",&num2[i]);  
    //数组1中不同于数组2的数字   
    for(i=0;i<n1;i++)
    {
        for(j=0;j<n2;j++)
        {
            if(num2[j] == num1[i])//共有,退出本轮
                break;
        }
        if(j == n2)//不共有
        {
            l=0;
            for(l;l<k;l++)
            {
                if(num3[l] == num1[i])//同一数字重复
                   break;
            }
            if(l == k)
                num3[k++] = num1[i];  
        }
    }
    //数组2中不同于数组1的数字   
    for(i=0;i<n2;i++)
    {
        for(j=0;j<n1;j++)
        {
            if(num1[j] == num2[i])//共有,退出次轮
                break;
        }
        if(j == n1)//不共有
        {
            for(l=0;l<k;l++)
            {
                if(num2[i] == num3[l])//同一数字重复
                    break;
            }
            if(l == k)
                num3[k++] = num2[i]; 
        }
    }
    for(i=0;i<k;i++)
    {
        printf("%d",num3[i]);
        if(i == k-1)
            break;
        else
            putchar(' ');
    } 
    return 0;
}
Last modification:2021 年 04 月 03 日 23 : 06 : 03