博客
关于我
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/

    你可能感兴趣的文章
    Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
    查看>>
    Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
    查看>>
    Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
    查看>>
    Mysql 学习总结(89)—— Mysql 库表容量统计
    查看>>
    mysql 实现主从复制/主从同步
    查看>>
    mysql 审核_审核MySQL数据库上的登录
    查看>>
    mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
    查看>>
    mysql 导入导出大文件
    查看>>
    MySQL 导出数据
    查看>>
    mysql 将null转代为0
    查看>>
    mysql 常用
    查看>>
    MySQL 常用列类型
    查看>>
    mysql 常用命令
    查看>>
    Mysql 常见ALTER TABLE操作
    查看>>
    MySQL 常见的 9 种优化方法
    查看>>
    MySQL 常见的开放性问题
    查看>>
    Mysql 常见错误
    查看>>
    mysql 常见问题
    查看>>
    MYSQL 幻读(Phantom Problem)不可重复读
    查看>>
    mysql 往字段后面加字符串
    查看>>