我试图通过解决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的数字。我重新编写了程序,输入了打印语句以尝试排除故障,但我现在只是转圈
答案 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;。