找出不是两个数组共有的元素
生活随笔
收集整理的這篇文章主要介紹了
找出不是两个数组共有的元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
練習7-4 找出不是兩個數組共有的元素 (20 分)
給定兩個整型數組,本題要求找出不是兩者共有的元素。
輸入格式:
輸入分別在兩行中給出兩個整型數組,每行先給出正整數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
分析
有兩個條件,1.按照數字給出的順序輸出不是兩數組共有的元素,2.同一數字不重復輸出。
不改變原始順序的去重:刪去一個重復元素后,修改整個大循環的限定條件。
通常來說for循環的條件表達式是一個固定的數,但這里它根據需要進行了調整。
代碼
#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){//查第一個數組有,第二個數組無的元素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){//查第二個數組有,第一個數組無的元素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){//數組去重,不改變原始順序,并更新數組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;//重復的去掉,因此數組長度減一}}}for(i=0;i<k;++i){if(i==0)printf("%d",c[i]);elseprintf(" %d",c[i]);} }總結
以上是生活随笔為你收集整理的找出不是两个数组共有的元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java反射 Constructor类
- 下一篇: java 多个 panel_java