You need to enable JavaScript to run this app. C#实现两整数范围求和:代码运行结果不符合预期的修正咨询
优惠活动
大模型
产品
解决方案
定价
更多

C#实现两整数范围求和:代码运行结果不符合预期的修正咨询

代码问题定位与修正

你当前代码存在两处核心逻辑错误,直接导致输出结果和预期偏差:

  • 循环遍历范围完全错误。现有循环逻辑为i从0开始,遍历到startNumber就停止,也就是当你输入startNumber=12时,实际累加的是0到12的整数和,计算得0+1+2+…+12=78,和你观察到的错误输出完全吻合,完全没有遍历从startNumber到endNumber的目标区间。
  • 缺失你最初要求的正反序输入适配逻辑。代码没有对startNumber和endNumber的大小做判断,一旦输入的起始值大于结束值,循环的终止条件将永远不满足,最终累加结果会一直为0。

修正后可正常运行的代码

调整两处核心逻辑:输入完成后先判断两值大小,若起始值大于结束值则交换;将循环的起点从0改为startNumber,终止条件调整为遍历到endNumber;原代码循环内部的逐值打印属于调试语句,按需保留即可:

private void SumNumbers()
{
    int startNumber, endNumber;
    Console.WriteLine("\nplease enter a start number: ");
    startNumber = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("\nplease enter an end number: ");
    endNumber = Convert.ToInt32(Console.ReadLine());

    // 自动交换大小值,适配任意输入顺序
    if (startNumber > endNumber)
    {
        int temp = startNumber;
        startNumber = endNumber;
        endNumber = temp;
    }

    int result = 0;
    // 从起始值遍历到结束值完成累加
    for (int i = startNumber; i <= endNumber; i++)
    {
        result += i;
        // 调试语句:逐行打印当前遍历的整数值,不需要可删除
        // Console.WriteLine(i);
    }

    Console.WriteLine($"The sum of Numbers between {startNumber} and {endNumber} is: {result}");
    Console.ReadLine();
}

修正后验证:当你输入起始数12、结束数23时,实际累加区间为12到23,根据等差数列求和公式计算结果为(12+23)*12/2=210,和预期结果一致;哪怕你输入的起始值大于结束值,代码也会自动交换两个值完成正确计算。


内容的提问来源于stack exchange,提问作者Kevin Sted

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 10:15:03