c语言题目要求输入一个整数n,然后输入n个学生的成绩,按照分数由高到低的顺序输出学生的名次:序号、成绩,要求成绩相同的学生具有相同的名次。
时间: 2024-03-17 17:43:44 浏览: 58
好的,以下是一个 C 语言的代码实现:
```c
#include <stdio.h>
int main() {
int n, i, j, temp, rank;
int score[100];
printf("请输入学生人数:");
scanf("%d", &n);
printf("请输入学生成绩:\n");
for (i = 0; i < n; i++) {
scanf("%d", &score[i]);
}
// 对学生成绩进行冒泡排序
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (score[j] < score[j+1]) {
temp = score[j];
score[j] = score[j+1];
score[j+1] = temp;
}
}
}
printf("名次\t成绩\n");
rank = 1;
for (i = 0; i < n; i++) {
if (i > 0 && score[i] != score[i-1]) {
rank = i+1;
}
printf("%d\t%d\n", rank, score[i]);
}
return 0;
}
```
首先,我们从用户那里获取学生人数 n,并使用数组 score 存储每个学生的成绩。
然后,我们使用冒泡排序对学生成绩进行排序,从高分到低分。
接下来,我们使用 rank 变量存储当前遍历到的学生成绩所对应的名次,如果当前学生成绩与上一个学生成绩相同,则名次不变,否则名次加1。最后,我们按照要求输出学生的名次和成绩。
希望这个代码可以帮到你,如果你还有其他问题,可以继续问我。
阅读全文