用c语言从键盘输入某一门课程m个学生的成绩,然后统计出学生的最高分、最低分、低于平均分的人数。其中,0<m<50,成绩为百分制,用-1结束输入,并由程序自动剔除无效数据。
时间: 2024-02-12 08:04:51 浏览: 84
好的,以下是用C语言实现该功能的代码:
```c
#include <stdio.h>
int main() {
int scores[50], n = 0;
int score, sum = 0, max_score = 0, min_score = 100;
// 输入成绩
while (1) {
printf("请输入学生成绩(输入-1结束):");
scanf("%d", &score);
if (score == -1) {
break;
}
if (score < 0 || score > 100) {
printf("输入无效,请重新输入!\n");
continue;
}
scores[n++] = score;
}
// 计算统计结果
if (n == 0) {
printf("没有有效数据\n");
} else {
for (int i = 0; i < n; i++) {
sum += scores[i];
if (scores[i] > max_score) {
max_score = scores[i];
}
if (scores[i] < min_score) {
min_score = scores[i];
}
}
double avg_score = (double)sum / n;
int below_avg = 0;
for (int i = 0; i < n; i++) {
if (scores[i] < avg_score) {
below_avg++;
}
}
printf("最高分:%d\n", max_score);
printf("最低分:%d\n", min_score);
printf("低于平均分的人数:%d\n", below_avg);
}
return 0;
}
```
解释一下代码的实现过程:
首先定义一个整型数组`scores`,用于存储学生成绩,以及一个整型变量`n`,表示有效成绩的数量。然后使用`while`循环不断输入成绩,直到输入-1为止。如果输入的成绩不在0到100之间,则认为是无效数据,并提示用户重新输入。如果输入的成绩合法,则将其存储到`scores`数组中,并将`n`加1。
循环结束后,如果`n`为0,则说明没有输入有效数据;否则,使用`for`循环计算最高分、最低分和总分,并根据学生人数计算平均分。然后使用另一个`for`循环统计低于平均分的人数,并输出结果。注意要将总分转换为浮点型进行平均分的计算。
希望这份代码可以帮助您解决问题!
阅读全文