C语言 编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n 小于50,学号小于10位
时间: 2024-03-10 07:50:55 浏览: 78
好的,这个问题可以使用结构体和排序算法来完成。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 50
// 学生结构体
typedef struct {
char id[11]; // 学号
float score; // 成绩
} Student;
// 插入排序算法
void insertionSort(Student arr[], int n) {
for (int i = 1; i < n; i++) {
Student tmp = arr[i];
int j = i - 1;
while (j >= 0 && arr[j].score < tmp.score) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = tmp;
}
}
int main() {
Student students[MAX_STUDENTS]; // 定义学生数组
int n; // 学生数量
// 读入学生数量和每个学生的信息
printf("请输入学生数量:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号和成绩:", i + 1);
scanf("%s %f", students[i].id, &students[i].score);
}
// 按成绩从高到低排序
insertionSort(students, n);
// 输出所有学生的信息
printf("所有学生的信息如下:\n");
for (int i = 0; i < n; i++) {
printf("%s\t%.1f\n", students[i].id, students[i].score);
}
return 0;
}
```
这个程序可以读入学生数量和每个学生的学号和成绩,并按成绩从高到低排序输出所有学生的信息。你可以根据实际情况修改学生结构体的成员。
阅读全文