使用一維數組來解決以下這個問題。
讀入兩組數,每組有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}- #include<stdio.h>
- #include<stdlib.h>
- void selection_sort(int arr[], int len) {//自訂函數由小而大排序
- int i, j, temp;
- for (i = 0; i < len - 1; i++)
- for (j = i+1; j < len; j++)
- if (arr[i] > arr[j ]) {
- temp = arr[j];
- arr[j] = arr[i];
- arr[i] = temp;
- }
- }
- int main() {
- int arr1[5] ;
- int arr2[5] ;
- printf("Enter 5 numbers for 1st array:\n");
- for(int i=0;i<5;i++)
- scanf("%d",&arr1[i]);
- selection_sort(arr1,5);//呼叫函數由小而大排序
- printf("Enter 5 numbers for 2nd array:\n");
- for(int i=0;i<5;i++)
- scanf("%d",&arr2[i]);
- selection_sort(arr2,5);//呼叫函數由小而大排序
- int i=0;
- int j=0;
- int c = 0;//判斷是否為輸出時,前面要加上逗號
- printf("The difference of sets is {");
- while(i<5 && j<5){
- if(arr1[i]==arr2[j]){//若比對相同,兩個指針同步移1位
- i++;
- j++;
- }else{
- if(arr1[i]<arr2[j]){//若比對不同,而i值小於j值
- if(c == 0)
- c =1;//找到第1個數後,把c改成1
- else
- printf(", ");//若c值是1,表示前面有值,需以逗號分隔
- printf("%d",arr1[i]);//找到不同的數值了
- i++;//i指針再移下一位,j指針不要移
- }
- }
- }
- printf("}");
- return 0;
- }
複製代碼 |