C语言实现打印菱形代码

如果我们想输出一个菱形的图案,就像下面的这样:

f3e5856cc047497f83f242c027145e53.png

等你学会之后,这样的菱形就可以随便搞定啦,大小可以按照需求自己决定,我们先来搞清楚它的实现逻辑。(前半部分是代码解析,完整的代码在最后)

我们可以观察一下,图中组成菱形的元素一共就两种,一种是可以看见的'*',还有一种就是看不见的空格。

首先呢,这样的一个菱形,我们需要分成上下两部分来依次打印。其实如果你去数的话会发现,它的上半部分和下半部分好像不能对半分,如果是这样的话,那以图中的这个菱形为例,一共有13行,我们就将前7行定为上半部分,后面的6行定为下半部分。所以我们就需要定义一个变量line,来存放我们的行数。然后我们再来看一下有没有规律可循。

f60d8e8b1ac44d3ab2fcb5a6e3b7c288.png

那每一行空格的数量和星星的数量我已经在图中标出来了。首先上半部分有7行,这个我们可以用for循环来实现,然后接下来我们就要打印空格了,图中也是前面一串空格,然后后面才是'*'。

bb2d8c6a276544d7a5f17a7bc38a680f.png

空格的数量依次是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。

155e464660164d16bd72090fdadc387d.png

接下来给大家解释一下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个星星。

……
后面的还是一样的道理。

注意:不要忘了每行结束后要换行哦。这是菱形上半部分的代码:

4c4b30e3eb4c4a69a7efb21e6f235a5a.png

其实下半部分和上半部分差不多,就是循环的条件需要改一下,上半部分空格和星星的值都是在增加,而下半部分它们的值都在减少。下半部分比下半部分少一行,所以循环的次数就是line-1次。

然后我们来看空格的数量依次是1 2 3 4 5 6

d45491e9d9944642a05140698c24874e.png

第一行(这里是下半部分的第一行,不是整体的):

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

e47a2d4306394acfba864988e7987f0c.png

给大家解释一下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个星星。

剩下的也是一样的道理。这是下半部分的代码:

5449df44139d471486a2f7c6d1b84824.png

 完整代码如下:

c64a1cfb5eeb4f33944fea6820a5007b.png

此次的分享到此为止 ,希望能够对你有帮助哦!

  • 29
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值