有N名学生,学生的信息包含:学号、姓名、年龄和成绩,要求使用C十从键盘输入N名学生的信息,对成绩进行排序并输出。
时间: 2024-10-16 21:17:29 浏览: 25
在C语言中,我们可以使用结构体来存储学生的个人信息,并结合数组或者动态内存分配来存储所有学生。这里我们假设使用结构体`Student`表示每个学生,然后通过`qsort`函数对学生的成绩进行排序。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id;
char name[50];
int age;
float score;
} Student;
// 比较函数,用于qsort排序
int compare(const void *a, const void *b) {
const Student *sa = (const Student *) a;
const Student *sb = (const Student *) b;
return (sa->score > sb->score) - (sa->score < sb->score);
}
void input_students(Student students[], int n) {
for(int i=0; i<n; i++) {
printf("请输入第%d名学生的信息(学号、姓名、年龄、成绩): ", i+1);
scanf("%d", &students[i].id);
fgets(students[i].name, sizeof(students[i].name), stdin);
students[i].age = ... // 可能需要额外的输入方式读取年龄
scanf("%f", &students[i].score);
}
getchar(); // 清除换行符
}
void output_sorted_students(Student students[], int n) {
qsort(students, n, sizeof(Student), compare);
for(int i=0; i<n; i++) {
printf("学号: %d, 姓名: %s, 年龄: %d, 成绩: %.2f\n",
students[i].id, students[i].name, students[i].age, students[i].score);
}
}
int main() {
int n;
printf("请输入学生总数: ");
scanf("%d", &n);
Student *students = malloc(n * sizeof(Student)); // 动态分配内存
input_students(students, n);
output_sorted_students(students, n);
free(students); // 释放内存
return 0;
}
阅读全文