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

C++交替求和代码无输出问题:输入4预期输出2却无结果

问题排查与修正

核心问题:死循环

原代码的致命错误是在for循环内部修改了循环变量i,导致程序陷入死循环,永远执行不到cout<<sum;这一行,因此没有任何输出。

具体执行流程(以输入4为例):

  1. 初始i=1,是奇数,执行i = -i,此时i=-1,sum累加-1(sum=-1)。
  2. 循环执行i++,i变为0。
  3. 下一次循环i=0<=4,进入循环,0是偶数,直接sum +=0(sum仍为-1)。
  4. 循环执行i++,i变回1,回到第一步状态,无限循环。

修正方案

不要修改循环变量i,而是根据i的奇偶性决定累加的数值:

#include <iostream>
using namespace std;

int main() {
    int n; cin>>n;
    int sum = 0;
    for(int i = 1;i<=n;i++){
        if (i%2 != 0){
            sum -= i; // 奇数项减i,等价于加(-i)
        } else {
            sum += i; // 偶数项加i
        }
    }
    cout<<sum;
    return 0;
}

也可以用更简洁的三元表达式写法:

#include <iostream>
using namespace std;

int main() {
    int n; cin>>n;
    int sum = 0;
    for(int i = 1;i<=n;i++){
        sum += (i % 2 == 0 ? i : -i);
    }
    cout<<sum;
    return 0;
}

输入4时,运行结果为2,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:35:20