如何在嵌套循环中使用变量打印指定字符组成的矩形图案
字符矩形打印代码问题修正
原代码存在的问题
- 循环边界错误:使用
<=作为循环终止条件,从0开始计数的循环会比目标数量多输出1次,最终多打印1行、1列。 - 打印逻辑冗余:外层循环内部先执行了一次
printf("%c ",c);,再运行内层循环会导致每行字符数比预期多1个。 - 行列控制颠倒:常规变量定义中
w代表宽度(每行字符数,对应内层循环)、h代表高度(总行数,对应外层循环),原代码的循环控制逻辑和变量含义相反,容易出现行列数不符的问题。
修正后代码
假设h为目标行数、w为目标每行字符数、c为要打印的字符,修正后逻辑如下:
int i, j; // 外层循环控制行数,共输出h行 for(i = 0; i < h; i++) { // 内层循环控制每行输出w个字符 for(j = 0; j < w; j++) { printf("%c ", c); } // 单行输出完成后换行 printf("\n"); }
比如设置h=3、w=5、c='L',运行后即可得到预期的输出效果:
L L L L L L L L L L L L L L L
内容的提问来源于stack exchange,提问作者Oss Jr.
相关产品推荐
相关产品推荐

