博客
关于我
6-10 按等级统计学生成绩 (20分)
阅读量:772 次
发布时间:2019-03-24

本文共 2225 字,大约阅读时间需要 7 分钟。

学生成绩管理系统

函数介绍

set_grade函数旨在根据学生的考试成绩自动评定等级,并统计不及格(成绩低于60分)的学生人数。这个简单的函数可以帮助教师或自动化系统快速处理学生成绩数据,方便后续统计和分析。

函数接口定义

int set_grade(struct student *p, int n);

输入参数

  • p:指向学生信息的结构体数组的指针
  • n:学生数组的元素个数

结构体定义

struct student {    int num;  // 学号    char name[20];  // 姓名    int score;  // 成绩    char grade;  // 等级};

功能说明

  • 设置等级

    • 成绩在85分及以上(不含85):评定为A等级
    • 成绩在70分及以上,但低于85:评定为B等级
    • 成绩在60分及以上,但低于70:评定为C等级
    • 成绩低于60:评定为D等级
  • 统计不及格人数

    • 每当学生的成绩低于60时,函数会将相应的学生标记为不及格,并增加不及格人数计数器
  • 返回值

    • 函数返回不及格的学生人数
  • 功能实现

    int set_grade(struct student *p, int n) {    int count = 0;    for (int i = 0; i < n; i++) {        if (p[i].score >= 85) {            p[i].grade = 'A';        } else if (p[i].score >= 70) {            p[i].grade = 'B';        } else if (p[i].score >= 60) {            p[i].grade = 'C';        } else {            p[i].grade = 'D';            count++;        }    }    return count;}

    测试程序

    #include 
    #define MAXN 10struct student { int num; char name[20]; int score; char grade;};int set_grade(struct student *p, int n);int main() { struct student stu[MAXN]; char *ptr = stu; int n, i, count; scanf("%d\n", &n); for (i = 0; i < n; i++) { scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score); stu[i].grade = '\0'; // 初始化为非空字符,避免未赋值问题 } count = set_grade(ptr, n); printf("The count for failed (<60): %d\n", count); printf("The grades:\n"); for (i = 0; i < n; i++) { printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade); } return 0;}

    输入示例

    1031001 annie 8531002 bonny 7531003 carol 7031004 dan 8431005 susan 9031006 paul 6931007 pam 6031008 apple 5031009 nancy 10031010 bob 78

    预期输出

    The count for failed (<60): 1The grades:31001 annie A31002 bonny B31003 carol B31004 dan B31005 susan A31006 paul C31007 pam C31008 apple D31009 nancy A31010 bob B

    解释

    • 输入与输出解析

      • 10:学生数量
      • 接下来10行分别为每个学生的信息:学号、姓名、成绩
      • 输出中的第一个行显示有1名学生未及格
      • 接下来的10行显示每个学生的评级信息,其中:
        • A:成绩为85分及以上
        • B:成绩为70到84分
        • C:成绩为60到69分
        • D:成绩为59分及以下
    • 函数核心逻辑

      • 使用四个条件判断分数区间,并根据结果设置等级
      • 每当评为D等级时,计数器count自增,最后返回该计数器值

    注意事项

    • 确保PFMT字符串为非空字符,避免未初始化导致的潜在错误
    • 调用函数前确保所有学生对象已正确初始化
    • 如果需要调整评分标准,可在条件判断中进行相应修改

    性能优化

    • 预先清零:在循环开始前,初始化学生结构体中的相关字段为0,避免内存泄漏或无效输出
    • 避免多余判断:确保条件判断逻辑正确,避免超链接式判断会导致的潜在错误
    • 循环优化:尽量减少循环内部的操作,提高更新效率

    通过上述实现,您可以轻松地根据学生成绩自动评定等级并统计不及格人数,方便后续的数据分析与管理。

    转载地址:http://xwgkk.baihongyu.com/

    你可能感兴趣的文章
    Nginx配置负载均衡到后台网关集群
    查看>>
    Nginx配置限流,技能拉满!
    查看>>
    Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
    查看>>
    Nginx:NginxConfig可视化配置工具安装
    查看>>
    ngModelController
    查看>>
    ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
    查看>>
    ngrok内网穿透可以实现资源共享吗?快解析更加简洁
    查看>>
    NHibernate学习[1]
    查看>>
    NHibernate异常:No persister for的解决办法
    查看>>
    NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>