c语言编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n 小于50,学号小于10位。
时间: 2024-02-23 12:58:50 浏览: 72
好的,下面是一个C语言程序,可以实现您的需求:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
char id[11]; // 学号
float score; // 成绩
} Student;
Student students[50];
void bubbleSort(int n) {
int i, j;
Student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j + 1].score) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
int main() {
int n, i;
printf("请输入学生的个数:\n");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的学号和成绩:\n", i + 1);
scanf("%s %f", students[i].id, &students[i].score);
}
bubbleSort(n);
printf("按成绩从高到低排序的结果为:\n");
for (i = 0; i < n; i++) {
printf("%s %.1f\n", students[i].id, students[i].score);
}
return 0;
}
```
在程序中,我们首先定义了一个结构体`Student`,用来存储每个学生的学号和成绩。然后,我们定义了一个`students`数组来存储所有学生的信息。接下来,我们编写了一个冒泡排序函数`bubbleSort`,用来将学生按照成绩从高到低排序。最后,在主函数中,我们先读入学生的个数n,然后依次读入每个学生的学号和成绩,并调用`bubbleSort`函数进行排序,最后输出排序结果。
注意,在输入学号时,我们使用了`%s`格式化符,而在输入成绩时,我们使用了`%f`格式化符,并且保留了一位小数。在输出时,我们也使用了`%.1f`格式化符,保留了一位小数。
希望能够帮到您!