C++交替求和代码无输出问题:输入4预期输出2却无结果
问题排查与修正
核心问题:死循环
原代码的致命错误是在for循环内部修改了循环变量i,导致程序陷入死循环,永远执行不到cout<<sum;这一行,因此没有任何输出。
具体执行流程(以输入4为例):
- 初始
i=1,是奇数,执行i = -i,此时i=-1,sum累加-1(sum=-1)。 - 循环执行
i++,i变为0。 - 下一次循环
i=0<=4,进入循环,0是偶数,直接sum +=0(sum仍为-1)。 - 循环执行
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
相关产品推荐
相关产品推荐

