2.编写一个程序,程序中包含学生结构体用来存储学生信息(学号,姓名,年龄,专业),定义输入5个学生的信息,并按学生姓名在字母表中的顺序排序,然后输出。要求程序中用到 typedef关键字
时间: 2024-10-22 09:09:42 浏览: 21
数据结构:定义一个包含学生信息(学号、姓名、成绩)的顺序表_数据结构
5星 · 资源好评率100%
在C语言中,你可以使用`typedef`关键字定义一个新的数据类型别名,这可以使代码更易读。首先,我们可以定义一个名为`Student`的结构体来存储学生信息,然后使用`typedef`创建一个新的类型名`stu_t`代表这个结构体。接下来,我们编写函数接收用户输入并按照姓名排序:
```c
#include <stdio.h>
#include <string.h>
// 使用typedef定义结构体类型别名
typedef struct {
int id;
char name[50];
int age;
char major[50];
} Student;
// 定义比较函数,用于字符串排序
int compare(const void *a, const void *b) {
return strcmp(((Student *)a)->name, ((Student *)b)->name);
}
// 输入5个学生信息并排序
void input_and_sort(Student stu[], int num) {
for (int i = 0; i < num; i++) {
printf("请输入第%d个学生的学号、姓名、年龄和专业:\n", i+1);
scanf("%d%s%d%s", &stu[i].id, stu[i].name, &stu[i].age, stu[i].major);
}
// 使用qsort对结构体数组进行排序
qsort(stu, num, sizeof(Student), compare);
printf("\n按照姓名字母顺序排序后的学生信息:\n");
for (int i = 0; i < num; i++) {
printf("学号:%d 姓名:%s 年龄:%d 专业:%s\n", stu[i].id, stu[i].name, stu[i].age, stu[i].major);
}
}
int main() {
// 创建一个stu_t类型的数组,假设最多有5个学生
stu_t students[5];
// 调用输入并排序函数
input_and_sort(students, 5);
return 0;
}
```
在这个程序中,用户会输入5个学生的信息,然后通过`qsort`函数对数组按姓名进行排序,最后输出排序后的学生信息。
阅读全文