c语言编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n 小于50,学号小于10位
时间: 2023-11-28 18:48:51 浏览: 124
以下是一个简单的 C 语言程序,实现了输入 n 个学生的学号和成绩,并按成绩从高到低排序输出。可以根据需要进行修改。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 50
#define MAX_ID_LENGTH 10
// 学生结构体
typedef struct {
char id[MAX_ID_LENGTH + 1]; // 学号
float score; // 成绩
} Student;
// 比较函数,用于 qsort 排序
int compare(const void *a, const void *b) {
const Student *s1 = (const Student *)a;
const Student *s2 = (const Student *)b;
return s2->score - s1->score;
}
int main() {
int n;
Student students[MAX_N];
// 输入学生信息
printf("请输入学生数(n<=50):");
scanf("%d", &n);
printf("请输入每个学生的学号和成绩(成绩保留1位小数):\n");
for (int i = 0; i < n; i++) {
scanf("%s%f", students[i].id, &students[i].score);
}
// 排序并输出
qsort(students, n, sizeof(Student), compare);
printf("按成绩从高到低排序后的学生信息:\n");
for (int i = 0; i < n; i++) {
printf("%s %.1f\n", students[i].id, students[i].score);
}
return 0;
}
```
注意,上述程序中的 compare 函数使用了指针类型和类型转换,有些细节可能需要仔细理解。如果不理解可以参考 C 语言教程或者请教其他人。
阅读全文