輸入兩個整數陣列(大小固定為 7),輸出不屬於兩個陣列交集的元素。例如:
陣列 A: 1 2 3 4 5 6 7
陣列 B: 5 6 7 8 9 0
輸出: 1 2 3 4 8 9 0
#include <stdio.h>
#define SIZE 7
#define MAX_VAL 100 // 假設元素範圍
int main() {
int a[SIZE] = {1,2,3,4,5,6,7};
int b[SIZE] = {5,6,7,8,9,0,0}; // 補 0 至 SIZE
int count[MAX_VAL] = {0};
int i, val;
// 統計出現次數
for (i = 0; i < SIZE; i++) count[a[i]]++;
for (i = 0; i < SIZE; i++) count[b[i]]++;
// 輸出只出現一次的元素
int first = 1;
for (val = 0; val < MAX_VAL; val++) {
if (count[val] == 1) {
if (!first) printf(" ");
printf("%d", val);
first = 0;
}
}
printf("\n");
return 0;
}
若要求使用指標移動「虛擬刪除」,可將陣列視為字串處理,但整數陣列較不適合。建議改用標記陣列或位元組集合,邏輯更清晰且效能更好。
MAX_VAL 範圍導致越界。