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

不懂这个代码的意思

谁能给我详细的解释一下

正在回答

1 回答

作为新手,我觉得这题难在我们将目标定在了“打印一个三角形”,而不是实现三个条件。

换一种思路,首先我们定义的是i=第几行,j=输出几个空格,k=输出几个星星。这样以来解决的方法就是

1、定义i最大4行,所以i是用i<5; i++。

2、然后j每行要输出多少个空格,第一行4个,第二行3个,第三行2个,第二行1个,所以解决方法是初始定义j=i(第一行就是j=1),然后定义条件<5(因为我们的目的是第一行输入4空格,第二行输入3,第三行2,第四行1,这样当第一行的时候,j=1,没满足5,就可以循环+3次,一共4个空格,以此类推)

3、定义k是输出的星星,因为空格已经由j输出好了,所以根据要求,第一行1个星星,第二行3个,第三行5个,那么k就可以用初始为0,当这个值小于行数*2-1时,K就加一个,你可以反向算一下,第一行是行数是1,k的0<1,所以k+1,那么第一行输入一颗星,第二行行数是2(2(2-1=3),所以k=3颗星。

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

qq_慕神9428023

首先谢谢解答了,看的很明白 “那么第一行输入一颗星,第二行行数是2(2(2-1=3),所以k=3颗星” “for(k=0;k<2*i-1;k++)” 这里如果k=2时,i=?了 “2(2(2-1=3)” 还有您的解释这里,(2-1=3),这里该怎么理解了
2019-03-30 回复 有任何疑惑可以回复我~
#2

小机灵鬼er 回复 qq_慕神9428023

那是(2*2)-1
2019-03-30 回复 有任何疑惑可以回复我~
#3

qq_慕神9428023 回复 小机灵鬼er

好的,非常感谢
2019-04-01 回复 有任何疑惑可以回复我~
#4

weixin_慕工程0489572

为什么j=i而不是j=1呢
2019-04-01 回复 有任何疑惑可以回复我~
#5

慕UI7253451 回复 weixin_慕工程0489572

可能是因为想要使输出空格的个数逐行递减,而循环里面的处理方法是不变的,就势必有一个在变化的量使得空格的输出次数减少,当j=i时,即可满足每次执行输入空格的操作时输入的空格少一个,大概是这样吧我也是新人
2019-04-16 回复 有任何疑惑可以回复我~
#6

无名指的星光

这个回答时我看得最明白的,非常感谢答主!!!
2019-04-18 回复 有任何疑惑可以回复我~
查看3条回复

举报

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

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

进入课程

不懂这个代码的意思

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