2.定义一个高考成绩记录信息的结构体,包含考试号(stuNo)、姓名(name) 、语文成绩(chnScore) 、数学成绩、(mathScore)、英语成绩(engScore)、平均成绩(avgScore), 编写程序【程序必须添加注释】:
(1) 通过 scanf函数从终端输入如下的十个学生信息, 保存到结构体数组中: (可以允许在程序初始化的时候初始化这些信息【因为程序调试的输入成本太高,所以允许大家直接初始化这个信息】, 但是scanf函数必须定义出来,可使用注释符号注释掉)
stuNo name chnScore mathScore engScore
19420701 Tom 78 99 78
19420702 Lily 83 75 83
19420703 Hellen 63 88 77
19420704 John 83 86 86
19420705 Amily 73 81 90
19420706 Sislya 73 90 72
19420707 Cole 67 80 73
19420708 Paul 87 81 79
19420709 Tony 78 81 80
19420710 Sam 90 71 95
(2) 计算每个学生的三门课的平均成绩, 结果保存到avgscore 成员变量中
(3) 按照原始输入顺序打印所有学生的信息(一行打印一个
学生的信息);
(4) 按照平均分由高到低输出学生的信息;
(5) 输出英语成绩最低的同学的信息;输出平均成绩最高的同学的信息;
(6)输出数学分数最高的五个学生的学号、姓名和数学成绩信息;
(7)输出数学分数最高且英语分数高于75分的三个学生的信息;
(8) 输出按照以语文成绩由高分到低分排序的学生信息,如果语文成绩相同,按照数学成绩由高到低排序输出。
(9)再从键盘获取学号, 根据学号查询是否有该学号的记录,如果有,就输出该学号对应的学生的信息, 如果没有则输出查无此人。
1
C定义一个高考成绩记录信息的结构体
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
z a x 2023-11-23 10:37关注引用gpt4.0
#include <stdio.h> // 定义高考成绩记录信息的结构体 struct Student { int stuNo; // 学号 char name[50]; // 姓名 int chnScore; // 语文成绩 int mathScore; // 数学成绩 int engScore; // 英语成绩 float avgScore; // 平均成绩 }; int main() { // 初始化十个学生的信息 struct Student students[10] = { {19420701, "Tom", 78, 99, 78, 0}, // avgScore将在后面计算 {19420702, "Lily", 83, 75, 83, 0}, {19420703, "Hellen", 63, 88, 77, 0}, {19420704, "John", 83, 86, 86, 0}, {19420705, "Amily", 73, 81, 90, 0}, {19420706, "Sislya", 73, 90, 72, 0}, {19420707, "Cole", 67, 80, 73, 0}, {19420708, "Paul", 87, 81, 79, 0}, {19420709, "Tony", 78, 81, 80, 0}, {19420710, "Sam", 90, 71, 95, 0} }; // 计算每个学生的平均成绩 for (int i = 0; i < 10; ++i) { students[i].avgScore = (students[i].chnScore + students[i].mathScore + students[i].engScore) / 3.0; } // 打印原始输入顺序的学生信息 printf("Original order of students:\n"); for (int i = 0; i < 10; ++i) { printf("%d %s %d %d %d %.2f\n", students[i].stuNo, students[i].name, students[i].chnScore, students[i].mathScore, students[i].engScore, students[i].avgScore); } // 按平均分由高到低输出学生的信息 printf("\nSorted by average score (high to low):\n"); // TODO: 实现按平均分排序的算法 // 输出英语成绩最低的同学的信息 printf("\nStudent with the lowest English score:\n"); // TODO: 实现找到英语成绩最低的学生信息的算法 // 输出平均成绩最高的同学的信息 printf("\nStudent with the highest average score:\n"); // TODO: 实现找到平均成绩最高的学生信息的算法 // 输出数学分数最高的五个学生的学号、姓名和数学成绩信息 printf("\nTop five students with the highest math scores:\n"); // TODO: 实现找到数学分数最高的五个学生信息的算法 // 输出数学分数最高且英语分数高于75分的三个学生的信息 printf("\nTop three students with the highest math scores and English scores above 75:\n"); // TODO: 实现找到数学分数最高且英语分数高于75分的三个学生信息的算法 // 按照语文成绩由高分到低分排序的学生信息,如果语文成绩相同,按照数学成绩由高到低排序输出 printf("\nSorted by Chinese score (high to low), and then by math score (high to low):\n"); // TODO: 实现按语文成绩由高到低,若语文成绩相同按照数学成绩由高到低排序的算法 // 从键盘获取学号,根据学号查询是否有该学号的记录 int searchStuNo; printf("\nEnter the student number to search: "); scanf("%d", &searchStuNo); int found = 0; // 用于标记是否找到学生信息 for (int i = 0; i < 10; ++i) { if (students[i].stuNo == searchStuNo) { printf("Student found:\n"); printf("%d %s %d %d %d %.2f\n", students[i].stuNo, students[i].name, students[i].chnScore, students[i].mathScore, students[i].engScore, students[i].avgScore); found = 1; // 将found标记为1表示找到了学生信息 break; // 找到了就跳出循环 } } if (!found) { printf("No student found with student number %d.\n", searchStuNo); } return 0; }以上是一个简单的C语言程序,其中有一些部分需要你自己完成。你需要根据注释中的提示,实现排序和查找算法。在实际编写代码时,你可以使用不同的排序算法(比如冒泡排序、快速排序等)和查找算法(比如线性查找、二分查找等),具体选择取决于你的需求和偏好。
希望这段代码能够帮助你开始创建这个学生成绩记录的程序。如果有任何问题或需要进一步的解释,请随时问我。
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用