用C语言行成绩分析问题

成绩分析问题
问题描述:
录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。基本要求:
(1)通过键盘输入各学生的多门课程的成绩,建立相应的文件inputdat。(2)对文件inputdat中的数据进行处理,要求具有如下功能:按各门课程成绩排序,并生成相应的文件输出。
计算每人的平均成绩,按平均成绩排序,并生成文件。
求出各门课程的平均成绩、最高分、最低分、不及格人数、6069分人数、70
~79分人数、80
89分人数、90分以上人数。
根据姓名或学号查询某人的各门课成绩,重名情况也能处理。(3)界面美观。测试数据:
测试数据如表2所示。
表2成绩表
001 学号 姓名 王放 78 数学 77 英语 90 计算机
002 张强 89 67 88
003 李浩 56 66 78
004 黄鹂兵 89 86 85
005 李浩 67 88 76
006 陈利风 45 54 67
8
007 尚晓 78 76 70

https://blog.csdn.net/yikuaidabin/article/details/128247869

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7661024
  • 除此之外, 这篇博客: C语言实现八大排序算法详解及其性能之间的中的 这里需要对堆有一定的了解,堆就是一个比较特殊的完全二叉树,在最大堆里,每个节点的值都大于其左右两个孩子节点的值。这就是最大堆。反之就是最小堆。拿最大堆举例子,每次堆顶的元素值,不就是当前数列的最大吗?这不就成选择排序里的简单排序了吗?找完之后,将他和完全二叉树里最后一个结点的值进行交换,然后做一个自顶向下的自我调整,将他再次调整成一个完全二叉堆。第二次取最大的树,这时我们需要将上一次找到的结点屏蔽掉,不然会陷入一个死循环。无数次找完之后,再按层序的思想将二叉树里的数据遍历到一个数组当中,这时的数组为一个有序的数组。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    算法思想

  • 以下回答来自chatgpt:

    我可以实现这个问题,具体实现思路如下:

    1. 首先定义一个结构体,包括学号,姓名和三门课程成绩,然后使用scanf函数从键盘输入学生信息,将学生信息保存到一个数组中。

    2. 将学生信息数组中的数据写入到文件inputdat中,使用fprintf函数实现。

    3. 读取inputdat文件中的学生信息,使用fgets和sscanf实现,将数据保存到一个学生信息结构体中。

    4. 对多门课程成绩进行排序,可以使用堆排序或快速排序的方法实现。

    5. 计算每个学生的平均成绩,按平均成绩排序,并将排序后的数据保存到文件中。

    6. 求出各门课程的平均成绩、最高分、最低分、不及格人数、60-69分人数、70-79分人数、80-89分人数、90分以上人数,并将结果保存到文件中。

    7. 根据姓名或学号查询某个学生的各门课成绩,能够处理重名情况。首先从文件inputdat中读取学生信息,然后根据学生姓名或学号查询相应的学生信息,最后输出学生信息。

    8. 设计一个美观的界面,输出程序提示和学生信息等内容。

    下面是具体的代码实现:


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^