用结构体数组存储学生信息,每个学生有姓名学号和成绩。从键盘按学号顺序输入N名学生信息再按成绩从高到低的顺序输出各学生的全部信息。
时间: 2024-12-22 14:28:58 浏览: 20
在C语言中,你可以通过定义一个结构体数组来存储学生的信息,比如:
```c
struct Student {
char name[50]; // 姓名
int id; // 学号
float score; // 成绩
};
```
然后,你可以创建一个这样的数组来存储N名学生的信息:
```c
#define MAX_STUDENTS 10 // 最大学生数
struct Student students[MAX_STUDENTS];
int num_students = 0;
```
接下来,编写函数从键盘输入学生信息,并维护学号的顺序:
```c
void input_student_info() {
for (int i = 0; i < MAX_STUDENTS && num_students < N; ++i) {
printf("请输入第 %d 名学生的学号、姓名和成绩:\n", i + 1);
scanf("%d%s%f", &students[i].id, students[i].name, &students[i].score);
}
}
```
为了按成绩从高到低排序,你可以选择在输入结束后使用冒泡排序或其他适当的排序算法对整个数组进行排序:
```c
// 排序函数省略,这里假设有一个名为sort_students_by_score的已实现函数
void sort_students() {
sort_students_by_score(students, num_students);
}
```
最后,打印出排序后的学生信息:
```c
void print_students() {
for (int i = 0; i < num_students; ++i) {
printf("学号:%d,姓名:%s,成绩:%f\n", students[i].id, students[i].name, students[i].score);
}
}
```
在这个程序中,用户首先输入N名学生信息,然后排序并输出成绩最高的学生信息。
阅读全文