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 012 }

 

 

 




posted @ 2020-04-25 17:24  noobcoderMelody  阅读(1423)  评论(0编辑  收藏  举报