c语言switch语句判断成绩

笔记2024-02-0717 人已阅来源:网络

在C语言中,我们可以使用switch语句根据学生的成绩来判断并输出相应的等级。假设我们有一个百分制的成绩存储在一个整型变量score中,以下是使用switch语句进行成绩等级判断的示例代码:

#include 

int main() {
    int score;
    
    // 输入学生成绩
    printf("请输入学生的成绩(0-100):");
    scanf("%d", &score);

    // 使用switch语句判断成绩等级
    switch (score / 10) { // 由于是按10分一段划分等级,这里先对成绩除以10
        case 10:
        case 9: // 注意:这里实际上应该写 case 9: break; case 10: 合并在一行,但考虑到实际情况应细化判断
            printf("成绩等级为:A\n");
            break;
        case 8:
            printf("成绩等级为:B\n");
            break;
        case 7:
            printf("成绩等级为:C\n");
            break;
        case 6:
            if (score >= 60) {
                printf("成绩等级为:D\n");
            } else { // 处理刚好60分以下的情况
                printf("成绩等级为:E\n");
            }
            break;
        default:
            printf("输入的成绩有误!\n");
            break;
    }

    return 0;
}

对于上面的代码需要注意,为了简化演示,这里假定成绩按照10分一档来区分等级。但实际应用中,为了避免误判,通常会按照实际分数范围来设定每个等级的具体边界,例如:

#include 

int main() {
    int score;

    printf("请输入学生的成绩(0-100):");
    scanf("%d", &score);

    switch (score) {
        case 90 ... 100: // C语言标准中没有范围匹配,这里是伪代码表示,实际需分开写多个case
            printf("成绩等级为:A\n");
            break;
        case 80 ... 89:
            printf("成绩等级为:B\n");
            break;
        case 70 ... 79:
            printf("成绩等级为:C\n");
            break;
        case 60 ... 69:
            printf("成绩等级为:D\n");
            break;
        default: // 包括60分以下的所有成绩
            printf("成绩等级为:E\n");
            break;
    }

    return 0;
}

// 或者使用if...else if...else结构更为直观
if (score >= 90) {
    printf("成绩等级为:A\n");
} else if (score >= 80) {
    printf("成绩等级为:B\n");
} // 其他等级判断类似...

在C语言中并没有连续范围的case语句,因此在实际编写时,针对每一段成绩区间,需要分别写出不同的case。或者更适合这种场景的是使用一系列的if...else if...else语句来进行判断。