有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息,用c语言的结构体
时间: 2023-01-28 13:45:11 浏览: 147
C语言利用结构体数组实现学生成绩管理系统
5星 · 资源好评率100%
可以这样做:
1. 定义结构体,包含学号、姓名、成绩三个字段:
```
struct student {
int id;
char name[100];
float score;
};
```
2. 定义一个数组,用来存储所有学生的信息:
```
struct student stus[100];
```
3. 使用循环读入所有学生的信息:
```
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名、成绩:", i + 1);
scanf("%d%s%f", &stus[i].id, stus[i].name, &stus[i].score);
}
```
4. 使用冒泡排序算法,对学生的成绩进行排序:
```
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (stus[j].score > stus[j + 1].score) {
struct student temp = stus[j];
stus[j] = stus[j + 1];
stus[j + 1] = temp;
}
}
}
```
5. 使用循环输出所有学生的信息:
```
for (int i = 0; i < n; i++) {
printf("学号:%d 姓名:%s 成绩:%.2f\n", stus[i].id, stus[i].name, stus[i].score);
}
```
完整的代码如下:
```
#include <stdio.h>
struct student {
int id;
char name[100];
float score;
};
int main() {
int n;
printf("请输入学生的数量:");
scanf("%d", &n);
struct student stus[100];
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名、成绩:", i + 1);
scanf("%d%s%f", &stus[i].id, stus[i].name, &stus[i].
阅读全文