用c语言编写结构类型structStu描述学生成绩记录,主函数输入3个学生的成绩记录(包括学号、姓名和两门课成绩),首先调用average函数计算每个学生2门课的平均成绩并存入对应记录的score[2]单元,然后调用sort函数按平均成绩的升序对学生记录进行排序,最后输出结果。请将average函数和sort函数补充完整。
时间: 2023-06-17 21:02:07 浏览: 116
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
// 学生成绩记录结构体
struct Stu {
int id; // 学号
char name[20]; // 姓名
float score[2]; // 两门课成绩
};
// 计算每个学生2门课的平均成绩并存入对应记录的score[2]单元
void average(struct Stu *p) {
for(int i=0; i<3; i++) {
p[i].score[2] = (p[i].score[0] + p[i].score[1]) / 2;
}
}
// 按平均成绩的升序对学生记录进行排序
void sort(struct Stu *p) {
struct Stu tmp;
for(int i=0; i<2; i++) {
for(int j=0; j<2-i; j++) {
if(p[j].score[2] > p[j+1].score[2]) {
tmp = p[j];
p[j] = p[j+1];
p[j+1] = tmp;
}
}
}
}
int main() {
struct Stu s[3]; // 定义3个学生的成绩记录
// 输入3个学生的成绩记录
for(int i=0; i<3; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &s[i].id);
printf("姓名:");
scanf("%s", s[i].name);
printf("两门课成绩:");
scanf("%f%f", &s[i].score[0], &s[i].score[1]);
}
average(s); // 调用average函数计算每个学生2门课的平均成绩并存入对应记录的score[2]单元
sort(s); // 调用sort函数按平均成绩的升序对学生记录进行排序
// 输出结果
printf("\n排序后的结果为:\n");
printf("学号\t姓名\t成绩1\t成绩2\t平均成绩\n");
for(int i=0; i<3; i++) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\n", s[i].id, s[i].name, s[i].score[0], s[i].score[1], s[i].score[2]);
}
return 0;
}
```
注意:在sort函数中,我们使用了冒泡排序算法来进行排序。为了方便,这里只对3个学生进行排序,如果要对更多的学生进行排序,可以在函数中增加参数来指定学生的个数。
阅读全文