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

C++实现数字逐次累加至满足条件的最简方法及代码问题排查

C++逐次累加数字的最简实现及代码问题说明

问题原因

  • 你将inbetween_events的计算逻辑放在了for循环之外,仅初始化时用外层i=1计算过一次值,循环过程中没有重新计算,所以每次打印结果都是同一个固定值
  • 重复定义了同名变量i:外层定义的int i=1和for循环内定义的int i=1是两个独立的局部变量,循环内i自增不会对外层i产生任何影响,自然也不会更新inbetween_events的值

最简实现方案

要实现逐次累加event_occurence直到阈值,直接用基础循环累加即可,不需要引入STL容器或者额外算法,运算效率最高,逻辑也最直观。

修正后代码示例

#include <iostream>
int main()
{
    // 原有代码拼写错误已修正:curent_year → current_year
    int current_year = 2021;
    int input_year;
    const int event_occurence = 4;

    std::cout << "你第一次看世界杯是哪一年?" << std::endl;
    std::cin >> input_year;

    int max_events = (current_year - input_year) / event_occurence;
    int last_event = input_year + (max_events * event_occurence);
    int next_first_event = input_year + event_occurence;
            
    std::cout << "下一届世界杯在" << next_first_event << "举办……在此期间一共举办了" << max_events << "届世界杯,最近一届世界杯的举办年份是" << last_event << "。" << std::endl;

    std::cout << "期间举办的世界杯年份如下:" <<std::endl;
    // 累加写法,仅用基础加法运算,符合需求
    int event_year = next_first_event;
    for (int i = 1; i <= max_events; i++) {
        std::cout << event_year << std::endl;
        event_year += event_occurence;
    }
    return 0;
}

如果要沿用你最初的乘法思路,也可以把年份计算放在循环内部:

for (int i = 1; i <= max_events; i++) {
    std::cout << input_year + i * event_occurence << std::endl;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:24:04