如果我们想输出一个菱形的图案,就像下面的这样:
等你学会之后,这样的菱形就可以随便搞定啦,大小可以按照需求自己决定,我们先来搞清楚它的实现逻辑。(前半部分是代码解析,完整的代码在最后)
我们可以观察一下,图中组成菱形的元素一共就两种,一种是可以看见的'*',还有一种就是看不见的空格。
首先呢,这样的一个菱形,我们需要分成上下两部分来依次打印。其实如果你去数的话会发现,它的上半部分和下半部分好像不能对半分,如果是这样的话,那以图中的这个菱形为例,一共有13行,我们就将前7行定为上半部分,后面的6行定为下半部分。所以我们就需要定义一个变量line,来存放我们的行数。然后我们再来看一下有没有规律可循。
那每一行空格的数量和星星的数量我已经在图中标出来了。首先上半部分有7行,这个我们可以用for循环来实现,然后接下来我们就要打印空格了,图中也是前面一串空格,然后后面才是'*'。
空格的数量依次是6 5 4 3 2 1 0,它每行都是变化的,那我们也需要一个变化的值来控制它,那 i 就是那个天选之子。给大家解释一下j<line-1-i这个表达式。
line=7;(这里line的值可以按照自己的需求自行输入)
第一行:
i=0,0<7, 满足条件进入循环。
j=0,j<7-1-0(j<6),0~6,这个循环就循环6次,输出6个空格。
第二行:
i=1,1<7,满足条件进入循环。
j=0,j<7-1-1(j<5),0~5,这个循环就循环5次,输出5个空格。
第二行:
i=2,2<7,满足条件进入循环。
j=0,j<7-1-2(j<4),0~4,这个循环就循环4次,输出4个空格。
……
后面的还是一样的道理。
然后我们再来看这个星星有什么规律。
星星的数量变化依次是1 3 5 7 9 11 13,它也是每行都在变化,那我们还是需要另一个变化的值来控制它,那么这次的这个天选之子,没错,还是i。
接下来给大家解释一下j<2*i+1这个表达式 。
第一行:
i=0,0<7,满足条件进入循环。
j=0,j<2*0+1 (j<1) ,0~1,这个循环就循环1次,输出1个星星。
第二行:
i=1,1<7,满足条件进入循环。
j=0,j<2*1+1 (j<3) ,0~3,这个循环就循环3次,输出3个星星。
第三行:
i=2,2<7,满足条件进入循环。
j=0,j<2*2+1 (j<5) ,0~5,这个循环就循环5次,输出5个星星。
……
后面的还是一样的道理。
注意:不要忘了每行结束后要换行哦。这是菱形上半部分的代码:
其实下半部分和上半部分差不多,就是循环的条件需要改一下,上半部分空格和星星的值都是在增加,而下半部分它们的值都在减少。下半部分比下半部分少一行,所以循环的次数就是line-1次。
然后我们来看空格的数量依次是1 2 3 4 5 6
第一行(这里是下半部分的第一行,不是整体的):
i=0,0<6, 满足条件进入循环。
j=0,j<=0,0<=0,满足条件,这个循环就循环1次,输出1个空格。
第二行:
i=1,1<6, 满足条件进入循环。
j=0,j<=1,0<=1,满足条件,这个循环就循环2次,输出2个空格。
其余的还是一样的道理。
我们再来看星星的数量变化:11 9 7 5 3 1
给大家解释一下j<(2*(line-1-i))-1 这个表达式:
line是7,line-1就是6
第一行:
i=0,0<6, 满足条件进入循环。
j=0,j<(2*(6-0))-1 ,0<11,这个循环就循环11次,输出11个星星。
第二行:
i=1,1<6, 满足条件进入循环。
j=0,j<(2*(6-1))-1 ,0<9,这个循环就循环9次,输出9个星星。
剩下的也是一样的道理。这是下半部分的代码:
完整代码如下:
此次的分享到此为止 ,希望能够对你有帮助哦!