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

C语言计算连续自然数差值异常:1-2-3-4-5得-15却应为-13

问题排查与解决

你的代码问题出在初始值设置和循环逻辑上:

  • 你把disp初始化为0,相当于计算的是0-1-2-3-4-5,结果自然是-15,但实际需求是从第一个数开始做减法,即1-2-3-4-5。
  • 循环里把第一个数也执行了disp = disp - i操作,这相当于多减了一次第一个数。

正确解法

调整初始值和循环范围:

  1. 将disp的初始值设为输入的最小数i,因为它是减法的起始被减数。
  2. 循环从i+1开始遍历到j,每次用disp减去当前的数。
  3. 输出时先打印第一个数,再在循环里打印减号和后续数字。

修正后的代码:

#include <stdio.h>

int main() {
    int i, j, disp;
    printf("Input smallest number: ");
    scanf("%d", &i);
    printf("Input highest number: ");
    scanf("%d", &j);
    
    disp = i; // 初始值设为第一个数
    printf("%d", i); // 先打印第一个数
    
    // 从第二个数开始遍历
    for (int k = i + 1; k <= j; k++) {
        disp -= k;
        printf(" - %d", k);
    }
    
    printf(" = %d", disp);
    return 0;
}

验证结果

输入最小数1,最大数5时,计算逻辑为1-2-3-4-5 = 1 - (2+3+4+5) = 1-14 = -13,符合预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:21:05