C语言拯救计划Day2-4之找出不是两个数组共有的元素
///这个题思路还挺巧妙的
///又学会一招,嘿嘿~
给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数N(≤),随后是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 #include <stdio.h> 2 #include <stdlib.h> 3 /** 4 思路: 5 先拿A数组去跟B数组比一遍 6 然后再反过来比一遍, 7 把不是共有的数放到C数组中, 8 最后消去数组C中相同的数输出, 9 这样输出的就不会存在同一个数了 10 */ 11 12 int main() 13 { 14 ///输入预处理 15 int m; 16 scanf("%d",&m); 17 int a[20],i; 18 for(i=0;i<m;i++) 19 scanf("%d",&a[i]); 20 int n; 21 scanf("%d",&n); 22 int b[20]; 23 for(i=0;i<n;i++) 24 scanf("%d",&b[i]); 25 int j; 26 int c[20],k; 27 k=0; 28 ///找出数组a在数组b中不存在的 29 for(i=0;i<m;i++)///遍历数组a中的每一个值 30 { 31 for(j=0;j<n;j++)///将其与b数组比较 32 { 33 if(a[i]==b[j])///如果相等就break 34 break; 35 } 36 if(j>=n)///如果将数组a的一个值与数组b中的每一个值比较后仍然没有相等的 37 ///说明数组a中的该值是b数组中不存在的 38 { 39 c[k]=a[i];///就将a数组的值赋值给另一个c数组保存 40 k++; 41 } 42 } 43 44 ///找出数组b在数组a中不存在的---方法同上 45 for(i=0;i<n;i++) 46 { 47 for(j=0;j<m;j++) 48 { 49 if(b[i]==a[j])///注意a,b数组的书写 50 break; 51 } 52 if(j>=m)//注意细节问题,n和m不要弄混 53 { 54 c[k]=b[i]; 55 k++; 56 } 57 } 58 printf("%d",c[0]);//先输出c数组的第一个元素,保证格式第一个数字不带空格 59 60 /// 61 for(i=1;i<k;i++)///从1到k遍历一遍 62 { 63 for(j=0;j<i;j++)///两两对比 64 { 65 if(c[i]==c[j])///判断C数组中是否有相同的数字 66 break;///如果有就Break掉 67 } 68 if(j>=i)///如果没有,就输出出来,即为最后的结果 69 printf(" %d",c[i]);///注意格式,前面有一个空格隔开 70 } 71 printf("\n");///最后别忘了输出回车哦 72 73 return 0; 74 }
最后输出保证格式正确还有一种方法:
1 f=0; 2 for(i=0;i<num;i++){ //排除相同的数值 3 for(j=0;j<i;j++) 4 if(c[i]==c[j]) break; 5 if(j==i){ 6 if(f!=0) printf(" "); 7 printf("%d",c[i]); 8 f++; 9 } 10 } 11 return 0; 12 }