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

C語言Switch語句實戰:五級制成績轉百分制區間

     編輯:C 語言問答

Switch 語句經典應用:等級成績區間轉換

題目要求:輸入字母等級(A-E),輸出對應百分制分數區間,使用 switch 實現。

標準解法

#include <stdio.h>
#include <ctype.h>  // for toupper

int main() {
    char grade;
    printf("輸入等級 (A-E):");
    scanf(" %c", &grade);  // 空格跳過換行符

    // 統一轉大寫,簡化 case
    grade = toupper(grade);

    switch (grade) {
        case 'A': printf("分數區間:90-100\n"); break;
        case 'B': printf("分數區間:80-89\n"); break;
        case 'C': printf("分數區間:70-79\n"); break;
        case 'D': printf("分數區間:60-69\n"); break;
        case 'E': printf("分數區間:0-59\n"); break;
        default:  printf("輸入錯誤:請輸入 A-E 字母\n");
    }
    return 0;
}

關鍵點解析

  1. scanf(" %c", &grade):格式字串前的空格會自動跳過緩衝區殘留的空白字元(換行、空格),避免「跳過輸入」問題。
  2. toupper():將小寫轉大寫,只需寫大寫 case,程式碼更簡潔。
  3. break 必不可少:防止「貫穿」執行下一個 case。
  4. default 分支:處理非預期輸入,增強健壯性。

常見錯誤與改進

  • 原代碼用 flushall() 非標準,應避免使用。
  • if('a'<=c && c<='z') c=c-32; 雖可行,但不如 toupper() 可移植(依賴 ASCII 碼)。
  • 輸出格式建議統一,如 printf("區間:%%d-%%d\\n", low, high); 便於維護。

擴展練習

嘗試修改程式:輸入數值分數(0-100),用 if-else if 或技巧性 switch(score/10) 輸出等級。

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