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

C語言陣列操作:尋找最大最小值與平均值計算

     編輯:C 語言問答

C 語言一維陣列:最大值、最小值、平均值完整實作

題目

輸入 10 個數字存入陣列,輸出最大值、最小值、平均值。

標準解法 (單迴圈掃描)

#include <stdio.h>

int main() {
    double a[10];
    double max, min;
    int i;

    printf("請輸入 10 個數字:\n");
    for (i = 0; i < 10; i++) {
        scanf("%lf", &a[i]);
    }

    max = min = a[0];
    for (i = 1; i < 10; i++) {
        if (max < a[i]) max = a[i];
        if (min > a[i]) min = a[i];
    }

    double sum = 0;
    for (i = 0; i < 10; i++) sum += a[i];
    double avg = sum / 10;

    printf("最大值: %.2f\n", max);
    printf("最小值: %.2f\n", min);
    printf("平均值: %.2f\n", avg);
    printf("最大最小值平均: %.2f\n", (max + min) / 2.0);

    return 0;
}

優化版:單迴圈同時完成輸入、極值、加總

int main() {
    double a[10], max, min, sum = 0;
    for (int i = 0; i < 10; i++) {
        scanf("%lf", &a[i]);
        if (i == 0) max = min = a[0];
        else {
            if (a[i] > max) max = a[i];
            if (a[i] < min) min = a[i];
        }
        sum += a[i];
    }
    printf("max=%.2f min=%.2f avg=%.2f (max+min)/2=%.2f\n",
           max, min, sum/10, (max+min)/2.0);
    return 0;
}

關鍵點提醒

  • 初始化極值:務必用第一個元素 a[0] 初始化 max、min,不可用 0 或常數 (若資料全負/全正會錯)。
  • 使用 double:預設用 double 而非 float,精度更高、避免累加誤差。
  • 格式字串:%lf 讀取 double,%f 輸出 double (printf 會自動提升)。
  • 平均值型別:sum / 10.0 或 sum / (double)10 強制浮點除法。

進階:動態大小陣列 (VLA, C99)

int n;
printf("陣列大小: ");
scanf("%d", &n);
double a[n];  // Variable Length Array
// ... 後續邏輯相同
// 注意:VLA 分配在堆疊,n 過大會堆疊溢位,大陣列請用 malloc

標準庫替代:fmax/fmin (C99, <math.h>)

max = fmax(max, a[i]);
min = fmin(min, a[i]);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved