返回列表 發帖

Difference of sets

使用一維數組來解決以下這個問題。
讀入兩組數,每組有5個數。讀完所有值後,
顯示第一個數組中沒有出現在第二個數組中的元素。

範例:
輸入
Enter 5 numbers for 1st array:
12
34
23
56
45

Enter 5 numbers for 2nd array:
34
56
12
78
56

Difference of sets is {23, 45}
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. void selection_sort(int arr[], int len) {//自訂函數由小而大排序
  4.     int i, j, temp;
  5.     for (i = 0; i < len - 1; i++)
  6.         for (j = i+1; j < len; j++)
  7.                 if (arr[i] > arr[j ]) {
  8.                 temp = arr[j];
  9.                 arr[j] = arr[i];
  10.                 arr[i] = temp;
  11.             }
  12. }
  13. int main() {
  14.     int arr1[5] ;
  15.     int arr2[5] ;
  16.     printf("Enter 5 numbers for 1st array:\n");
  17.     for(int i=0;i<5;i++)
  18.         scanf("%d",&arr1[i]);
  19.     selection_sort(arr1,5);//呼叫函數由小而大排序

  20.     printf("Enter 5 numbers for 2nd array:\n");
  21.     for(int i=0;i<5;i++)
  22.         scanf("%d",&arr2[i]);
  23.     selection_sort(arr2,5);//呼叫函數由小而大排序

  24.     int i=0;
  25.     int j=0;
  26.     int c = 0;//判斷是否為輸出時,前面要加上逗號
  27.     printf("The difference of sets is {");
  28.     while(i<5 && j<5){
  29.         if(arr1[i]==arr2[j]){//若比對相同,兩個指針同步移1位
  30.           i++;
  31.           j++;
  32.         }else{
  33.           if(arr1[i]<arr2[j]){//若比對不同,而i值小於j值
  34.               if(c == 0)
  35.                 c =1;//找到第1個數後,把c改成1
  36.               else
  37.                 printf(", ");//若c值是1,表示前面有值,需以逗號分隔
  38.               printf("%d",arr1[i]);//找到不同的數值了
  39.               i++;//i指針再移下一位,j指針不要移
  40.           }
  41.         }
  42.       }
  43.      printf("}");
  44.     return 0;
  45. }
複製代碼
May

返回列表