【发布时间】:2021-12-28 15:02:52
【问题描述】:
#include<iostream>
using namespace std;
int main(){
int i = 1;
int sum;
int N;
cout << "Enter a number N: ";
cin >> N;
while(i<=N)
{
if(i%2 == 0)
{
sum = sum + i;
}
else
{
i = i + 1;
}
}
cout << sum;
}
这是打印所有偶数的总和,直到 1 到 N。
当我尝试运行代码时,有人问我 N 的值,但前面没有打印任何内容。
【问题讨论】:
-
一旦遇到第一个偶数
i,您就不再增加i而是永远循环。 -
当
if()条件评估为true时,您能否将手指指向循环内递增i的确切行?附言无论如何,整个方法都是错误的。这是一个简单的数学公式。不需要循环来手动添加任何内容。这一定是来自无数网站之一的谜题,这些网站都有随机编码谜题列表,这些谜题依赖于数学技巧。如果你不知道诀窍是什么,生成的程序会因为耗时太长而失败,或者无法处理某些极端情况。 -
无论如何,你甚至不需要循环来解决这个问题。您正在计算算术级数的总和;有一个封闭式公式。
-
使用一些数学。和 1 + 2 + ... + N 是 N*(N+1)/2。偶数 2*1 + 2*2 + ... + 2*(N/2) 的和是 2 * (1 + 2 + ... + N/2)。
-
如果你真的想使用循环,生成偶数而不是寻找它们:
for (int i = 2; i < n; i += 2) sum += i;
标签: c++ loops visual-c++ error-handling sum