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


     1 #include<stdio.h>
     2 
     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 }

     解法二

      1 #include <stdio.h>
      2 #define MAXN 20
      3 //去除数组中的重复值,返回去重后数组元素的个数
      4 int no_repeat(int a[], int n);
      5 //如果x在数组a中,返回1,否则返回0
      6 int if_in(int a[], int n, int x);
      7 int main(void)
      8 {
      9     int i, n1, a[MAXN], n2, b[MAXN], count;
     10 
     11     scanf("%d", &n1);
     12     for (i = 0; i < n1; i++)
     13     {
     14         scanf("%d", &a[i]);
     15     }
     16 
     17     scanf("%d", &n2);
     18     for (i = 0; i < n2; i++)
     19     {
     20         scanf("%d", &b[i]);
     21     }
     22 
     23     //去重后的长度
     24     n1 = no_repeat(a, n1);
     25     n2 = no_repeat(b, n2);
     26 
     27     count = 0;
     28     for (i = 0; i < n1; i++)
     29     {
     30         if (if_in(b, n2, a[i]) == 0)
     31         {
     32             count++;
     33             if (count == 1)
     34             {
     35                 printf("%d", a[i]);
     36             }
     37             else
     38             {
     39                 printf(" %d", a[i]);
     40             }
     41         }
     42     }
     43 
     44     for (i = 0; i < n1; i++)
     45     {
     46         if (if_in(a, n1, b[i]) == 0)
     47         {
     48             count++;
     49             if (count == 1)
     50             {
     51                 printf("%d", b[i]);
     52             }
     53             else
     54             {
     55                 printf(" %d", b[i]);
     56             }
     57         }
     58     }
     59     printf("
    ");
     60 
     61     getchar();
     62     getchar();
     63     return 0;
     64 }
     65 int no_repeat(int a[], int n)
     66 {
     67     int i, j, k, len;
     68 
     69     len = n;
     70     for (i = n - 1; i > 0; i--)
     71     {
     72         for (j = 0; j < i; j++)
     73         {
     74             if (a[i] == a[j])
     75             {
     76                 len--;
     77                 for (k = i; k < len; k++)
     78                 {
     79                     a[k] = a[k + 1];
     80                 }
     81                 break;
     82             }
     83         }
     84     }
     85 
     86     return len;
     87 }
     88 int if_in(int a[], int n, int x)
     89 {
     90     int i, result;
     91 
     92     result = 0;
     93     for (i = 0; i < n; i++)
     94     {
     95         if (a[i] == x)
     96         {
     97             result = 1;
     98             break;
     99         }
    100     }
    101 
    102     return result;
    103 }
  • 相关阅读:
    Processing编程【2】
    哈工大锐捷网络处理问题
    processing编程【1】
    verilog入门知识【2】
    数字电路与逻辑设计知识清单【一】
    四位密码锁*电子密码锁的设计
    verilog入门知识【1】
    【Android】入门的一些知识。
    Andriod 入门
    关于Hibernate和Strtus2的xml提示问题
  • 原文地址:https://www.cnblogs.com/2018jason/p/11970460.html
Copyright © 2020-2023  润新知