为了账号安全,请及时绑定邮箱和手机立即绑定

关于算法的输出图形问题

http://img1.sycdn.imooc.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");  

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

正在回答

1 回答

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

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

直角三角形

先在最后面加一个"}"

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

我再讲一遍流程:

从第一行开始,

输出三个空格,

输出一个*;

到第二行,

输出两个空格,

输出三个*;

······

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


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

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

7 回复 有任何疑惑可以回复我~
#1

黑巫 提问者

非常感谢!
2015-08-07 回复 有任何疑惑可以回复我~
#2

qq_呵呵哒_7

问下 等腰第一行不是输出4个空格 然后3 2 1 这样吗?j<5-i 第一次的时候i不是1吗?
2015-08-21 回复 有任何疑惑可以回复我~
#3

qq_呵呵哒_7 回复 qq_呵呵哒_7

还有j++ 循环一次j+1 循环到第3次的时候j=3 j<5-i i那时也等于3了啊5-3=2 怎么会小于
2015-08-21 回复 有任何疑惑可以回复我~
#4

浪漫步于云间

原来直角与等腰相差在这,感谢了
2015-11-20 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

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

进入课程

关于算法的输出图形问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信