使用c与语言书写:定义30名学生信息包含成绩,姓名和学号,实际人数从键盘上输入: (1)采用交换法实现成绩从高到低排序,并输出每一个学生所有信息。
时间: 2024-12-17 19:49:59 浏览: 18
在C语言中,我们可以使用结构体(struct)来存储学生的个人信息,并结合数组和指针来实现排序和打印功能。首先,定义一个名为`Student`的结构体:
```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) {
const Student *sa = (const Student *)a;
const Student *sb = (const Student *)b;
return sb->score - sa->score; // 降序排列
}
int main() {
int n, i;
printf("请输入学生人数:");
scanf("%d", &n);
// 动态分配内存
Student *students = malloc(n * sizeof(Student));
if (!students) {
printf("内存分配失败!\n");
return 1;
}
// 读取学生信息并存入结构体数组
for (i = 0; i < n; ++i) {
printf("请输入第%d位学生的学号、姓名和成绩:\n", i + 1);
scanf("%d%s%f", &students[i].id, students[i].name, &students[i].score);
}
// 使用qsort对成绩进行排序
qsort(students, n, sizeof(Student), compare);
// 打印排序后的学生信息
printf("学号\t姓名\t成绩\n");
for (i = 0; i < n; ++i) {
printf("%d\t%s\t%.2f\n", students[i].id, students[i].name, students[i].score);
}
// 释放内存
free(students);
return 0;
}
```
阅读全文