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

HDU 2035 青年歌手大賽:去極值平均分計算

     編輯:關於C語言

題目大意

多組測試數據。每組第一個整數 n (2 < n ≤ 100) 為評委人數,隨後 n 個分數(整數或浮點)。規則:去掉一個最高分、一個最低分,其餘求平均,輸出保留兩位小數。

演算法

  1. 讀入 n 及 n 個分數
  2. 單次掃描求 sum、max、min
  3. 平均分 = (sum - max - min) / (n - 2)
  4. printf("%.2f\n", avg) 輸出

C 語言實現

#include <stdio.h>

int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        double score, sum = 0, max = -1, min = 101; // 分數範圍隱含 0-100
        for (int i = 0; i < n; i++) {
            scanf("%lf", &score);
            sum += score;
            if (score > max) max = score;
            if (score < min) min = score;
        }
        double avg = (sum - max - min) / (n - 2);
        printf("%.2f\n", avg);
    }
    return 0;
}

關鍵點

  • 邊界初始化:max 初始設為 -1,min 設為 101(題目分數隱含 0-100),確保首次比較正確
  • 精度:用 double 累加避免精度損失,%.2f 自動四捨五入
  • 多測試用例:while (scanf(...) != EOF) 循環讀取至文件結尾

範例

輸入:
3 99 98 97
4 100 99 98 97

輸出:
98.00
98.50

驗證:第一組 (99+98+97-99-97)/1 = 98;第二組 (100+99+98+97-100-97)/2 = 197/2 = 98.5。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved