首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言陣列差集問題:輸出兩個陣列不共同的元素

     編輯:程式設計疑難解答

題目需求

輸入兩個整數陣列(大小固定為 7),輸出不屬於兩個陣列交集的元素。例如:
陣列 A: 1 2 3 4 5 6 7
陣列 B: 5 6 7 8 9 0
輸出: 1 2 3 4 8 9 0

演算法思路

  1. 使用雙重迴圈或雜湊表標記兩陣列出現的元素。
  2. 遍歷兩陣列,輸出計數為 1 的元素(即只出現在單一陣列)。
  3. 注意去重:若陣列內部有重複值,需依題意決定是否保留重複。

參考實作(C 語言)

#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;
}

指標操作替代方案

若要求使用指標移動「虛擬刪除」,可將陣列視為字串處理,但整數陣列較不適合。建議改用標記陣列或位元組集合,邏輯更清晰且效能更好。

常見錯誤提醒

  • 未處理陣列長度不固定或輸入讀取邊界。
  • 輸出格式(空格、換行)不符合 OJ 要求。
  • 負數或超出 MAX_VAL 範圍導致越界。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved