使用 while 语句编写程序,从键盘上连续输入多个学生的成绩,当输入-1时输入结束。编写程序统计输入成绩中有效成绩(0-100)的个数、最高成绩、最低成绩和平均成绩
时间: 2024-12-02 18:18:21 浏览: 0
学习笔记:java的键盘输入输出、if语句、循环结构
5星 · 资源好评率100%
当你需要使用 `while` 循环来实现这个功能时,首先你需要定义几个变量来存储成绩的相关信息(如计数器、最高分、最低分),然后在一个无限循环里获取用户的输入并进行判断。如果输入的是 -1,则跳出循环;否则,检查输入是否在有效范围内(0-100),对成绩计数并更新最高分和最低分。循环结束后计算平均成绩。
以下是一个简单的示例程序:
```c
#include <stdio.h>
int main() {
int count = 0;
double total_score = 0;
double highest_score = 0;
double lowest_score = 101; // 初始值大于任何可能的成绩
printf("请输入学生成绩 (-1 结束输入):\n");
while (1) {
double score;
scanf("%lf", &score);
// 检查输入是否合法
if (score == -1) {
break; // 输入-1,退出循环
} else if (score >= 0 && score <= 100) {
count++;
total_score += score;
highest_score = score > highest_score ? score : highest_score;
lowest_score = score < lowest_score ? score : lowest_score;
} else {
printf("无效输入!请输入0到100之间的分数。\n");
}
}
// 计算平均分
double average_score = total_score / count;
printf("有效成绩个数: %d\n", count);
printf("最高成绩: %.2f\n", highest_score);
printf("最低成绩: %.2f\n", lowest_score);
printf("平均成绩: %.2f\n", average_score);
return 0;
}
```
在这个程序中,我们用一个 `count` 变量记录有效成绩的数量,`total_score` 存储总分,初始 `lowest_score` 设置为较大的值以便后来被正确的分数所覆盖。
每次循环时,我们先读取一个分数,然后检查是否等于 `-1` 或者在有效范围内。如果是有效的,我们会增加计数、累加总分并更新最高分和最低分。如果输入不在有效范围,我们会提示用户重新输入。
当遇到 `-1` 或者所有成绩都已输入后,我们计算平均分并输出结果。
阅读全文