C语言for循环的镶嵌问题

img


我的思路是这样的,但好像不是很对,但运行下来有些小问题,不知道什么地方出现了问题

img


#include <stdio.h>

int main(void) { 
    int i,j;
    for(i=5;i>0;i--){
        //4->5
        for(j=1;j<=5-i;j++)
        printf(" ");
        for(j=1;j<=2*i-1;j++)
        //输出数字
        printf("%d", j);
        printf("\n");
    }
    return 0;
}

以行数为基准,行数决定每行输出多少,行数决定每行输出多少空格,由此可见,
行与数值的对应规则为:数值=11-2*行数
行与空格的对应规则为:空格=行数-1
然后写代码就可以啦。


#include <stdio.h>
#include <stdlib.h>

int main()
{

    for(int i=1;i<5||i==5;i++)
    {

        for(int s=i-1;s>=0;s--)
        {
            printf(" ");
        }
        
        int j=11-2*i;
        for(int k=1;k<j||k==j;k++)
        {
            printf("%d",k);
        }
        printf("\n");

    }

    return 0;
}