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

C語言實現學生成績分類統計:輸入成績按等級輸出,-1結束輸入

     編輯:C 語言問答

題目需求

編寫一個C語言程序,從鍵盤輸入學生成績(最多十個,但以-1為結束標誌),根據分數區間將其分類為「優」(90-100)、「良」(70-89)、「及格」(60-69)、「不及格」(0-59)並輸出對應等級。輸入超出0-100範圍時提示錯誤並重新輸入。

核心邏輯與代碼實現

程序採用while(1)無限循環配合switch語句實現分類判斷,利用整數除以10的商作為case標簽,巧妙處理區間邊界。

#include <stdio.h>

int main(void) {
    int score;
    while (1) {
        printf("請輸入成績 (0-100, -1 結束): ");
        if (scanf("%d", &score) != 1) {
            // 清除非法輸入緩衝區
            while (getchar() != '\n');
            printf("輸入格式錯誤,請重新輸入。\n");
            continue;
        }
        if (score == -1) {
            printf("程序結束。\n");
            break;
        }
        if (score < 0 || score > 100) {
            printf("輸入錯誤:分數必須在 0 到 100 之間,請重新輸入。\n");
            continue;
        }
        // 整除 10 獲得十位數字,作為分類依據
        switch (score / 10) {
            case 10:
            case 9:
                printf("優\n");
                break;
            case 8:
            case 7:
                printf("良\n");
                break;
            case 6:
                printf("及格\n");
                break;
            default: // 0-5
                printf("不及格\n");
                break;
        }
    }
    return 0;
}

關鍵點解析

  • 輸入驗證:檢查scanf返回值確保讀取到整數,並處理非數字輸入導致的緩衝區殘留。
  • 邊界處理:case 10對應100分,case 9對應90-99,合併處理「優」;同理case 8/7為「良」,case 6為「及格」,其餘default為「不及格」。
  • 循環結束:輸入-1時break跳出循環,比return 0更利於主函數結構清晰。

運行示例

請輸入成績 (0-100, -1 結束): 95
優
請輸入成績 (0-100, -1 結束): 72
良
請輸入成績 (0-100, -1 結束): 105
輸入錯誤:分數必須在 0 到 100 之間,請重新輸入。
請輸入成績 (0-100, -1 結束): -1
程序結束。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved