C#作业问题:成绩统计程序输入90、1、101时计数器为2原因咨询
问题原因
你的代码对第一次输入的成绩做了重复计数,对应你输入的90、1、101三个值,具体执行流程如下:
- 初始化
counter=0,第一次输入成绩90,外层if判断90≥60且不是101,counter变为1 - 进入
while循环(此时grade=90≠101,满足循环条件),循环内第一个if再次判断当前的grade=90符合要求,counter再次+1变为2 - 提示输入下一个成绩,输入1,grade更新为1
- 回到
while判断1≠101,进入循环,if判断1<60不计数,counter保持2 - 提示输入下一个成绩,输入101,grade更新为101
- 回到
while判断101不满足循环条件,退出循环,输出counter=2
修复方案
删除外层单独的if计数逻辑即可,同时循环内不需要重复判断grade是否为101,循环条件已经保证进入循环的成绩都是有效录入值,修改后代码如下:
int grade, counter = 0; Console.Write("Please enter a grade"); grade = int.Parse(Console.ReadLine()); while (grade != 101) { if (grade >= 60) { counter++; } Console.WriteLine("Please enter another grade, if you no longer wish to enter grades, enter '101' "); grade = int.Parse(Console.ReadLine()); } Console.WriteLine("There are " + counter + " grades that are over 60");
内容的提问来源于stack exchange,提问作者qKweint
相关产品推荐
相关产品推荐

