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

C語言陣列統計:最大值、最小值、方差計算修正版

     編輯:C 語言問答

常見錯誤與修正要點

  • 資料型別不一致:float 陣列配合 %lf/double 計算,避免精度損失。
  • 變數未初始化:s (方差累加) 必須歸零。
  • 輸入格式:float 讀取用 %f,double 用 %lf。
  • 方差公式:σ² = Σ(xi - μ)² / n,最後須除以 n。
  • 輸出格式:浮點數用 %.2f,非 %d。

修正後完整程式碼

#include <stdio.h>
#include <math.h>

int main()
{
    int n;
    printf("輸入資料筆數 (≤100): ");
    if (scanf("%d", &n) != 1 || n <= 0 || n > 100) return 1;

    double a[100], sum = 0.0;
    for (int i = 0; i < n; i++) {
        printf("第 %d 個: ", i+1);
        scanf("%lf", &a[i]);
        sum += a[i];
    }

    double max = a[0], min = a[0];
    for (int i = 1; i < n; i++) {
        if (a[i] > max) max = a[i];
        if (a[i] < min) min = a[i];
    }

    double mean = sum / n;
    double var_sum = 0.0;
    for (int i = 0; i < n; i++) {
        double diff = a[i] - mean;
        var_sum += diff * diff; // 比 pow() 更快且精確
    }
    double variance = var_sum / n;

    printf("最大值: %.2f\n", max);
    printf("最小值: %.2f\n", min);
    printf("平均值: %.2f\n", mean);
    printf("方差:   %.2f\n", variance);
    return 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved