学生的记录由学号、姓名、年龄组成,根据班级人数,将学生记录存放在结构体数组中。请编程实现将学生记录按照姓名升序排序,并输出排序后的学生记录。要求:班级人数、学生记录均由键盘输入。
时间: 2024-03-20 13:44:45 浏览: 48
运用结构体数组与输入函数进行存放学生的学号姓名等数据
4星 · 用户满意度95%
好的,我可以帮你解决这个问题。这里提供一份 C 语言的代码示例,你可以参考一下:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
struct Student {
int id;
char name[20];
int age;
};
int main() {
int n; // 班级人数
printf("请输入班级人数:");
scanf("%d", &n);
struct Student students[n]; // 定义学生结构体数组
// 读入学生信息
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个学生的学号、姓名、年龄:", i+1);
scanf("%d %s %d", &students[i].id, students[i].name, &students[i].age);
}
// 冒泡排序,按照姓名升序排序
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (strcmp(students[j].name, students[j+1].name) > 0) {
struct Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
// 输出排序后的学生信息
printf("\n按照姓名升序排序后的学生记录为:\n");
for (int i = 0; i < n; i++) {
printf("学号:%d,姓名:%s,年龄:%d\n", students[i].id, students[i].name, students[i].age);
}
return 0;
}
```
这份代码中,我们首先定义了一个 `struct Student` 结构体,用来存储学生的信息。然后通过键盘输入班级人数和每个学生的信息,并将它们存放在学生结构体数组中。接着使用冒泡排序算法,按照学生姓名的字典序进行升序排序。最后输出排序后的学生信息。
希望对你有所帮助!
阅读全文