You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言计算两数区间和代码start输出异常,如何恢复为原始输入值

问题原因

你代码中的累加循环直接修改了start变量本身,每轮循环执行++start操作,当循环结束时start的值已经变为end + 1,因此最终打印的不是最初输入的起始值。

修复方案

有两种常用的修复思路:

  • 思路1:新增临时变量用于循环累加,不修改原始的start取值,你代码中已经定义了未使用的i变量,可以直接用来做循环计数,同时可以删除没有实际作用的外层while(1)嵌套。
  • 思路2:新增变量存储原始输入的start值,循环依然修改原start变量,打印时输出存储的原始值即可。
修复后完整代码(思路1示例)
int main() 
{
    int start, end;
    int sum = 0;
    int i;
    start = 0;
    printf("Start integer: ");
    scanf("%d", &start);
    printf("\nEnd integer: ");
    scanf("%d", &end);

    // 用i做循环计数,不修改原始start的值
    for(i = start; i <= end; i++){
        sum += i;
    }

    printf("The sum between %d and %d is %d\n", start, end, sum);
    return 0;
}
修复后完整代码(思路2示例)
int main() 
{
    int start, end, raw_start;
    int sum = 0;
    start = 0;
    printf("Start integer: ");
    scanf("%d", &start);
    raw_start = start; // 存储原始输入的起始值
    printf("\nEnd integer: ");
    scanf("%d", &end);

    while(start <= end){
        sum += start;
        ++start;
    }

    printf("The sum between %d and %d is %d\n", raw_start, end, sum);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:36:03