C语言:结构类型struct Stu描述学生成绩记录;函数void input(struct Stu s[], int n)功能是输入n个学生的成绩记录(包括学号、姓名和两门课成绩);函数void average(struct Stu s[], int n)功能是计算每个学生2门课的平均成绩并存入对应记录的aver单元;函数void sort(struct Stu s[], int n)功能是按平均成绩的升序对学生记录进行排序。main函数调用以上函数,并输出结果,题目保证每个学生的平均分都不一样,请在五个空格之间填写内容。 输入格式: 输入为三行,每行包含学号,姓名,两门课成绩(以空格隔开)。 输出格式: 输出为三行,按平均成绩升序依次输出,每行包含学号,姓名,平均分(小数点后保留两位小数)。
时间: 2024-02-05 10:10:32 浏览: 111
代码如下:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 定义学生成绩记录的结构体
struct Stu {
char id[10]; // 学号
char name[20]; // 姓名
float score1; // 第一门课成绩
float score2; // 第二门课成绩
float aver; // 平均成绩
};
// 输入n个学生的成绩记录
void input(struct Stu s[], int n) {
for (int i = 0; i < n; i++) {
scanf("%s%s%f%f", s[i].id, s[i].name, &s[i].score1, &s[i].score2);
}
}
// 计算每个学生2门课的平均成绩并存入对应记录的aver单元
void average(struct Stu s[], int n) {
for (int i = 0; i < n; i++) {
s[i].aver = (s[i].score1 + s[i].score2) / 2;
}
}
// 按平均成绩的升序对学生记录进行排序
void sort(struct Stu s[], int n) {
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (s[i].aver > s[j].aver) {
struct Stu temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
}
int main() {
struct Stu stu[3]; // 定义3个学生的记录
input(stu, 3); // 输入3个学生的成绩记录
average(stu, 3); // 计算每个学生2门课的平均成绩
sort(stu, 3); // 按平均成绩的升序对学生记录进行排序
// 按平均成绩升序输出学生记录
for (int i = 0; i < 3; i++) {
printf("%s %s %.2f\n", stu[i].id, stu[i].name, stu[i].aver);
}
return 0;
}
```
阅读全文