C语言定义学生结构体数据类型,从键盘输入一批学生的信息,编写函数将这批学生按姓名排序。
时间: 2024-03-14 22:45:13 浏览: 260
可以使用结构体数组来存储学生的信息,然后使用冒泡排序或快速排序等算法实现按照姓名排序。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct {
char name[20];
int age;
float score;
} Student;
void swap(Student* a, Student* b) {
Student temp = *a;
*a = *b;
*b = temp;
}
void bubble_sort(Student* students, int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (strcmp(students[j].name, students[j + 1].name) > 0) {
swap(&students[j], &students[j + 1]);
}
}
}
}
int main() {
Student students[MAX_STUDENTS];
int n;
printf("请输入学生数量(最多%d个):", MAX_STUDENTS);
scanf("%d", &n);
int i;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名、年龄、成绩:", i + 1);
scanf("%s%d%f", students[i].name, &students[i].age, &students[i].score);
}
bubble_sort(students, n);
printf("按姓名排序后的学生信息为:\n");
for (i = 0; i < n; i++) {
printf("%s\t%d\t%.2f\n", students[i].name, students[i].age, students[i].score);
}
return 0;
}
```
该程序首先定义了一个 `Student` 结构体,其中包含了学生的姓名、年龄和成绩三个成员变量。
然后,程序定义了一个 `swap` 函数,用于交换两个学生的信息。
接着,程序定义了一个 `bubble_sort` 函数,用于按照学生的姓名排序。该函数使用冒泡排序算法,从头到尾遍历数组,每次比较相邻的两个元素,如果前者大于后者,则交换它们的位置,直到整个数组按照姓名从小到大排序为止。
最后,程序从键盘输入一批学生的信息,调用 `bubble_sort` 函数对它们按照姓名排序,并输出排序后的结果。
阅读全文