C#编写学生身高统计程序时最大最小值输出错误如何修复
错误原因
- 最大、最小值的判断逻辑完全写反:
原代码里判断max > h时更新max,实际应该是输入身高h大于当前max时才更新max;原代码判断h < max时更新min,实际应该是输入身高h小于当前min时才更新min。 - 最值初始值设置不合理:当前min、max都初始化为0,虽然身高场景下都是正数不会出大问题,但更通用稳妥的写法是将min初始化为double类型的最大值、max初始化为double类型的最小值,适配任意输入范围的场景。
- 循环计数器没必要用double类型,改用int即可避免不必要的浮点运算。
修改后的完整代码
Console.Write("Number of students in the group = "); int n = Convert.ToInt32(Console.ReadLine()); double result = 0; // 初始化最值:min初始为最大的double值,max初始为最小的double值 double min = double.MaxValue; double max = double.MinValue; // 循环变量改用int for (int i = 0; i < n; i++) { Console.Write("The height of {0} student (in cm): ", i + 1); double h = Convert.ToDouble(Console.ReadLine()); result += h; // 修正判断逻辑 if (h > max) max = h; if (h < min) min = h; } double average = result / n; Console.WriteLine("Average value = " + average); Console.WriteLine("Maximum value = " + max); Console.WriteLine("Minimun value = " + min);
内容的提问来源于stack exchange,提问作者xprercsion
相关产品推荐
相关产品推荐

