结构类型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函数调用以上函数,并输出结果,题目保证每个学生的平均分都不一样,请在五个空格之间填写内容。 输入格式: 输入为三行,每行包含学号,姓名(姓名不含空格),两门课成绩(以空格隔开)。 输出格式: 输出为三行,按平均成绩升序依次输出,每行包含学号,姓名,平均分(小数点后保留两位小数),每行的各数据项用空格间隔。 输入样例: 1 aa 98 99 2 bb 78 79 3 cc 85 86 输出样例: 2 bb 78.50 3 cc 85.50 1 aa 98.50 ###已有代码 #include<stdio.h> struct Stu { int num; char name[20]; int score1,score2; float aver; }; void input(struct Stu s[], int n) { int i; for(i=0;i<n;i++) scanf("%d%s%d%d",/*1*/ /*1*/); } void average(struct Stu s[], int n) { /*2*/ /*2*/ } void sort(struct Stu s[], int n) { /*3*/ /*3*/ } int main() { struct Stu s[3]; int i; input(s,3); /*4*/ /*4*/; //调用average sort(s,3); for(i=0;i<3;i++) printf("%d %s %.2f\n",/*5*/ /*5*/); return 0; }
时间: 2024-02-03 10:02:32 浏览: 77
请参考下面的完整代码:
```c
#include<stdio.h>
#include<string.h>
struct Stu {
int num;
char name[20];
int score1, score2;
float aver;
};
void input(struct Stu s[], int n) {
int i;
for(i = 0; i < n; i++)
scanf("%d%s%d%d", &s[i].num, s[i].name, &s[i].score1, &s[i].score2);
}
void average(struct Stu s[], int n) {
int i;
for(i = 0; i < n; i++)
s[i].aver = (s[i].score1 + s[i].score2) / 2.0;
}
void sort(struct Stu s[], int n) {
int i, j;
struct Stu temp;
for(i = 0; i < n - 1; i++)
for(j = 0; j < n - i - 1; j++)
if(s[j].aver > s[j + 1].aver) {
temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
int main() {
struct Stu s[3];
int i;
input(s, 3);
average(s, 3);
sort(s, 3);
for(i = 0; i < 3; i++)
printf("%d %s %.2f\n", s[i].num, s[i].name, s[i].aver);
return 0;
}
```
注意,这里我们对`input`函数、`average`函数和`sort`函数的实现进行了修改。在`input`函数中,我们使用了`scanf`函数来对结构体数组`s`进行输入;在`average`函数中,我们计算了每个学生的平均分并存入对应的记录的`aver`单元;在`sort`函数中,我们按平均成绩的升序对学生记录进行排序。
在`main`函数中,我们先调用`input`函数、然后调用`average`函数计算每个学生2门课的平均成绩并存入对应记录的`aver`单元、再调用`sort`函数按平均成绩的升序对学生记录进行排序、最后使用`for`循环输出每个学生的学号、姓名和平均分。
阅读全文