动手实践—— C语言——打印图案

目录

一、打印线段图案

二、打印空心正方形

三、打印“X”形图案

//本篇文章所选题目来自牛客网


一、打印线段图案

41e1ce441dae45d5a2a93a3f9167af90.png

 对于上述问题,可以发现其要求就是:

            输入的数为多少,打印的*就有多少

为了实现该要求,我们可以使用循环结构,

          输入的数为多少,就循环打印*多少次

当然,对打印循环次数的控制也有两种方法:

1. 创建一个以1为初始值的变量作为循环变量,来表示打印次数,每打印一次,使该变量的值+1,直到该变量的值与输入的数大小相同,循环终止。

210cc775bff442b99bbedadcb26307fd.png

eea4bca798d64d90afd32d433c206acb.png 

 

2. 以输入的数为循环变量,来表示打印次数,每打印一次,使该变量的值-1,直到该变量的值减为0,循环终止。

a33d39773d284e7ba2536ec2566f6d17.png 0aba45d3e5524afea62609c0f10e8759.png

 

当然,也可以用while语句来实现

方法1:

397fc7a814154198b4988f092d92b745.png

 方法2:

279ebf7483df42d4a9e0c3f91a9fea60.png

 二、打印空心正方形

4c53c3e902f74ca6941e6d57c1cfaec1.png

相较于上一题而言,本题所需打印的图案不再只有一行了,但每一行图形的打印仍然可以用循环结构来实现。因此,在本题中,我们可以创建分别代表行数和列数的变量来进行打印。

通过分析题目,我们可以发现:

1.它的行数与列数相等,且都等于输入值

2.只有第一和最后一行需要每列都打印*,其余行都只需要第一和最后一列打印*

实践:

a9c014b78d0b49e6a5e25fc48af34663.png

12f9e75345ed4c1cb8718e393cccbddc.png

c6bba31dc2e2418895b8e34adcf5b794.png 

❗️ 注意:

如果打印出的图形有偏差,如

21d6786634924dbeb4fd1cc135b9b5a0.png

可以通过改变打印的空格数量

如“ ” →“   ”    或“*” →“*  ”

来进行修改,使其成为正方形。

 

三、打印“X”形图案

2fcd3b5260a24174b38ef611681b8e98.png

与上题一样,我们可以分别创建代表行数和列数的变量来逐行进行打印。但问题在于,相较于上题明显的“第一行和最后一行为一种打印方式,其余行为另一种方式”而言,其每行的变化更为复杂。

但如果我们斜着来看:

7c30dff0ba67410cab231b69adf0fd5b.png

以输入值6为例。图中黑色数字表示该符号的列数,蓝色为行数。

可以发现圈中的部分满足行数与列数相等的条件,也就是说,当行数等于列数时,我们打印“*”,就能打印出所圈出的部分。

 

那么另一部分呢?

0bceea93954049fbb95de2d42e4a13c3.png

仍以输入值6为例。可以看出所圈部分的符号满足“列数=(输入值 + 1)-行数”的条件,所以当该条件满足时,我们打印“*”

当上述两个条件都不满足时,我们打印空格“ ”来占位。

实践:

332dd3c1de01409b969e35d601630c1d.png

1edb0352b77c4bc2bc9a3f4bdd3ba5b0.png 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值