有五名学生,每个学生的数据信息包括学号,姓名和一门课的成绩,要求按学生的成绩由高到低排序,然后输出学生的信息以及平均成绩。(c语言
时间: 2024-01-03 14:03:53 浏览: 95
好的,以下是C语言的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
int id; // 学号
char name[20]; // 姓名
float score; // 成绩
};
int cmp(const void *a, const void *b) {
return ((struct student*)b)->score - ((struct student*)a)->score;
}
int main() {
struct student students[5] = {
{101, "张三", 89.5},
{102, "李四", 78.0},
{103, "王五", 91.5},
{104, "赵六", 85.0},
{105, "钱七", 77.5}
};
qsort(students, 5, sizeof(struct student), cmp); // 按成绩排序
float sum = 0; // 总成绩
for (int i = 0; i < 5; i++) {
printf("学号:%d,姓名:%s,成绩:%.1f\n", students[i].id, students[i].name, students[i].score);
sum += students[i].score; // 累加成绩
}
printf("平均成绩:%.1f\n", sum / 5); // 计算平均成绩
return 0;
}
```
这段代码定义了一个 `student` 结构体,包括学号、姓名和成绩三个属性。然后定义了 `cmp` 函数用于比较两个学生的成绩大小,以便使用 `qsort` 函数进行排序。最后在 `main` 函数中初始化了五个学生的信息,按照成绩从高到低排序并输出,同时计算了平均成绩并输出。
阅读全文