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

想用双重循环实现输出正三角形,按照如下参考代码的写法,每行的输出的空格数不就是固定的了吗?


想用双重循环实现输出正三角形,按照如下参考代码的写法,每行的输出的空格数不就是固定的了吗?


1、为什么会形成图示三角形呢?求解答

2、我的代码

#include <stdio.h>

int main()

{

    int i, j, k;

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

    {

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

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

        {

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

        }

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

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

        {

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

        }

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

    }

    return 0;

}

这样运算对不对?

正在回答

4 回答

哈哈  楼上的大神们可能没有懂楼主的意思  其实我刚开始也是认为  

每行的输出的空格数是固定的  其实不然!


那是因为你把j=i 看成了 j=1    


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

落叶伤剑

另外楼主那个自己的运算应该也是对的 我验证了一下 好像可以的
2016-10-09 回复 有任何疑惑可以回复我~
#2

qq_缱绻流年_03682441 提问者

原来如此!发现问题了,谢谢你~
2016-10-19 回复 有任何疑惑可以回复我~

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

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

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

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

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

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


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

空格的输出是一个子循环;

第一次i=1,j=i=1,空格输出4个;

第二次i=2,j=i=2,空格输出3个;

以此类推

第四次i=4;j=i=2,空格输出1个;

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

慕后端9788028

那也不会是金字塔三角型啊?应该是一半才对啊
2016-09-01 回复 有任何疑惑可以回复我~

对的呀..http://img1.sycdn.imooc.com//579703c100013bcd01100135.jpg

不用管面板检测给的结果,那个检测逻辑太死...

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

举报

0/150
提交
取消

想用双重循环实现输出正三角形,按照如下参考代码的写法,每行的输出的空格数不就是固定的了吗?

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