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

    你可能感兴趣的文章
    python各种库安装
    查看>>
    python可视化matplotlib_如何使用Python中最强大的可视化工具Matplotlib?
    查看>>
    python可维护性_使用这7大神器,让你的Python 代码更容易于维护
    查看>>
    Python只运行一次while循环
    查看>>
    python变量的详细教程_Python零基础入门教程之语法入门[变量](第二期)
    查看>>
    Python变量命名方法-ChatGPT4o作答
    查看>>
    Python变量与运算符
    查看>>
    Python变量/运算符/函数/模块/string
    查看>>
    python发送邮件的时候出现 error (535, b‘5.7.3 Authentication unsuccessful‘) 解决方法
    查看>>
    python系列【仅供参考】:python flask框架 debug功能
    查看>>
    python发送notes邮件_使用python在Lotus Notes中发送邮件
    查看>>
    Python双版本下创建一个Scrapy(西瓜皮)项目
    查看>>
    Python双版本下No module named 'requests'
    查看>>
    python及pycharm2018软件安装教程
    查看>>
    python去重txt文本_Python实现的txt文件去重功能示例
    查看>>
    python去掉列表的逗号,从Python列表项中删除标点符号
    查看>>
    Python卸载所有包
    查看>>
    python单线程下实现多个socket并发
    查看>>
    Python单元测试框架介绍(超详细~)
    查看>>
    Python单元测试框架
    查看>>