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

给定数n求其前所有正偶数之和的C++代码问题排查

问题根因

你的代码无法正常运行是因为出现了死循环:

  • for循环遍历到第一个偶数时,会进入内层while循环
  • while循环内部没有任何修改counter变量的逻辑,counter%2==0的判断条件永远成立
  • 程序会卡在这个位置无限重复累加当前的偶数值,无法继续执行后续逻辑

你原本的逻辑完全不需要嵌套两层循环,只需要在遍历到偶数时做一次累加即可。

修复代码(保留原循环思路)

把内层的while替换成单次判断的if即可:

#include<iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int sum = 0;
    for(int counter = 1; counter <= n; counter++) {
        if(counter % 2 == 0) {
            sum = sum + counter;
        }
    }
    cout << sum << endl;
    return 0;
}
更高效的实现方式

n以内的正偶数本身是公差为2的等差数列,直接用数学公式计算可以把时间复杂度降到O(1),不需要遍历:
等差数列和 = 项数 × (首项 + 末项) / 2,代入偶数的规律可以简化为sum = (n/2) * (n/2 + 1),代码实现如下:

#include<iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int even_count = n / 2;
    int sum = even_count * (even_count + 1);
    cout << sum << endl;
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:45:40