c语言编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n小于50,学号小于10位。
时间: 2023-12-10 13:40:13 浏览: 123
以下是使用C语言编写的程序,可以实现输入n个学生的学号和成绩,按照成绩从高到低排序输出:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 50
#define MAX_ID_LEN 10
typedef struct {
char id[MAX_ID_LEN + 1];
float score;
} Student;
void sort(Student *students, int n) {
int i, j;
Student temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (students[i].score < students[j].score) {
temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
int main() {
int n, i;
Student students[MAX_N];
printf("请输入学生数n: ");
scanf("%d", &n);
if (n > MAX_N) {
printf("n不能大于%d\n", MAX_N);
exit(1);
}
printf("请依次输入学生的学号和成绩(中间用空格隔开):\n");
for (i = 0; i < n; i++) {
scanf("%s%f", students[i].id, &students[i].score);
}
sort(students, n);
printf("按成绩从高到低排序输出:\n");
for (i = 0; i < n; i++) {
printf("%s %.1f\n", students[i].id, students[i].score);
}
return 0;
}
```
在这个程序中,我们使用了一个结构体 `Student` 来表示每个学生,包含学号和成绩两个字段。首先,我们定义了常量 `MAX_N` 和 `MAX_ID_LEN` 分别表示最大学生数和最大学号长度。然后,我们定义了一个函数 `sort` 来实现排序,使用的是冒泡排序算法。最后,在 `main` 函数中,我们按照题目要求,先输入学生数和每个学生的学号和成绩,然后调用 `sort` 函数进行排序,最后按照成绩从高到低输出每个学生的学号和成绩。
阅读全文