You need to enable JavaScript to run this app. 如何在C语言中使用switch case实现该成绩统计程序功能
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言中使用switch case实现该成绩统计程序功能

实现思路

我们可以通过整数除法将0100的分数映射为010的离散值,直接适配switch case的匹配规则,替换原if分支的分数段判断逻辑,同时保留原有合法性校验、及格/不及格统计的全部功能,还可以兼容你代码中已定义的等级统计变量。

修改后完整代码

#include <stdio.h>
int main() {
    int i=0, marks=0, pass=0, fail=0;
    int A_Plus=0,A=0,A_minus=0,B_Plus=0,B =0,B_minus=0,C_Plus=0,C=0,C_minus=0,D_Plus=0,D=0,F=0;

    while(1) {
        scanf("%d", &marks);
        // 输入-1直接终止循环
        if (marks == -1) {
            break;
        }
        // 合法性校验
        if(marks < 0 || marks > 100) {
            printf("You enter invalid mark: %d \n",marks);
            continue;
        }
        // 分数有效,总计数+1
        i++;
        // 整除10压缩为0~10的离散值
        switch(marks / 10) {
            // 满分90-100属于A类,及格
            case 10:
                A_Plus++;
                pass++;
                break;
            case 9:
                if (marks >= 95) A_Plus++;
                else if (marks >= 90) A++;
                pass++;
                break;
            // 80-89属于B类,及格
            case 8:
                if (marks >= 85) B_Plus++;
                else if (marks >= 80) B++;
                pass++;
                break;
            // 70-79属于C类,及格
            case 7:
                if (marks >= 75) C_Plus++;
                else if (marks >= 70) C++;
                pass++;
                break;
            // 60-69属于D类,及格
            case 6:
                if (marks >= 65) D_Plus++;
                else if (marks >= 60) D++;
                pass++;
                break;
            // 0-59属于F,不及格
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
            case 0:
                F++;
                fail++;
                break;
        }
    }
    // 可自行添加统计结果打印逻辑
    printf("总人数:%d,及格:%d,不及格:%d\n", i, pass, fail);
    return 0;
}

逻辑说明

  • 修复了原代码中marks未初始化就进入while判断的未定义行为问题,用break主动终止循环逻辑更清晰
  • 利用switch的fall-through特性,将0~59分的多个case合并处理,无需写重复代码
  • 保留了原代码的全部功能,同时补充了你预先定义的等级统计变量的赋值逻辑,不需要的话可以直接删除等级相关代码,仅保留pass/fail的计数即可

内容的提问来源于stack exchange,提问作者sk567

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 01:27:03