目录
一、打印线段图案
二、打印空心正方形
三、打印“X”形图案
//本篇文章所选题目来自牛客网
一、打印线段图案
对于上述问题,可以发现其要求就是:
输入的数为多少,打印的*就有多少
为了实现该要求,我们可以使用循环结构,即
输入的数为多少,就循环打印*多少次
当然,对打印循环次数的控制也有两种方法:
1. 创建一个以1为初始值的变量作为循环变量,来表示打印次数,每打印一次,使该变量的值+1,直到该变量的值与输入的数大小相同,循环终止。
2. 以输入的数为循环变量,来表示打印次数,每打印一次,使该变量的值-1,直到该变量的值减为0,循环终止。
当然,也可以用while语句来实现
方法1:
方法2:
二、打印空心正方形
相较于上一题而言,本题所需打印的图案不再只有一行了,但每一行图形的打印仍然可以用循环结构来实现。因此,在本题中,我们可以创建分别代表行数和列数的变量来进行打印。
通过分析题目,我们可以发现:
1.它的行数与列数相等,且都等于输入值
2.只有第一和最后一行需要每列都打印*,其余行都只需要第一和最后一列打印*
实践:
❗️ 注意:
如果打印出的图形有偏差,如
可以通过改变打印的空格数量
如“ ” →“ ” 或“*” →“* ”
来进行修改,使其成为正方形。
三、打印“X”形图案
与上题一样,我们可以分别创建代表行数和列数的变量来逐行进行打印。但问题在于,相较于上题明显的“第一行和最后一行为一种打印方式,其余行为另一种方式”而言,其每行的变化更为复杂。
但如果我们斜着来看:
以输入值6为例。图中黑色数字表示该符号的列数,蓝色为行数。
可以发现圈中的部分满足行数与列数相等的条件,也就是说,当行数等于列数时,我们打印“*”,就能打印出所圈出的部分。
那么另一部分呢?
仍以输入值6为例。可以看出所圈部分的符号满足“列数=(输入值 + 1)-行数”的条件,所以当该条件满足时,我们打印“*”
当上述两个条件都不满足时,我们打印空格“ ”来占位。
实践: