如何用单个for循环实现每行输出20个105-500的5倍数?
问题
需要用单个for循环输出105到500之间所有5的倍数,要求每行显示20个数字,且不允许使用第二个for循环。当前代码已实现数字连续输出,但无法控制每行20个的换行逻辑。
程序预期输出:
105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200 205 210 215 220 225 230 235 240 245 250 255 260 265 270 275 280 285 290 295 300 305 310 315 320 325 330 335 340 345 350 355 360 365 370 375 380 385 390 395 400 405 410 415 420 425 430 435 440 445 450 455 460 465 470 475 480 485 490 495 500
当前代码:
#include <iostream> using namespace std; int main() { int i, j; for(i = 105; i <= 500; i+=5) { std::cout << i << " "; } }
解决方案
添加一个计数器变量,在循环内统计已输出的数字个数,当个数达到20的倍数时执行换行操作,同时调整输出格式避免每行末尾多余空格:
#include <iostream> using namespace std; int main() { int i; int count = 0; // 计数器,记录已输出的数字数量 for(i = 105; i <= 500; i+=5) { count++; if(count % 20 != 0) { std::cout << i << " "; } else { std::cout << i << endl; } } return 0; }
逻辑说明
- 初始化
count变量为0,每次循环输出数字前先将count加1; - 判断
count是否为20的倍数:- 若不是,输出数字并后跟空格;
- 若是,输出数字并换行,刚好完成每行20个数字的排版;
- 整个过程仅使用单个
for循环,完全符合要求。
内容的提问来源于stack exchange,提问作者Audrey W.
相关产品推荐
相关产品推荐

