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

关于算法的输出图形问题

http://img.mukewang.com/55c345df000182dc00670067.jpg

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

    {

        

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

        {

            printf(" ");    

        }

        

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

        {

            printf("*");   /

        }

        printf("\n");  

划线部分求解析,越详细越好

提问者:黑巫 2015-08-06 19:37

个回答

  • qq_无名氏_6
    2015-08-06 21:44:17
    已采纳

    兄弟,我好心帮你,你要认真全部看完

    你这是要输出直角三角形吗?如果是,请往下看;如果不是,请看下一段。

    直角三角形

    先在最后面加一个"}"

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

    这个for语句是控制行数的,表示一共要输出几行。

    i=1表示从第一行开始

    i<5表示没输完四行时

    执行循环体

    i++表示循环完一遍后i+1

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

    这个for语句是控制空格数的,表示要输出几个空格。

    j=1表示将要输出第1个空格

    当j<5时

    (<5表示一共要输出4个空格,则j<5表示当没输完四个空格时执行循环体)

    输出一个空格

    j++表示循环完一遍后j+1

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

    就是用来控制输出几个*号

    k=1表示将要输出的是第1个*

    因为k是从0开始,所以<2*i-1表示一共要输出2*i-1个*

    k<2*i-1表示当要输出的*没输完时

    输出*

    k++表示k+1

    我再讲一遍流程:

    从第一行开始,

    输出四个空格,

    输出一个*;

    到第二行,

    输出四个空格,

    输出三个*;

    ······

    以此类推,最后就会输出一个直角三角形。(当然,每一行多出了四个空格)


    等腰三角形

    先把for(j=1;j<5;j++)改成for(j=1;j<5-i;j++)

    再在最后面加一个“}”

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

    这个for语句是控制行数的,表示一共要输出几行。

    i=1表示从第一行开始

    i<5表示没输完四行时

    执行循环体

    i++表示循环完一遍后i+1

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

    这个for语句是控制空格数的,表示要输出几个空格。

    j=1表示将要输出第1个空格

    当j<5-i时

    (<5-i表示这一行共要输出的空格数,则j<5表示当没输完5-i个空格时执行循环体)

    输出一个空格

    j++表示循环完一遍后j+1

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

    就是用来控制输出几个*号

    k=1表示将要输出的是第1个*

    因为k是从0开始,所以<2*i-1表示一共要输出2*i-1个*

    k<2*i-1表示当要输出的*没输完时

    输出*

    k++表示k+1

    我再讲一遍流程:

    从第一行开始,

    输出三个空格,

    输出一个*;

    到第二行,

    输出两个空格,

    输出三个*;

    ······

    以此类推,最后就会输出一个等腰三角形。


    好了,这是我一个小时的心血,如果你觉得好,就支持一下,鼓励一下,采纳一下吧。

                                                                                                                          ——————一个志同道合者