c语言for循环输出菱形遇到了问题

img

img


如图,问题是输出这个七行菱形,但是那个空格j和行i的关系不是恒等于j=4-i吗?为什么j的循环条件会是小于等于4-i然后j++,如果j从1开始加的话输出的j不是1,2,3,4这样吗,蓝笔是我认为的正确写法.....

你这外层for循环每次只是输出一行的空格和*号,所以最后要输出换行


#include <stdio.h>           
int main( )    
{    
    int i,j,n;  //n代表上三角行数   
    scanf("%d",&n);
    //先输出上三角    
    for(i=1;i<=n;++i) //输出n行    
    {    
        //输出第i行    
        for(j=1; j<=n-i; ++j) //输出n-i个空格    
            printf(" ");    
        for(j=1; j<=2*i-1; ++j) //输出2*i-1个星号    
            printf("*");    
        printf("\n");    
    }    
    //下面输出下三角    
    for(i=1;i<=n-1;++i) //输出n-1行     
    {    
        //输出第i行    
        for(j=1; j<=i; ++j) //输出i个空格    
            printf(" ");    
        for(j=1; j<=2*(n-i)-1; ++j) //输出2*i-1个星号    
            printf("*");    
        printf("\n");    
    }    
    return 0;       
}