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

    你可能感兴趣的文章
    python3实现socket通信
    查看>>
    Python关于numpy.transpose函数详细解析附代码
    查看>>
    Python3导入自定义模块的3种方式
    查看>>
    python3打开txt文件_使用Python 3从文本文件读取句子并添加到列表中
    查看>>
    python3爬虫抓取智联招聘职位信息代码
    查看>>
    Python3爬虫数据入数据库---把爬取到的数据存到数据库,带数据库去重功能
    查看>>
    python3的 pymysql把mysqldb库取代了,让python 3支持mysqldb的解决方法
    查看>>
    Python3笔记——IDE的选择
    查看>>
    python3简单使用requests 用户代理,cookie池
    查看>>
    Python3组播通信编程实现教程(发送者+接收者)
    查看>>
    Python3编写网络爬虫10-数据存储方式三-CSV文件存储
    查看>>
    python3读取redis返回数据带有'b'的问题
    查看>>
    Python3连接MySQL
    查看>>
    Python关于isinstance函数的解析 | 附Demo(全)
    查看>>
    Python3:setup.py:完成所有任务的PIP安装(Build_ext+Install)
    查看>>
    python4.0 gil_Python 并发编程系列--1、浅谈GIL历史及对多线程的影响
    查看>>
    python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码
    查看>>
    Python: AES加密与解密
    查看>>
    Python: Range() 最大尺寸;动态的还是静态的?
    查看>>
    Python: Windows下用 multiprocessing 的深坑
    查看>>