编写程序,输入n个学生的学号和成绩(有一位小数),使成绩从高到低输出,n小于50,学号小于10位。C语言解答
时间: 2024-02-13 15:04:27 浏览: 65
以下是C语言的解答:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char id[11];
float score;
} Student;
int main() {
int n, i, j;
printf("请输入学生人数: ");
scanf("%d", &n);
Student *students = (Student *)malloc(n * sizeof(Student));
printf("请输入学生的学号和成绩,以空格分隔:\n");
for (i = 0; i < n; i++) {
scanf("%s %f", students[i].id, &students[i].score);
}
// 冒泡排序
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j+1].score) {
// 交换
Student tmp = students[j];
students[j] = students[j+1];
students[j+1] = tmp;
}
}
}
// 输出结果
printf("学号\t成绩\n");
for (i = 0; i < n; i++) {
printf("%s\t%.1f\n", students[i].id, students[i].score);
}
free(students);
return 0;
}
```
程序中使用了一个 `Student` 结构体来存储学生的学号和成绩。首先输入学生的信息,然后使用冒泡排序算法将学生按成绩从高到低排序,最后输出结果。
阅读全文