【C語言】比較兩個陣列中是否有相同的元素
阿新 • • 發佈:2019-02-09
我們都知道,要判斷兩個陣列中是否有相同的元素,只需要兩層for迴圈,但是在for迴圈的內部,我們要注意什麼時候跳出迴圈,這個是非常重要的,不能一直輸出有,但是也不能既輸出有,又輸出沒有!
下面是第一種方法:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int main() { int arr1[4] = {0}; int arr2[5] = {0}; int i = 0,j=0,k=0; printf("請輸入陣列1(4個元素):\n"); for(i = 0;i<sizeof(arr1)/sizeof(arr1[0]);i++) { scanf("%d",&arr1[i]); } printf("請輸入陣列2(5個元素):\n"); for(i=0;i<sizeof(arr2)/sizeof(arr2[0]);i++) { scanf("%d",&arr2[i]); } for(j = 0; j<sizeof(arr1)/sizeof(arr1[0]); j++) { for(k = 0;k<sizeof(arr2)/sizeof(arr2[0]);k++) { if(arr1[j] == arr2[k]) { printf("有相同元素!\n"); } if(k<sizeof(arr2)/sizeof(arr2[0])) { break; } } if(j>=sizeof(arr1)/sizeof(arr1[0])) printf("沒有相同元素!\n"); } return 0; }
上面的方法就需要判斷的多一些了,並且判斷的地方也要找準,下面的方法就會簡單一些:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int main() { int arr1[4] = {0}; int arr2[5] = {0}; int i = 0,j=0,k=0; printf("請輸入陣列1(4個元素):\n"); for(i = 0;i<sizeof(arr1)/sizeof(arr1[0]);i++) { scanf("%d",&arr1[i]); } printf("請輸入陣列2(5個元素):\n"); for(i=0;i<sizeof(arr2)/sizeof(arr2[0]);i++) { scanf("%d",&arr2[i]); } for(j = 0; j<sizeof(arr1)/sizeof(arr1[0]); j++) { for(k = 0;k<sizeof(arr2)/sizeof(arr2[0]);k++) { if(arr1[j] == arr2[k]) { printf("有相同元素!\n"); return 0; } } } printf("沒有相同元素!\n"); return 0; }