用typedef struct输入一个班级人数各同学学号和姓名.最后按学号从小到大输出
时间: 2024-09-14 18:03:07 浏览: 59
在C语言中,可以使用`typedef struct`来定义一个结构体,用于存储学生的学号和姓名。然后创建一个数组来保存班级的所有学生信息,并对数组中的学号进行排序,最后按学号从小到大的顺序输出每个学生的信息。
首先,定义一个结构体表示学生信息:
```c
typedef struct {
int id; // 学号
char name[50]; // 姓名
} Student;
```
接下来,编写代码来输入班级人数以及每个学生的学号和姓名,并实现排序和输出功能:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
int id;
char name[50];
} Student;
// 比较两个学生学号的函数,用于排序
int compare(const void *a, const void *b) {
Student *studentA = (Student *)a;
Student *studentB = (Student *)b;
return studentA- studentB->id;
}
int main() {
int n;
printf("请输入班级人数:");
scanf("%d", &n);
Student students[n];
// 输入学生信息
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号和姓名:", i + 1);
scanf("%d %s", &students[i].id, students[i].name);
}
// 使用qsort进行排序
qsort(students, n, sizeof(Student), compare);
// 输出排序后的学生信息
printf("\n按学号从小到大输出学生信息:\n");
for (int i = 0; i < n; i++) {
printf("学号:%d,姓名:%s\n", students[i].id, students[i].name);
}
return 0;
}
```
在这段代码中,我们首先定义了一个结构体`Student`,然后创建了一个`students`数组来存储所有学生的数据。通过循环输入每个学生的学号和姓名。之后,使用`qsort`函数对学生的数组进行排序,该函数需要一个比较函数`compare`来确定排序的规则。最后,按照排序后的顺序输出每个学生的信息。
阅读全文