C语言有n个学生的信息(学号、姓名、成绩),要求按照成绩的高低输出各学生的信息 {{10101,"Zhang",78},{10103,"Wang",98.5},{10106,"Li",86},{10108,"Ling",73.5},{10110,"Fun",100}
时间: 2023-07-19 21:11:44 浏览: 94
好的,根据您的要求,我可以给您提供一个简单的 C 语言程序来实现该功能。请参考下面的代码:
```c
#include <stdio.h>
struct student {
int id;
char name[20];
float score;
};
int main() {
int n = 5, i, j;
struct student stu[n], temp;
// 输入学生信息
printf("请输入 %d 个学生的信息(学号、姓名、成绩):\n", n);
for (i = 0; i < n; i++) {
printf("学生 %d:", i + 1);
scanf("%d %s %f", &stu[i].id, stu[i].name, &stu[i].score);
}
// 按成绩从高到低排序
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (stu[j].score < stu[j + 1].score) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
// 输出学生信息
printf("\n按成绩从高到低输出各学生的信息:\n");
for (i = 0; i < n; i++) {
printf("%d\t%s\t%.1f\n", stu[i].id, stu[i].name, stu[i].score);
}
return 0;
}
```
该程序定义了一个 `struct student` 结构体,包含学生的学号、姓名和成绩。首先,程序会要求用户输入 n 个学生的信息,然后使用冒泡排序算法将学生按成绩从高到低排序,最后按照排序后的顺序输出各学生的信息。
注意:本程序中的学生人数是固定的,如果需要处理不同数量的学生信息,需要使用动态内存分配等更高级的技术。
阅读全文