找出不是两个数组共有的元素
生活随笔
收集整理的這篇文章主要介紹了
找出不是两个数组共有的元素
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目
練習(xí)7-4 找出不是兩個數(shù)組共有的元素 (20 分)
給定兩個整型數(shù)組,本題要求找出不是兩者共有的元素。
輸入格式:
輸入分別在兩行中給出兩個整型數(shù)組,每行先給出正整數(shù)N(≤20),隨后是N個整數(shù),其間以空格分隔。
輸出格式:
在一行中按照數(shù)字給出的順序輸出不是兩數(shù)組共有的元素,數(shù)字間以空格分隔,但行末不得有多余的空格。題目保證至少存在一個這樣的數(shù)字。同一數(shù)字不重復(fù)輸出。
輸入樣例:
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
分析
有兩個條件,1.按照數(shù)字給出的順序輸出不是兩數(shù)組共有的元素,2.同一數(shù)字不重復(fù)輸出。
不改變原始順序的去重:刪去一個重復(fù)元素后,修改整個大循環(huán)的限定條件。
通常來說for循環(huán)的條件表達式是一個固定的數(shù),但這里它根據(jù)需要進行了調(diào)整。
代碼
#include<stdio.h>int main(){int n,m,i,j,a[21],b[21],c[50],k=0;scanf("%d",&n);for(i=0;i<n;++i){scanf("%d",&a[i]);}scanf("%d",&m);for(i=0;i<m;++i){scanf("%d",&b[i]);}for(i=0;i<n;++i){//查第一個數(shù)組有,第二個數(shù)組無的元素for(j=0;j<m;++j){if(a[i]==b[j]) break;}if(j==m){c[k]=a[i];k++;}}for(i=0;i<m;++i){//查第二個數(shù)組有,第一個數(shù)組無的元素for(j=0;j<n;++j){if(a[j]==b[i]) break;}if(j==n){c[k]=b[i];k++;}}int l;for(i=0;i<k;++i){//數(shù)組去重,不改變原始順序,并更新數(shù)組for(j=i+1;j<k;++j){if(c[i]==c[j]){for(l=j+1;l<k;++l){c[l-1]=c[l];}k=k-1;//重復(fù)的去掉,因此數(shù)組長度減一}}}for(i=0;i<k;++i){if(i==0)printf("%d",c[i]);elseprintf(" %d",c[i]);} }總結(jié)
以上是生活随笔為你收集整理的找出不是两个数组共有的元素的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java反射 Constructor类
- 下一篇: Linux bash卸载软件,Ubunt