You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用switch语句搭建学校评分系统遇故障,请求技术支持

问题修复与优化方案

代码中的致命错误

  • 未定义变量:switch(a)里使用了未声明的变量a,你定义的输入变量是num,把switch(a)改成switch(num)即可。
  • 函数拼写错误:B等级分支里的print("B");是错误的,C语言标准输出函数是printf,修正为printf("B");。

优化冗余的switch结构

你现在逐个分数写case的方式太繁琐,用区间判断可以大幅简化代码,以下是优化后的版本:

#include<stdio.h>

int main()
{
    int num;
    printf("Enter any number : ");
    scanf("%d", &num);

    // 先校验输入合法性
    if(num < 0 || num > 100) {
        printf("Not valid\n");
        return 0;
    }

    // 区间判断替代逐个case
    if(num <= 32) {
        printf("F\n");
    } else if(num <= 39) {
        printf("D\n");
    } else if(num <= 49) {
        printf("C\n");
    } else if(num <= 59) {
        printf("B\n");
    } else if(num <= 69) {
        printf("A-\n");
    } else if(num <= 79) {
        printf("A\n");
    } else { // 80-100区间
        printf("A+\n");
    }

    return 0;
}

解决逐个输入耗时的问题

如果需要批量处理多个分数,可以改成循环输入模式,输入特定值(比如-1)停止:

#include<stdio.h>

int main()
{
    int num;
    printf("Enter scores (input -1 to exit): \n");
    
    while(1) {
        scanf("%d", &num);
        if(num == -1) break; // 触发退出循环

        if(num < 0 || num > 100) {
            printf("%d -> Not valid\n", num);
            continue;
        }

        if(num <= 32) {
            printf("%d -> F\n", num);
        } else if(num <= 39) {
            printf("%d -> D\n", num);
        } else if(num <= 49) {
            printf("%d -> C\n", num);
        } else if(num <= 59) {
            printf("%d -> B\n", num);
        } else if(num <= 69) {
            printf("%d -> A-\n", num);
        } else if(num <= 79) {
            printf("%d -> A\n", num);
        } else {
            printf("%d -> A+\n", num);
        }
    }

    return 0;
}

编译提示

在Code::Blocks里编译时,红色的错误日志会直接指出问题位置,比如未定义变量、函数拼写错误这类问题,优先看编译报错信息能快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:40:10