首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言求解兩個陣列元素差值的最小絕對值

     編輯:關於C

本文示範如何使用 C 語言找出兩個整數陣列中所有元素兩兩配對的絕對差值,並求出其中的最小值。這是一個典型的雙重迴圈遍歷與極值尋找練習。

問題背景

給定兩個陣列 num[] = {1, 3, 5, 7, 9}(5 個元素)與 cou[] = {2, 4, 6, 8}(4 個元素)。需計算每一對元素 |cou[i] - num[j]| 的絕對值,共 20 組差值,最後找出最小者。

解題步驟

  1. 宣告一個長度 20 的陣列 sum[] 暫存所有差值。
  2. 雙重迴圈遍歷兩個陣列,計算絕對差值並存入 sum[]。
  3. 線性掃描 sum[] 找出最小值 min。
  4. 輸出結果。

程式碼實作

#include <stdio.h>
#include <stdlib.h>

int main() {
    int i, j, k = 0;
    int min;
    int sum[20];
    int num[] = {1, 3, 5, 7, 9};
    int cou[] = {2, 4, 6, 8};

    // 計算所有絕對差值
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 5; j++) {
            sum[k++] = abs(cou[i] - num[j]);
        }
    }

    // 尋找最小值
    min = sum[0];
    for (i = 0; i < k; i++) {
        if (sum[i] < min) min = sum[i];
    }

    printf("陣列 num[] 與 cou[] 差的絕對值最小為 %d\n", min);
    return 0;
}

執行結果截圖

學習重點

  • 雙重迴圈產生笛卡兒積組合
  • abs() 函式取得絕對值
  • 線性搜尋演算法找最小值
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved