【C语言】BC102 带空格直角三角形图案(DAY 9)

原题题目

题目传送门
在这里插入图片描述

代码实现

#include<stdio.h>
int main()
{
    int n=0;
    while (scanf("%d",&n)!=EOF)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n-i-1;j++)
            {
                printf("  ");
            }
            for(int j=0;j<=i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

重点突破

在这里插入图片描述
在这里插入图片描述
如果把题目想象成在一个正方形中,那么该题要打印的就是屏幕右边的三角形。如何打印?首先观察到,以输入5为例,第一行有四个空格,第二行三个,第三行两个,第四行一个,所以应该是有两个循环在我们的循环体里面。第一个负责打印空格,第二个负责打印* 并且二者是并列关系。
经过多次尝试,发现第一次循环,for i<n,n是输入,当从0开始的i小于n时,开始开始一个大循环,其次要输出空格。什么条件才能以此减少?重点!依次!所以说随着循环次数的增加,打印的越来越少,说明要减去一个一直在增加的量,那么这个量就很有可能是我们的j,j从0开始 j<n-i-1;随着i的增大,n-i-1是一直减小的,符合我们的循环条件。这个循环条件其实可以多试几次,比如n-i不行就试试n-i-1或者n-i+1。

同类题通解

对比这两道题:
BC100直角三角形图案
BC101反转直角三角形图案
不难发现!其实三道题是一个类型的,都是跟循环有关,横向对比:
BC100:
在这里插入图片描述
BC101
在这里插入图片描述
不难看出,只有循环是不同的,改变循环条件,即可得到不一样的循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张学恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值