目录
一、题目相关
在对于初学C语言的我来说,对于图形打印一直都有一种未知的恐惧,大家是否跟我一样在开始对于图形的打印只是一味的运用printf()傻傻的将其打印出来,而非去考虑是否可以运用循环和其它的手段解决问题。其实只有我们经过思考,运用循环去解决图形打印,就可以达到做一道题,会一类题的效果,这次我会带大家,详细的介绍我是如何去理解图形打印这一类题,这次我们根据上次的题目再次进阶的看下一道题目。
二、题目链接
三、题目
题目描述:
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转直角三角形图案。
输入:
多组输入,一个整数(2~20),表示翻转直角三角形直角边的长度,即“*”的数量,也表示输出行数。
输出:
针对每行输入,输出用“*”组成的对应长度的翻转直角三角形,每个“*”后面有一个空格。
样例:
输入:5
输出:
* * * * *
* * * *
* * *
* *
*
输入:6
输出:
* * * * * *
* * * * *
* * * *
* * *
* *
*
四、题目分析
首先给大家重新画一个更加形象的图,便于大家的理解!!!!
通过上图我们可以发现,想要循环打印出此图,我们可以从,行数和列数来进行分析,可以用一个循环来控制行数,一个循环来控制列数。
(1)第一个循环控制行数
for (int i = 1; i <= 5; i++) //用来控制行数
(2)注意:第二个循环需要嵌套在第一个循环里来控制列数,例如:当 i=1 是表示进入第一个行,之后的第二个循环表示:第一行的四列是如何表达的。随后第二行、第三行、第四行同理。最后再根据下图找出列数的规律。
用代码表示为:
for (int i = 1; i <= x; i++) //用来控制行数
{
for (int j = 1; j <= (x - i + 1);j++) //用来控制列数
{
}
}
(3)最后按照题意,在第二个循环后加入:“* ”
for (int i = 1; i <= x; i++) //用来控制行数
{
for (int j = 1; j <= (x - i + 1);j++) //控制列数
{
printf("* "); //每行打印特定的*
}
printf("\n"); // 每行打印完后进行换行
}
五、AC代码
#include <stdio.h>
int main()
{
int x;
while (scanf("%d", &x) != EOF) //连续输出
{
for (int i = 1; i <= x; i++) //用来控制行数
{
for (int j = 1; j <= (x - i + 1);j++) //控制列数
{
printf("* ");
}
printf("\n");
}
}
return 0;
}
AC的样例图
六、共勉
1.如果大家看到我的打印图形详解,有什么不足或者不懂的地方,我们可以在评论区讨论,后期我会不断的更新更加进阶的图形打印,请大家持续关注我哦!
2.如果想要更多的打印图案讲解,请进入这个专项训练哦:(161条消息) 图形打印专项训练_sunny-ll的博客-CSDN博客