使用整数除法计算非负整数平均值的程序超时问题求助
问题分析与修正
你的代码超时的核心原因是循环内没有读取下一个输入,导致程序一直重复处理第一个输入值,陷入死循环。除此之外还有两处逻辑错误:
存在的问题
- 死循环:
while循环体内没有执行positiveinput=Get next input,永远不会获取新的输入,无法终止循环 - 循环条件错误:题目要求统计非负整数(包括0),原代码
positiveinput > 0会跳过0,不符合需求 - 冗余计算:平均值在循环内反复计算完全没必要,应该在所有输入处理完成后再计算
修正后的代码
integer positiveinput integer Avg integer sumValues integer numValues integer maxValues sumValues = 0 numValues = 0 maxValues = 0 positiveinput=Get next input while positiveinput >= 0 numValues = numValues + 1 sumValues = sumValues + positiveinput if positiveinput > maxValues maxValues = positiveinput // 关键:循环内获取下一个输入,避免死循环 positiveinput=Get next input // 所有输入处理完后计算平均值 Avg = sumValues / numValues Put Avg to output Put " " to output Put maxValues to output
说明
- 把获取下一个输入的语句移到循环内部,确保每次循环都能读取新值,遇到负数时退出循环
- 循环条件改为
positiveinput >= 0,确保0被纳入统计 - 平均值计算放到循环结束后,只需要计算一次
内容的提问来源于stack exchange,提问作者Grace Fitz
相关产品推荐
相关产品推荐

