有n个学生的信息(包括学号、姓名、成绩),学生人数由用户决定(25≤n≤40),按照学生姓名排序输出各学生信息。C语言程序
时间: 2024-12-13 12:18:17 浏览: 35
在C语言中,你可以使用结构体来存储学生的相关信息,然后结合指针和数组来处理动态输入的学生人数。这里是一个简单的示例程序,它首先读取学生数量,然后依次读取每个学生的信息,并按姓名排序:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id;
char name[50];
float score;
} Student;
// 比较函数,用于字符串比较,这里是按照姓名升序
int compare(const void* a, const void* b) {
return strcmp(((Student*)a)->name, ((Student*)b)->name);
}
int main() {
int n;
printf("请输入学生数量(25-40): ");
scanf("%d", &n);
// 确保输入范围内
if (n < 25 || n > 40) {
printf("输入错误,学生数量应在25到40之间。\n");
return 1;
}
// 动态分配内存
Student students[n];
// 读取学生信息并排序
for (int i = 0; i < n; i++) {
scanf("%d %s %f", &students[i].id, students[i].name, &students[i].score);
}
qsort(students, n, sizeof(Student), compare); // 使用qsort对结构体数组进行排序
// 输出排序后的学生信息
for (int i = 0; i < n; i++) {
printf("学号: %d, 姓名: %s, 成绩: %.2f\n", students[i].id, students[i].name, students[i].score);
}
free(students); // 避免内存泄漏,释放动态分配的内存
return 0;
}
```
阅读全文