练习7-4 找出不是两个数组共有的元素

 1 #include<stdio.h>
 2 
 3 int max(int a, int b);
 4 int array_in(int x, int a[], int n);
 5 
 6 int main(void)
 7 {
 8     int m, n, k;        //三个数组的大小
 9     
10     /*第一个数组,数组长度是变量,C99支持,但vs不支持*/ 
11     scanf("%d", &m);
12     int a[m];
13     for (int i = 0; i < m; i++)
14     {
15         scanf("%d", &a[i]);
16     }
17     
18     /*第二个数组*/ 
19     scanf("%d", &n);
20     int b[n];
21     for (int i = 0; i < n; i++)
22     {
23         scanf("%d", &b[i]);
24     }
25     
26     /*第三个数组,有可能两个数组中的元素都不相同*/ 
27     int c[m + n];
28     
29     int count = 0;        //两个数组中不相同元素的个数 
30     
31     /*查找到不相同的元素,放到第三个数组中*/ 
32     for (int i = 0; i < m; i++)
33     {
34         if (array_in(a[i], b, n) == 0 && array_in(a[i], c, count) == 0)        //避免第一个数组中有多个相同的元素在第二数组中不存在的情况 
35         {
36             c[count] = a[i];
37             count++;
38         }        
39     }
40     for (int i = 0; i < n; i++)
41     {
42         if (array_in(b[i], a, m) == 0 && array_in(b[i], c, count) == 0)
43         {
44             c[count] = b[i];
45             count++;
46         }        
47     }
48     
49     for(int i = 0; i < count; i++)
50     {
51         if (i == 0)
52         {
53             printf("%d", c[i]);
54         }
55         else
56         {
57             printf(" %d", c[i]);
58         }
59     }
60     
61     return 0;    
62 }
63 
64 /*
65     判断x是否在数组a中;
66     如果在,返回1;不在,返回0;
67     n是查找数组a中元素的长度; 
68 */
69 int array_in(int x, int a[], int n)
70 {
71     int ret = 0;
72     
73     for (int i = 0; i < n; i++)
74     {
75         if (x == a[i])
76         {
77             ret = 1;
78             break;
79         }
80     }
81     
82     return ret;    
83 }

猜你喜欢

转载自www.cnblogs.com/2018jason/p/11970460.html
今日推荐