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
相关产品推荐
相关产品推荐

