问答详情
源自:4-12 循环结构之多重循环

空格不对劲啊

既然   每行输出的空格数等于(最后一行*号数减去当前行的*号数)除2

但是他的参考代码,第一次循环的空格有4个,第二次3个

而第一行1个星,最后一行7星,(7-1)/2=3空格

   第二行3星,(7-3)/2=2空格

为什么出现这种情况呢 

提问者:qq_慕容7515796 2019-12-04 21:09

个回答

  • 无厘头的苏
    2019-12-18 15:40:20

    我们通常思维是你这样的,画一个图形需要对称。但是这个输出是从左到右的文本,又由于是正三角形,左右对称,所以只要关心左侧空格的占位,不用关心右侧的空格数量。
    可以把空格替换成其他字符串帮助理解。
    这里第一行有四个空格是为了满足第四行有一个空格,不然其实第一行3个空格就能实现了。
    http://img.mukewang.com/5df9d795000156e112260434.jpg

  • qq_慕姐5361656
    2019-12-12 17:19:10

    #include <stdio.h>

    int main()

    {

        int i, j, k;

        for(i=1; i<5; i++)

        {

            /* 观察每行的空格数量,补全循环条件 */

            for(    i=1 ;  i<=4-i ;  i--  )  

            {

                printf(" ");    //输出空格

            }

            /* 观察每行*号的数量,补全循环条件 */

            for( j=1 ;  j<=2*i-1 ;  j++     ) 

            {

                printf("*");   //每行输出的*号

            }

            printf("\n");     //每次循环换行

        }

        return 0;

    }