输入n(4<=n<=20)个学生的C语言课程的成绩,请从将分数从高到底进行排序显示,并分别统计100-90,89-60,60以下这三个分数段的学生人数。
时间: 2024-10-17 20:06:43 浏览: 31
C语言课程设计—学生成绩管理系统
为了实现这个功能,你需要首先输入学生的成绩数据,然后进行排序并统计分数段。下面是一个简单的步骤说明:
1. 使用`scanf`函数获取用户输入的n以及n个学生的成绩。可以创建一个数组来存储成绩。
```c
int n, score[20];
for (int i = 0; i < n; i++) {
scanf("%d", &score[i]);
}
```
2. 对成绩数组进行降序排序。这里可以使用选择排序、冒泡排序或者更高效的算法,如快速排序或归并排序。
```c
// 选择排序示例
for (int i = 0; i < n - 1; i++) {
int max_idx = i;
for (int j = i + 1; j < n; j++) {
if (score[j] > score[max_idx]) {
max_idx = j;
}
}
int temp = score[i];
score[i] = score[max_idx];
score[max_idx] = temp;
}
// 或者使用标准库函数qsort
qsort(score, n, sizeof(int), compare_scores);
```
其中`compare_scores`是一个比较函数,用于实现降序排列。
3. 统计各个分数段的学生人数。可以创建三个变量分别记录每个分数段的数量。
```c
int count_90_to_100 = 0, count_60_to_89 = 0, count_below_60 = 0;
for (int i = 0; i < n; i++) {
switch (score[i]) {
case 100:
case 99:
case 98:
case 97:
case 96:
count_90_to_100++;
break;
case 95:
// ... 分别处理其他分数范围
default:
if (score[i] >= 60) {
count_60_to_89++;
} else {
count_below_60++;
}
break;
}
}
```
4. 输出结果,包括排序后的成绩和各分数段的人数。
```c
printf("Sorted scores:\n");
for (int i = 0; i < n; i++) {
printf("%d ", score[i]);
}
printf("\n");
printf("Number of students in each range:\n");
printf("90-100: %d\n", count_90_to_100);
printf("60-89: %d\n", count_60_to_89);
printf("Below 60: %d\n", count_below_60);
```
阅读全文