用C语言实现按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次,要求成绩相同的学生具有相同的名次
时间: 2024-03-11 18:48:29 浏览: 101
学生成绩管理系统(C语言实现)
好的,以下是使用 C 语言实现的按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次的代码:
```c
#include <stdio.h>
int main() {
int scores[100];
int ranks[100];
int i, j, n, rank;
printf("请输入学生人数:");
scanf("%d", &n);
printf("请输入每个学生的成绩:\n");
for (i = 0; i < n; i++) {
scanf("%d", &scores[i]);
ranks[i] = 1; // 初始名次为1
}
for (i = 0; i < n; i++) {
rank = 1;
for (j = 0; j < n; j++) {
if (scores[j] > scores[i]) {
rank++;
}
}
ranks[i] = rank;
}
printf("按照分数由高到低的顺序输出学生的名次:\n");
for (i = 1; i <= n; i++) {
for (j = 0; j < n; j++) {
if (ranks[j] == i) {
printf("第%d名:成绩为%d\n", i, scores[j]);
}
}
}
return 0;
}
```
这段代码使用两个数组 `scores` 和 `ranks` 分别存储每个学生的成绩和名次。首先,让用户输入学生的人数和每个学生的成绩,并将每个学生的初始名次设为1。接着,使用两个嵌套循环计算每个学生的名次,具体地,对于每个学生,我们遍历所有学生的成绩,如果有其他学生的成绩比当前学生高,则当前学生的名次加1。最后,按照分数由高到低的顺序输出所有学生的名次和成绩。
需要注意的是,这种方法虽然可以处理成绩相同的情况,但是对于成绩相同的学生,名次并不一定是连续的。如果要求成绩相同的学生具有连续的名次,需要进行额外的处理。
阅读全文