看板 C_and_CPP 關於我們 聯絡資訊
我在課本上做到一題畫出三角形的 像這樣↓ * ** *** **** ***** ****** 課本上的程式是這樣↓ 01 #include <stdio.h> 02 #include <stdlib.h> 03 int main (void) 04 { 05 int i, j; /* 設定迴圈出值 */ 06 07 for (i = 1; i <= 6; i++) /* 外層迴圈決定哪一列要印星號 */ 08 { 09 for (j = 1; j <= i; j++) /* 內層迴圈印出*星號 */ 10 11 printf ("*"); 12 printf ("\n"); 13 } 14 15 system ("pause"); 16 return 0; 17 } 課本又解釋外層迴圈用來控制列印行數(迴圈控制變數i) 而內層迴圈則是用來控制每一行列印的星號數目(迴圈控制變數j) 一開始看課本這樣解釋 應該是說 i用控制要列印出幾行 對吧 則j是用來控制每一行要印幾個星號數 後來我有想到 那菱形的可以做一下試試看 我一開始是這樣想的 \ 代表空格 \\\\\* \\\\*** \\\***** \\******* \********** ************ 我只要寫出\的程式 在寫*的程式應該就好了 但是我後來有寫出\的程式 但是也遇到for迴圈上的邏輯問題 這是跟上面的程式一樣的東西 #include <stdio.h> #include <stdlib.h> int main (void) { int i, j; for (i = 5; i <= 10; i++) { for (j = 5; j <= i; j++) printf ("*"); printf ("\n"); } system ("pause"); return 0; } 這個印出的圖形也是 * ** *** **** ***** ****** 重點來了我當初想說 i是控制行數 j是控制星數目 那我是不是把j改成5 那是不是他第一行就會印出5個星 結果沒有 我想 這個程式 是不是跑幾次就出現幾個星 還是怎樣!!有點想不通 請大家指點 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.131.128.9
tjjh89017:空白的部分再寫一個for放在for-j的上面 for-i的裡面 01/27 17:34
diabloevagto:小建議,貼程式碼用置頂內的網址貼會更好 01/27 17:37
stimim:你用紙筆先自己模擬一下電腦會怎麼跑吧,看迴圈如何運作 01/27 17:42
ming712800:我比較搞不懂的地方是 為什麼我改成五的地方 01/27 18:02
ming712800:並沒有跑出五顆星 而是只有一顆星 01/27 18:03
stimim:所以才會請你用紙筆模擬看看,看你改了以後的code會怎麼跑 01/27 18:40
ericinttu:注意括號 01/27 19:39
flydragon198:建議在for迴圈後就算只有一行,也要用括號括起來~~ 01/27 20:25
tjjh89017:其實只要有縮排 for只有一行不加{}也還好 01/27 21:08
manoeuvre:課本上的程式這樣寫? 這什麼課本... 01/27 21:41
diabloevagto:加上{}是良好習慣啊,不能保證以後不會再增加 01/27 22:05
ming712800:課本是洪維恩寫的c語言教學手冊!! 原PO本身是電機的 01/27 22:57
ming712800:因為大一沒有修得很好,在大二的時候覺得該是好好把 01/27 22:58
ming712800:把C語言修好 以後自己或許會用到!! 01/27 22:59
ming712800:謝謝stimin其實我已在紙上寫好幾次了 現在終於有比 01/27 23:00
ming712800:較懂了 謝謝你 我們老師也是這樣教我們的!! 01/27 23:01
manoeuvre:我覺得縮排問題比較大 我翻了一下課本(第三版的) 01/28 03:35
manoeuvre:發現你沒有忠實呈現課本上面的縮排.... 01/28 03:36
tropical72:嗯,這題之前寫過詳解 http://0rz.tw/lpqzh 參考看看. 01/28 04:52
ming712800:我是完全照課本的縮排 我的是第四版 可以去看看 01/30 15:48
diabloevagto:確實你的縮排不太好,在for裡面的可以加上tab比較好 01/30 16:09