为什么用c ++编写的这个基本while循环不起作用?

时间:2016-05-18 20:13:34

标签: c++

我试图通过解决Project Euler挑战来学习C ++。我目前停留在我的while循环不起作用的第一个项目。我已经看了半个多小时了,但是看不出任何问题,即使它非常基本。

#include <iostream>

int main() {
    int sum_3 = 0;
    int i = 1;

    while ( sum_3 < 1000 ) {
        sum_3 = sum_3 + (i * 3);
        i++;
        return sum_3, i;
   }

        std::cout << sum_3 << std::endl;
        return 0;
}

我正在尝试将每个数字加上3的倍数但小于1000的数字。我重新编写了程序,输入了打印语句以尝试排除故障,但我现在只是转圈

3 个答案:

答案 0 :(得分:7)

return关键字离开当前函数,而不仅仅是当前范围。

    return sum_3, i;

也不会做你认为它做的事情。您只能return一个对象。行编译的原因是C ++有一个,运算符,它在左边计算表达式,丢弃结果,然后在右边计算表达式。所以

    return sum_3, i;

只返回i

因为循环在main中,return也会结束程序。

您的代码可能应该如下所示:

while ( sum_3 < 1000 ) {
    sum_3 = sum_3 + (i * 3);
    i++;
}

答案 1 :(得分:0)

你不应该返回,除非你想要离开你的功能,在这种情况下是主要功能。

#include <iostream>

int main() {
    int sum_3 = 0;
    int i = 1;

    while ( sum_3 < 1000 ) {// I'd use a 'for' here, if I were you
        sum_3 += (i * 3); //is the same for sum_3 = sum_3 + (i * 3);
        i++;
   }

    std::cout << sum_3 << std::endl;
    return 0;
}

答案 2 :(得分:0)

什么需要小于1000?总数或个体倍数为3?

如果您想要的是总数不超过1000,那么只需删除该行&#34;返回sum_3,i&#34;你很高兴。

如果您想要的是将3的所有倍数相加,也小于1000(但总数可以超过1000),那么您还需要将while条件更改为&#34;(i * 3)&lt; 1000& #34;而不是&#34; sum_3&lt; 1000&#34;。