C语言输入某一门科目的m个学生的成绩,m从键盘输入,统计最高分,最低分,低于平均分的人数,用-1结束输入,并由程序自动剔除无效程序
时间: 2023-10-08 14:06:28 浏览: 86
好的,问题已经记录下来了。下面是回答:
以下是 C 语言的代码实现,可以实现输入某一门科目的 m 个学生的成绩,统计最高分、最低分、低于平均分的人数,同时也会自动剔除无效的输入:
```c
#include <stdio.h>
int main() {
int m;
printf("请输入学生数量:");
scanf("%d", &m);
float scores[m];
float sum = 0;
int count = 0;
for (int i = 0; i < m; i++) {
float score;
printf("请输入第 %d 个学生的成绩:", i + 1);
scanf("%f", &score);
if (score == -1) {
m = i;
break;
}
if (score < 0 || score > 100) {
printf("输入的成绩无效,请重新输入!\n");
i--;
continue;
}
sum += score;
scores[i] = score;
}
float avg = sum / m;
float max = scores[0], min = scores[0];
int below_avg_count = 0;
for (int i = 0; i < m; i++) {
if (scores[i] > max) {
max = scores[i];
}
if (scores[i] < min) {
min = scores[i];
}
if (scores[i] < avg) {
below_avg_count++;
}
}
printf("最高分为:%.2f\n", max);
printf("最低分为:%.2f\n", min);
printf("低于平均分的人数为:%d\n", below_avg_count);
return 0;
}
```
在这段代码中,我们使用了一个数组 `scores` 来存储每个学生的成绩,同时使用了变量 `sum` 来记录所有成绩的总和。我们在输入时判断了输入的成绩是否为 -1,如果是,就表示输入结束,我们就可以把 `m` 赋值为当前的学生数量,从而退出输入循环。同时,我们也判断了输入的成绩是否为有效的范围(0 到 100 分之间),如果不是,就打印一条提示信息,让用户重新输入。
在统计最高分、最低分、低于平均分的人数时,我们遍历了 `scores` 数组,并使用了变量 `max` 和 `min` 来记录最高分和最低分,使用了变量 `below_avg_count` 来记录低于平均分的人数。最后,我们输出了统计结果。
希望这个回答能够解决你的问题。如果你有任何其他问题,都可以随时问我哦!
阅读全文