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

C 語言練習:計算 1~100 奇數平均值

     編輯:關於C語言

題目

求 1 到 100 (含) 之間所有奇數的平均值。

完整程式碼

#include 

#define BEGIN 1
#define END   100

int main(void) {
    int sum = 0;
    int count = 0;

    for (int i = BEGIN; i <= END; ++i) {
        if (i % 2 == 1) {
            sum += i;
            ++count;
        }
    }

    double average = (double)sum / count;  // 強制轉型避免整數除法截斷
    printf("奇數和 = %d, 個數 = %d, 平均值 = %.2f\n", sum, count, average);
    return 0;
}

輸出結果

奇數和 = 2500, 個數 = 50, 平均值 = 50.00

數學驗證

等差數列平均值 = (首項 + 末項) / 2 = (1 + 99) / 2 = 50。

關鍵細節:浮點數除法

double average = (double)sum / count;  // 正確:雙精度除法
// double average = sum / count;       // 錯誤:整數除法先算完再轉型,結果 50.000000 但精度已失
// float average = sum / count;        // 同樣錯誤

鐵律:參與除法的運算元**至少有一個**為浮點型別,才會執行浮點除法。

優化版本 (O(1) 公式法)

int first = (BEGIN % 2) ? BEGIN : BEGIN + 1;
int last  = (END % 2)   ? END   : END - 1;
if (first <= last) {
    int n = (last - first) / 2 + 1;
    int sum = n * (first + last) / 2;
    double avg = (double)sum / n;  // 等價於 (first + last) / 2.0
    printf("平均值 = %.2f\n", avg);
}

常見錯誤

錯誤後果修正
avg = sum / count 無轉型整數除法,小數部份截斷轉型 (double)sum 或 sum / (double)count
float avg 精度不足大數值時精度損失優先用 double
count 未初始化未定義行為int count = 0;

擴展:格式化輸出控制

printf("平均值 = %.2f\n", average);     // 固定 2 位小數
printf("平均值 = %g\n", average);       // 一般格式,自動科學記號
printf("平均值 = %.*f\n", 4, average);  // 動態指定小數位數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved