我刚刚开始C ++编程三天了,我无法弄清楚如何完成这个练习。基本上,我想将所有3和5的倍数加在1000以下。这是我的代码:
int sum3n5(int max){
int sum = 0;
for(int i = 1; i <= max; ++i){
if( i%3 == 0 && i%5 == 0 ) { sum += i;}
else if( i%3 == 0 || i%5 == 0 ) { sum +=i;}
return sum;
};
};
很抱歉,如果这是一个微不足道的错误,我没有意识到。 运行之后我总是得到结果0。
答案 0 :(得分:3)
int sum3n5(int max){
int sum = 0;
for (int i = 1; i <= max; ++i){
if( i % 3 == 0 || i % 5 == 0 ){
sum += i;
}
}
return sum;
}
您只需要||
(逻辑或)运算符,而不是&&
(当然不是两者!)。 <{1}}需要在 for循环之后,以便循环可以在函数返回之前完成。
答案 1 :(得分:1)
没有循环的版本:
int sum3n5(int max)
{
return 3 * (max / 3) * (max / 3 + 1) / 2
+ 5 * (max / 5) * (max / 5 + 1) / 2
- 15 * (max / 15) * (max / 15 + 1) / 2;
}
它使用了1 + 2 + .. + n == n * (n + 1) / 2