从10之后的整数累加至接近1000的While循环代码问题求助
问题分析与解决方案
原代码的核心问题有两个:
- 初始值错误:
a设为10、i设为10,导致把10本身加入了累加,不符合“10之后的整数累加”的要求。 - 循环判断逻辑错误:仅判断累加前的
a是否小于1000,导致最后一次累加时,结果会直接超过1000。
方案一:累加至不超过1000的最接近值
如果要求结果不超过1000且尽可能接近,调整循环逻辑为先判断累加后是否超上限,再执行累加操作:
int i = 11; // 从10之后的第一个整数开始 int a = 0; // 初始累加和为0 // 先判断加上当前i后是否不超过1000,再执行累加 while (a + i <= 1000) { a += i; i++; } Console.WriteLine(a); // 输出最接近1000且不超过的累加和 Console.WriteLine(i); // 输出下一个未被累加的整数
方案二:取最接近1000的值(允许超过)
如果允许结果超过1000,只需要比较“当前累加和”与“加上下一个数后的和”哪个更接近1000,再决定最终结果:
int i = 11; int a = 0; int nextSum; while (true) { nextSum = a + i; if (nextSum > 1000) { // 比较两个值与1000的差距,选更近的那个 if (1000 - a < nextSum - 1000) { break; // 当前a更近,保留 } else { a = nextSum; // nextSum更近,替换 i++; } break; } a = nextSum; i++; } Console.WriteLine(a); Console.WriteLine(i);
内容的提问来源于stack exchange,提问作者Slepcho
相关产品推荐
相关产品推荐

