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

C 語言基礎演算法:去掉最高分與最低分求平均分

     編輯:關於C語言

C 語言基礎演算法:去掉最高分與最低分求平均分

模擬選拔賽評分規則:10 位評委打分(0~10 分),去掉一個最高分與一個最低分,計算剩餘 8 分的平均值。

演算法步驟

  1. 宣告陣列 float a[10] 儲存分數。
  2. 輸入驗證:分數必須在 0~10 之間,否則重新輸入全部 10 分。
  3. 遍歷陣列找出 max、min 並計算總和 sum。
  4. 平均分 = (sum - max - min) / 8。

完整 C 程式碼

#include <stdio.h>

int main(void) {
    float a[10], max, min, sum = 0.0f, aver;
    int i;

    printf("輸入成績:\n");
    for (i = 0; i < 10; i++) {
        printf("成績%2d: ", i + 1);
        scanf("%f", &a[i]);
        if (a[i] < 0 || a[i] > 10) {
            printf("成績輸入有誤!請確保分數在 0-10 之間!\n");
            i = -1; // 重新開始輸入
            continue;
        }
    }

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

    aver = (sum - max - min) / 8.0f;
    printf("去掉一個最高分:%.1f\n", max);
    printf("去掉一個最低分:%.1f\n", min);
    printf("平均分是: %.2f\n", aver);

    return 0;
}

執行範例

輸入成績:
成績 1: 9.5
成績 2: 8.0
成績 3: 7.5
成績 4: 9.0
成績 5: 8.5
成績 6: 7.0
成績 7: 9.5
成績 8: 8.0
成績 9: 6.5
成績10: 8.5
去掉一個最高分:9.5
去掉一個最低分:6.5
平均分是: 8.19

常見錯誤與改進

  • 原始碼中 if(max max=a[i]) 缺少關係運算子,應為 if(max < a[i])。
  • 輸入驗證若失敗,將 i=-1 並在迴圈遞增後歸零,可簡化為 do-while 迴圈結構。
  • 實務上評委人數可能不固定,可改為動態記憶體配置或巨集常數 #define JUDGES 10。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved