为什么是 金字塔

来源:4-12 循环结构之多重循环

fuxi3901153

2016-08-31 23:12

#include <stdio.h>

int main()

{

    int i, j, k;

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

    {

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

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

        {

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

        }

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

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

        {

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

        }

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

    }

    return 0;

}

为什么是金字塔 而不是  

 ..............................................*

 ..............................................* * *

 ..............................................* * * * *

 ..............................................* * * * * * *

http://img.mukewang.com/57c6f477000155af03660159.jpg

写回答 关注

6回答

  • 源远流长d
    2016-09-28 13:39:49

    (j=i;j<5;j++)

    第一行:J和I一样大小初始为1 ,因为J<5,所以还可以进行循环  ,然后J++;之后J就被赋值为2,还是J<5继续J++;......直到J不满足J<5。

    到下一个for执行*,for的*数如上方法。

    父循环一次,子循环需要全部执行完,直到跳出循环;所以下面的子循环的两个for要全部循环完,才进行下一个父循环。

    第二行:J初始就为2了,如第一行求,来进行第二行的空格和*的数量。

    ....................


  • 慕粉3927957
    2016-09-04 16:47:47

    你如果把第一个for后面的j=i换成j=1,你就会得到你问的那个直角三角形

    慕粉3971...

    请问为什么呢?

    2016-09-17 14:06:42

    共 1 条回复 >

  • 慕后端9788028
    2016-09-01 15:17:22

    我看错了   是这样的  

  • 慕后端9788028
    2016-09-01 14:39:28

    接3>      i=i+1=3

    j=3

    j=3<5成立,输出空格

    j=j+1

    j=4<5输出空格

    j=j+1

    j=5=5不输出空格   

    执行for下一个语句

    0<3*2-1

    输出一个*

    k=k+1

    k=1<3*2-1=5输出一个*

    k=2<5输出一个*

    k=3输出一个*

    k=4输出一个*

    k=5不满足  结束子for循环

     同理  i=4依上运行

    当i=5时呢?不成立的哇   它只会输出金字塔的一半                        


  • 慕粉3904839
    2016-09-01 00:19:03

    1> i = 1   i<5 成立

    1 j=1  1<5  成立

    1 输出一个空格

    1 j+1=2

    2   2<5  成立

    2   输出一个空格

    2   j=2+1=3

    3   3<5  成立

    3   输出一个空格

    3   j=3+1=4

    4   4<5  成立

    4   输出一个空格 

    4   j=4+1=5

    5   5<5  不成立 执行下一个循环

    6   k=0  0< 2x1-1 成立

    6   输出一个 *

    6   k= 0+1=1

    7   1<2x1-1  不成立 执行下一个语句

    7   输出换行符   换行

    7   i=i+1= 2

    2>   i=2<5  成立

    1   j=2 2<5 成立

    1   输出一个空格

    1   j=2+1=3

    2   3<5 成立

    2   输出一个空格

    2   j= 3+1=4

    3   4<5 成立

    3   输出一个空格

    3   j= 4+1=5

    4   5<5 不成立  执行下一个循环

    5   k=0  0< 2x2-1 成立

    5   输出一个 *

    5   k = 0+1 =1

    6   k=1 < 2x2-1  成立                        以此类推,就完全看懂程序了


  • 慕粉3904839
    2016-09-01 00:17:14

    看for循环内部的第一个for循环,他就是输出空格用的

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926937 学习 · 21533 问题

查看课程

相似问题