亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

我想知道為什么答案那種寫法可以在第一行第三位輸出*其他輸出空格 第二行也是為什么它可以排成一個正三角形

我想知道為什么答案那種寫法可以在第一行第三位輸出*其他位置輸出空格? 第二行也是為什么它可以排成一個正三角形

正在回答

6 回答

???niu

0 回復 有任何疑惑可以回復我~

謝謝大佬

0 回復 有任何疑惑可以回復我~

? ?厲害了,大佬,剛剛開始還一臉蒙蔽

0 回復 有任何疑惑可以回復我~

太棒了!大佬大佬!

0 回復 有任何疑惑可以回復我~

謝謝大佬,祝大佬在代碼路上越走越遠!

2 回復 有任何疑惑可以回復我~
#1

Penthesilea

其實我剛上來也沒不理解這題怎么整,就是根據版主提的問題一點一點想:這題是怎么回事,然后就把想的時候的思路卸下來了。
2020-10-13 回復 有任何疑惑可以回復我~

你想問的是答案為什么正確,為了搞清楚答案為什么正確,我們先來看 i , j , k,三個變量分別負責什么,i由題中給出

i=1, i<5 , i++,也就是i={1,2,3,4 ;i=N}, 我們先不把輸出目標看成是圖形,把他看作是4行字,只是每行的對齊方式不太一樣,拆開來看,i負責的就是整個輸出目標的行數,i=1就是第一行,i=2就是第二行,好,那么我們下來要確定什么呢?http://img1.sycdn.imooc.com//5f802ee90001fb8f04570417.jpg

可以看出,題目提示了,for子循環1,是為了打空格http://img1.sycdn.imooc.com//5f802ff90001febc00690064.jpg觀察一下這個圖片,如果從第四行的第一個“*”開始,到第四行第四個“*”(第一行“*”在第四行的投影),一共需要打三個空格,然后因為第四行開頭還有一個空格(圖片是白色的,也就是第一格是從圖片邊緣開始的,而不是從星號開始的),加起來第一行需要打4個空格。

那么現在就確定了第一行一共需要,4個空格,1個“*”,(一共5個字符)

同理,第二行需要3個空格,3個“*”,(一共6個字符)

第三行需要2個空格,5個“*”(一共7個字符)

第四行需要1個空格,7個“*”(一共8個字符)

我們用 j 來表示空格的個數, k來表示“*”的個數(具體用哪個看你喜歡)

j={4,3,2,1}, k={1,3,5,7},他們和i={1,2,3,4}有什么關系呢?

答案中:for(j=i ; j<5; j++)

? ? ? ? ? ?printf(" ")

句意為i=1的時候,循環打4個空格,直到j=5的時候停止,進入下個子循環

也就是這個循環主要負責的是橫向的書寫,完成了第一行,寫4個空格1個星號的任務,至于換行,

要交給下一個子循環來做:

? ? ?k={1,3,5,7}不難看出這個數集與 i 的關系

? ? ?k=?2 i - 1

for(i=k, k= 2i - 1,k++)

? ? ? ? printf(“*”)

i=1的時候k=1,寫1個星號;

結束這個子循環。然后printf("\n")負責換下一行。

經過兩個子循環,我們得到了第一行的字 “空格?空格?空格?空格 *”

并且光標移至了第二行,

第二行與第一行的區別在于,for(i=j,j<5,j++)j的初始值為2,結束于4,一共有3個數字,即for子循環1

在第二行只寫3個空格,為什么呢?因為for(A ; B ; C)中的A確定了循環變量的初始值。

下來,for子循環2,i=2時,k=2i-1=3,經過兩個子循環

我們在第二行寫下了“空格 空格?空格 * * *”;

? ? ? ? ? ? 同理第三行寫下“空格 空格 * * * * *”;

? ? ? ? ? ? ? ? ? ? ? ? 第四行寫下“空格 * * * * * * *”;

把第一行的“*”加上就得到了答案http://img1.sycdn.imooc.com//5f8035c0000198ea00640063.jpg

那我們從這里學到了什么呢?


重點就在for循環(A;B;C)中,A,B表達式的運用,

先將我們最終的圖形目標拆分成若干個小目標,

確定小目標1:第一行寫4個空格和一個星號。給循環變量j和k不同的初始值,確定——從幾開始寫(通過i與j的關系)。

再利用表達式B來確定——寫幾個“空格”和寫幾個“星號”。然后換行。

小目標2:寫3個空格和3個星號。

.........

最終完成目標圖形。

這道題目我也是不停地試才理解,從本章開始,題目開始有所難度了,但是好在有控制臺給我們去試,如果不清楚怎么做,就先按自己的理解去試一下,不停地調整代碼,才能達到我們練習的目的。

說這么多其實也是為了增加我自己的理解,希望有什么疑問可以互相交流,同學。



44 回復 有任何疑惑可以回復我~
#1

沙礫1221

感謝感謝,分析的很詳細,我這種小白也看懂了!
2020-10-10 回復 有任何疑惑可以回復我~
#2

Penthesilea 回復 沙礫1221

很高興能對你有所幫助,希望我們能共勉~
2020-10-13 回復 有任何疑惑可以回復我~
#3

LukeWalker

謝謝大佬
2020-10-22 回復 有任何疑惑可以回復我~
#4

皓塵

非常感謝
2022-02-24 回復 有任何疑惑可以回復我~
#5

慕后端4462866

感謝感謝
2023-10-11 回復 有任何疑惑可以回復我~
查看2條回復

舉報

0/150
提交
取消

我想知道為什么答案那種寫法可以在第一行第三位輸出*其他輸出空格 第二行也是為什么它可以排成一個正三角形

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號