结构类型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-13 12:01:47 浏览: 99
C语言学生成绩信息管理系统【结构体+文本】
代码如下:
```c
#include <stdio.h>
#include <string.h>
struct Stu {
char id[10];
char name[20];
float score1;
float score2;
float aver;
};
void input(struct Stu s[], int n);
void average(struct Stu s[], int n);
void sort(struct Stu s[], int n);
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
struct Stu stu[n];
input(stu, n);
average(stu, n);
sort(stu, n);
printf("排序后的成绩单:\n");
printf("%-10s%-20s%-10s%-10s%-10s\n", "学号", "姓名", "成绩1", "成绩2", "平均分");
for (int i = 0; i < n; i++) {
printf("%-10s%-20s%-10.2f%-10.2f%-10.2f\n", stu[i].id, stu[i].name, stu[i].score1, stu[i].score2, stu[i].aver);
}
return 0;
}
void input(struct Stu s[], int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号:", i + 1);
scanf("%s", s[i].id);
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", s[i].name);
printf("请输入第%d个学生的成绩1:", i + 1);
scanf("%f", &s[i].score1);
printf("请输入第%d个学生的成绩2:", i + 1);
scanf("%f", &s[i].score2);
}
}
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 - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (s[j].aver > s[j + 1].aver) {
struct Stu temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
}
}
```
空格填写如下:
```c
void input(struct Stu s[], int n);
void average(struct Stu s[], int n);
void sort(struct Stu s[], int n);
```
阅读全文