課程
/后端開發(fā)
/C
/C語言入門
我想知道為什么答案那種寫法可以在第一行第三位輸出*其他位置輸出空格? 第二行也是為什么它可以排成一個正三角形
2020-10-07
源自:C語言入門 4-12
正在回答
???niu
謝謝大佬
? ?厲害了,大佬,剛剛開始還一臉蒙蔽
太棒了!大佬大佬!
謝謝大佬,祝大佬在代碼路上越走越遠(yuǎn)!
Penthesilea
你想問的是答案為什么正確,為了搞清楚答案為什么正確,我們先來看 i , j , k,三個變量分別負(fù)責(zé)什么,i由題中給出
i=1, i<5 , i++,也就是i={1,2,3,4 ;i=N}, 我們先不把輸出目標(biāo)看成是圖形,把他看作是4行字,只是每行的對齊方式不太一樣,拆開來看,i負(fù)責(zé)的就是整個輸出目標(biāo)的行數(shù),i=1就是第一行,i=2就是第二行,好,那么我們下來要確定什么呢?
可以看出,題目提示了,for子循環(huán)1,是為了打空格,觀察一下這個圖片,如果從第四行的第一個“*”開始,到第四行第四個“*”(第一行“*”在第四行的投影),一共需要打三個空格,然后因為第四行開頭還有一個空格(圖片是白色的,也就是第一格是從圖片邊緣開始的,而不是從星號開始的),加起來第一行需要打4個空格。
那么現(xiàn)在就確定了第一行一共需要,4個空格,1個“*”,(一共5個字符)
同理,第二行需要3個空格,3個“*”,(一共6個字符)
第三行需要2個空格,5個“*”(一共7個字符)
第四行需要1個空格,7個“*”(一共8個字符)
我們用 j 來表示空格的個數(shù), k來表示“*”的個數(shù)(具體用哪個看你喜歡)
j={4,3,2,1}, k={1,3,5,7},他們和i={1,2,3,4}有什么關(guān)系呢?
答案中:for(j=i ; j<5; j++)
? ? ? ? ? ?printf(" ")
句意為i=1的時候,循環(huán)打4個空格,直到j(luò)=5的時候停止,進(jìn)入下個子循環(huán)
也就是這個循環(huán)主要負(fù)責(zé)的是橫向的書寫,完成了第一行,寫4個空格1個星號的任務(wù),至于換行,
要交給下一個子循環(huán)來做:
? ? ?k={1,3,5,7}不難看出這個數(shù)集與 i 的關(guān)系
? ? ?k=?2 i - 1
for(i=k, k= 2i - 1,k++)
? ? ? ? printf(“*”)
i=1的時候k=1,寫1個星號;
結(jié)束這個子循環(huán)。然后printf("\n")負(fù)責(zé)換下一行。
經(jīng)過兩個子循環(huán),我們得到了第一行的字 “空格?空格?空格?空格 *”
并且光標(biāo)移至了第二行,
第二行與第一行的區(qū)別在于,for(i=j,j<5,j++)j的初始值為2,結(jié)束于4,一共有3個數(shù)字,即for子循環(huán)1
在第二行只寫3個空格,為什么呢?因為for(A ; B ; C)中的A確定了循環(huán)變量的初始值。
下來,for子循環(huán)2,i=2時,k=2i-1=3,經(jīng)過兩個子循環(huán)
我們在第二行寫下了“空格 空格?空格 * * *”;
? ? ? ? ? ? 同理第三行寫下“空格 空格 * * * * *”;
? ? ? ? ? ? ? ? ? ? ? ? 第四行寫下“空格 * * * * * * *”;
把第一行的“*”加上就得到了答案
那我們從這里學(xué)到了什么呢?
重點就在for循環(huán)(A;B;C)中,A,B表達(dá)式的運用,
先將我們最終的圖形目標(biāo)拆分成若干個小目標(biāo),
確定小目標(biāo)1:第一行寫4個空格和一個星號。給循環(huán)變量j和k不同的初始值,確定——從幾開始寫(通過i與j的關(guān)系)。
再利用表達(dá)式B來確定——寫幾個“空格”和寫幾個“星號”。然后換行。
小目標(biāo)2:寫3個空格和3個星號。
.........
最終完成目標(biāo)圖形。
這道題目我也是不停地試才理解,從本章開始,題目開始有所難度了,但是好在有控制臺給我們?nèi)ピ嚕绻磺宄趺醋?,就先按自己的理解去試一下,不停地調(diào)整代碼,才能達(dá)到我們練習(xí)的目的。
說這么多其實也是為了增加我自己的理解,希望有什么疑問可以互相交流,同學(xué)。
沙礫1221
Penthesilea 回復(fù) 沙礫1221
LukeWalker
皓塵
慕后端4462866
舉報
C語言入門視頻教程,帶你進(jìn)入編程世界的必修課-C語言
1 回答第一行是三個空格為什么程序輸出是四個
1 回答為什么第一行四個第二行三個第三行兩個第四行一個
1 回答為什么第一種情況不行,第二種可以?
3 回答按答案輸出的話 為什么第一行會輸出4個空格 不應(yīng)該是一個么
2 回答第一行不應(yīng)該是先輸出三個空格嗎?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2020-11-10
???niu
2020-11-05
謝謝大佬
2020-10-28
? ?厲害了,大佬,剛剛開始還一臉蒙蔽
2020-10-20
太棒了!大佬大佬!
2020-10-10
謝謝大佬,祝大佬在代碼路上越走越遠(yuǎn)!
2020-10-09
你想問的是答案為什么正確,為了搞清楚答案為什么正確,我們先來看 i , j , k,三個變量分別負(fù)責(zé)什么,i由題中給出
i=1, i<5 , i++,也就是i={1,2,3,4 ;i=N}, 我們先不把輸出目標(biāo)看成是圖形,把他看作是4行字,只是每行的對齊方式不太一樣,拆開來看,i負(fù)責(zé)的就是整個輸出目標(biāo)的行數(shù),i=1就是第一行,i=2就是第二行,好,那么我們下來要確定什么呢?
可以看出,題目提示了,for子循環(huán)1,是為了打空格,
觀察一下這個圖片,如果從第四行的第一個“*”開始,到第四行第四個“*”(第一行“*”在第四行的投影),一共需要打三個空格,然后因為第四行開頭還有一個空格(圖片是白色的,也就是第一格是從圖片邊緣開始的,而不是從星號開始的),加起來第一行需要打4個空格。
那么現(xiàn)在就確定了第一行一共需要,4個空格,1個“*”,(一共5個字符)
同理,第二行需要3個空格,3個“*”,(一共6個字符)
第三行需要2個空格,5個“*”(一共7個字符)
第四行需要1個空格,7個“*”(一共8個字符)
我們用 j 來表示空格的個數(shù), k來表示“*”的個數(shù)(具體用哪個看你喜歡)
j={4,3,2,1}, k={1,3,5,7},他們和i={1,2,3,4}有什么關(guān)系呢?
答案中:for(j=i ; j<5; j++)
? ? ? ? ? ?printf(" ")
句意為i=1的時候,循環(huán)打4個空格,直到j(luò)=5的時候停止,進(jìn)入下個子循環(huán)
也就是這個循環(huán)主要負(fù)責(zé)的是橫向的書寫,完成了第一行,寫4個空格1個星號的任務(wù),至于換行,
要交給下一個子循環(huán)來做:
? ? ?k={1,3,5,7}不難看出這個數(shù)集與 i 的關(guān)系
? ? ?k=?2 i - 1
for(i=k, k= 2i - 1,k++)
? ? ? ? printf(“*”)
i=1的時候k=1,寫1個星號;
結(jié)束這個子循環(huán)。然后printf("\n")負(fù)責(zé)換下一行。
經(jīng)過兩個子循環(huán),我們得到了第一行的字 “空格?空格?空格?空格 *”
并且光標(biāo)移至了第二行,
第二行與第一行的區(qū)別在于,for(i=j,j<5,j++)j的初始值為2,結(jié)束于4,一共有3個數(shù)字,即for子循環(huán)1
在第二行只寫3個空格,為什么呢?因為for(A ; B ; C)中的A確定了循環(huán)變量的初始值。
下來,for子循環(huán)2,i=2時,k=2i-1=3,經(jīng)過兩個子循環(huán)
我們在第二行寫下了“空格 空格?空格 * * *”;
? ? ? ? ? ? 同理第三行寫下“空格 空格 * * * * *”;
? ? ? ? ? ? ? ? ? ? ? ? 第四行寫下“空格 * * * * * * *”;
把第一行的“*”加上就得到了答案
那我們從這里學(xué)到了什么呢?
重點就在for循環(huán)(A;B;C)中,A,B表達(dá)式的運用,
先將我們最終的圖形目標(biāo)拆分成若干個小目標(biāo),
確定小目標(biāo)1:第一行寫4個空格和一個星號。給循環(huán)變量j和k不同的初始值,確定——從幾開始寫(通過i與j的關(guān)系)。
再利用表達(dá)式B來確定——寫幾個“空格”和寫幾個“星號”。然后換行。
小目標(biāo)2:寫3個空格和3個星號。
.........
最終完成目標(biāo)圖形。
這道題目我也是不停地試才理解,從本章開始,題目開始有所難度了,但是好在有控制臺給我們?nèi)ピ嚕绻磺宄趺醋?,就先按自己的理解去試一下,不停地調(diào)整代碼,才能達(dá)到我們練習(xí)的目的。
說這么多其實也是為了增加我自己的理解,希望有什么疑問可以互相交流,同學(xué)。