4.编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n 小于50,学号小于10位。用C语言编译
时间: 2024-05-15 16:18:12 浏览: 38
好的,可以开始提问了。对于你的第一个问题,我可以提供以下的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char id[11];
float score;
} Student;
int compare(const void *p1, const void *p2) {
Student *s1 = (Student*) p1;
Student *s2 = (Student*) p2;
if (s1->score > s2->score) {
return -1;
} else if (s1->score < s2->score) {
return 1;
} else {
return 0;
}
}
int main() {
int n;
scanf("%d", &n);
Student *students = (Student*) malloc(n * sizeof(Student));
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);
}
free(students);
return 0;
}
```
这是一个简单的程序,使用了结构体来存储学生的学号和成绩,使用了快速排序来进行排序。输入时按要求的格式输入,输出时按从高到低的顺序输出。请根据你的需要进行改动或者优化,提高程序的效率或灵活性。
阅读全文