当前位置:网站首页>PTA 找出不是两个数组共有的元素

PTA 找出不是两个数组共有的元素

2022-08-09 10:58:00 拾荒大妈

给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数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

思路:
两个整型数组分别为str1和str2,首先找出str1中不是两数组共有的元素,存入数组a中。然后找出str2中不是两数组共有的元素,存入数组a中。因题目要求同一数字不能重复输入,所以删除a中的重复元素,然后输出数组a。

#include<stdio.h>
#include<string.h>
int main()
{
    
    int m,n;
    scanf("%d",&m);
    int str1[m];
   int i=0,j;
    while(i<m)
        scanf("%d",&str1[i]),i++;
    scanf("%d",&n);
    int str2[n];
    i=0;
    while(i<n)
        scanf("%d",&str2[i]),i++;
    int a[1000];
    int b=0;
    for(i=0;i<m;i++)//找出str1中不是两组共有的元素,并存入数组a中
    {
    
        for(j=0;j<n;j++)
        {
    
            if(str1[i]==str2[j])
                break;
        }
        if(j==n)
            a[b]=str1[i],b++;
    }
    for(i=0;i<n;i++)//找出str2中不是两组共有的元素,并存入数组a中
    {
    
        for(j=0;j<m;j++)
        {
    
            if(str2[i]==str1[j])
                break;
        }
        if(j==m)
            a[b]=str2[i],b++;
    }
    for(i=0;i<b;i++)//如果a中有重复元素,则删除重复的后一个元素
        for(j=i+1;j<b;j++)
        {
        
            if(a[i]==a[j])
            {
     int s=j;
             while(s<b-1)
                a[s]=a[s+1],s++;
             b--;
            }
        }
        i=0;
            while(i<b-1)//输出数组
                printf("%d ",a[i]),i++;
            printf("%d",a[b-1]);
            return 0;
}
原网站

版权声明
本文为[拾荒大妈]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_46127986/article/details/108096636