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

華為軟件編程題:選秀節目打分

     編輯:關於C語言

題目描述

某選秀節目有 5 位評委打分,分為專家評委與大眾評委兩類。計分規則:

  • 專家評委分數直接計入總分
  • 大眾評委分數取平均值後計入總分
  • 最終總分 = 專家分數之和 + 大眾評委平均分

輸入:5 行,每行包含分數(0-100)與評委類型(0=專家,1=大眾)。輸出最終總分(保留 2 位小數)。

核心邏輯與代碼實現

#include <stdio.h>

#define N 5
#define EXPERT 0
#define GENERAL 1

double cal_score(int score[], int judge_type[]) {
    int expert_sum = 0, expert_cnt = 0;
    int general_sum = 0, general_cnt = 0;

    for (int i = 0; i < N; ++i) {
        if (judge_type[i] == EXPERT) {
            expert_sum += score[i];
            expert_cnt++;
        } else {
            general_sum += score[i];
            general_cnt++;
        }
    }

    double total = expert_sum;
    if (general_cnt > 0)
        total += (double)general_sum / general_cnt;

    return total;
}

int main() {
    int score[N], judge_type[N];
    for (int i = 0; i < N; ++i) {
        if (scanf("%d %d", &score[i], &judge_type[i]) != 2) return 1;
        if (score[i] < 0 || score[i] > 100 || judge_type[i] < 0 || judge_type[i] > 1) {
            printf("Invalid input\n");
            return 1;
        }
    }
    printf("%.2f\n", cal_score(score, judge_type));
    return 0;
}

關鍵點解析

  1. 類型區分:用宏定義常量提高可讀性,避免魔術數字。
  2. 整數除法陷阱:大眾評委平均分必須轉為 double 後再除,否則整數截斷導致誤差。
  3. 輸入驗證:檢查分數範圍與類型合法性,增強魯棒性。
  4. 格式化輸出:%.2f 保證兩位小數,符合題目要求。

擴展思考

  • 若評委人數不固定,改用動態分配或鏈表存儲。
  • 引入加權權重(如專家權重 0.6,大眾 0.4),只需修改匯總邏輯。
  • 異常值處理:去除最高/最低分再平均,需先排序。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved