如何让for循环仅输出最终值?C++循环输出所有中间值问题求解
问题根因
你的输出语句cout << "Sum: " <<(sum =sum+i)<<endl;被放在了for循环内部的if (i % 3 == 0)分支中,每找到一个3的倍数完成累加后就会触发一次输出,因此会打印所有中间累加值。
修正方案
只需要把输出逻辑移动到for循环结束之后即可,同时优化了原有代码的不合理逻辑(输入提示位置错误、全局变量滥用),修正后完整代码如下:
#include <iostream> using namespace std; void findMultiples(int n){ int sum = 0; for(int i = 0; i <= n; i++) { if (i % 3 == 0) { sum += i; } } // 循环结束后仅输出一次最终结果 cout << "Sum: " << sum << endl; } int main() { int num; cout << "Enter a positive integer:" << endl; cin >> num; findMultiples(num); return 0; }
修改点说明
- 将sum变量从全局作用域移动到
findMultiples函数内部,避免不必要的全局变量污染 - 调整输入提示语句的位置到
cin之前,符合用户交互逻辑 - 循环内仅做累加计算,输出语句移到循环结束后,保证只打印最终求和结果
内容的提问来源于stack exchange,提问作者idkeverynameistaken
相关产品推荐
相关产品推荐

