三、图案输出问题!!
对于图案输出问题,一定要把握它的规律!!即如何通过循环语句实现,或者控制循环次数。
话不多说,先看一个简单的!
思路:
输出一个直角三角形,输入一个整数n,就会输出一个由n行 * 组成的直角三角形,且第一行有一个* ,第二行有两个* ........
!! ! 那么由此可见,假设输出n=4,那么就会输出一个四行,四列的直角三角形,且每行的个数 与处于第几行 的值 相等。
代码如下:
#include<stdio.h> int main() { int n=0; while(scanf("%d",&n)!=EOF)//针对多组输入的题目 { for(int i=1;i<=n;i++) //第一个for循环是,循环几行。 { for(int j=1;j<=i;j++)//第二个for循环是一行循环几个 { printf("* "); } printf("\n"); } } return 0; }
所以,找到规律很重要,并且通过规律来控制它的循环次数!接下来,看一个难一点的!
题目链接:
思路:
首先图形是由空格和✳号构成,我们可以直观的看出,空格数为2的倍数,✳是由一开始,每次增加一。
当输出n=2时,共输出5行,那我们就可以拆开来看
第一部分,第一个循环控制行,第二个循环控制输出!
for(int i=0;i<=n;i++) //输出n,来第一部分控制行数。输出三行! { for(int j=1;j<=2*n-2*i;j++) //控制空格数,第一行输出四个,第二行两个,第三行0. { printf(" "); } for(int j=1;j<=i+1;j++) //控制✳号数,第一行输出一个,第二行两个,第三行三个。 { printf("*"); } printf("\n"); //每输出完一行,需要换行。 }
重点在循环中的终止条件!(j<=2*n-2*i)。
第二部分,第一个循环控制行,第二个循环控制输出!
for(int i=1;i<=n;i++) //只需输出两行(n行) { for(int j=1;j<=2*i;j++) //第一行空格数为2,第二个空格数为4. { printf(" "); } for(int j=1;j<=n-i+1;j++) // 第一行星号数位2,第二行数为1. { printf("*"); } printf("\n"); //每输出一行,需要换行。 }
同理可得:第一部分:输出行数:n+1.
第二部分:输出行数 :n.
注意:在第一部分和第二部分中间衔接的时候,星号数是依次减小。
总代码:
#include<stdio.h> int main() { int n=0; while(scanf("%d",&n)!=EOF) { for(int i=0;i<=n;i++) { for(int j=1;j<=2*n-2*i;j++) { printf(" "); } for(int j=1;j<=i+1;j++) { printf("*"); } printf("\n"); } for(int i=1;i<=n;i++) { for(int j=1;j<=2*i;j++) { printf(" "); } for(int j=1;j<=n-i+1;j++) { printf("*"); } printf("\n"); } } return 0; }
好好思考以后,肯定也有所收获了吧! 那就趁热打铁吧!
总结
相信大家看完以后,也看懂了! 那么这期的C语言入门刷题基础知识点就到这里啦!!
是不是觉得不够,内容太少?
那么就期待下期我们再见吧!!记得三连哦,别到时候找不到俺!