c语言学生系统课程设计第三关(最下面可以直接复制)

测试说明

输入说明: 若干个整数,代表成绩。

输出说明: 由高到低输出统计结果。

注意:需要过滤掉不合法输入:成绩不在0~100区间内的。

#include <stdio.h>

#include <string.h>

#include <stdbool.h>

// 定义结构体关于成绩等级  

typedef enum {  

    GRADE_F,  

    GRADE_D,  

    GRADE_C,  

    GRADE_C_PLUS,  

    GRADE_B,  

    GRADE_B_PLUS,  

    GRADE_A,  

    GRADE_A_PLUS  

} Grade;  

// 计算成绩等级  

Grade calculateGrade(int score) {  

    if (score >= 93&& score <= 100) return GRADE_A_PLUS;  

    if (score >= 85 && score <= 92) return GRADE_A;  

    if (score >= 80 && score <= 84) return GRADE_B_PLUS;  

    if (score >= 75 && score <= 79) return GRADE_B;  

    if (score >= 70 && score <= 74) return GRADE_C_PLUS;  

    if (score >= 65&& score <= 69) return GRADE_C;  

    if (score >= 60 && score <= 64) return GRADE_D;  

    return GRADE_F;  

}  

//=======begin=======

int main(){

    int score, count[8] = {0}; // 初始化成绩等级计数数组  

    // 读取成绩并统计  

    while (scanf("%d", &score)==1)

    //scanf("%d", &score) == 1:scanf函数返回成功读取并赋值的变量数量。在这个情况下,我们期望读取一个整数,所以返回值应该为1。如果返回值是1,说明我们成功读取了一个整数。

    {  

        if (score < 0 || score > 100) { // 检查分数是否在0到100之间  

            // 如果不是,输出错误消息(可选)并跳过当前循环

            continue;

        }

        Grade grade = calculateGrade(score);  //在循环体内,首先调用calculateGrade函数,将读取到的score作为参数传递。这个函数会返回一个枚举值Grade,表示该成绩对应的等级。这个返回值被存储在grade变量中。

        count[grade]++;  //grade变量存储了成绩的等级(即GRADE_A_PLUS、GRADE_A等枚举值)。由于枚举值在C语言中实际上是整数,我们可以直接使用它们作为数组索引。count[grade]++表示将count数组中索引为grade的元素的值增加1,从而实现了对成绩等级的计数。

    }  

     // 输出结果  

    if(count[GRADE_A_PLUS]>0){

        printf("A+: %d\n", count[GRADE_A_PLUS]);

    }

    if(count[GRADE_A]>0){  

        printf("A: %d\n", count[GRADE_A]);

    }

    if(count[GRADE_B_PLUS]>0){  

        printf("B+: %d\n", count[GRADE_B_PLUS]);

    }

    if(count[GRADE_B]>0){  

        printf("B: %d\n", count[GRADE_B]);

    }

    if(count[GRADE_C_PLUS]>0){  

        printf("C+: %d\n", count[GRADE_C_PLUS]);

    }

    if(count[GRADE_C]>0){  

        printf("C: %d\n", count[GRADE_C]);

    }

    if(count[GRADE_D]>0){  

        printf("D: %d\n", count[GRADE_D]);

    }

    if(count[GRADE_F]>0){  

        printf("F: %d\n", count[GRADE_F]);  

    }  

   

     

    return 0;  

}

输出结果部分代码可以进一步优化,作者懒得搞了。。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值