作者xatier (阿飄先生)
看板C_and_CPP
標題Re: [問題] C語言的雙層迴圈
時間Wed Jun 1 10:09:54 2011
※ 引述《kkkkdragon (呆呆)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: C++
: 問題(Question):
: 如何將for的雙層迴圈變成goto
: 程式碼(Code):(請善用置底文網頁, 記得排版)
: for(j=1; j<=5; j=j+1) {
: printf("%d:",j);
: for(i=0; i<j; i=i+1) {
: printf("%c",A1[i]);
: }
: 補充說明(Supplement):
首先,你的 code 本身有問題,少了一個 }
而且排版很亂 = =;
初步整理一下,你的 code 應該是這樣
for (j = 1; j <= 5; j++) {
printf("%d:", j);
for ( i = 0; i < j; i++) {
printf("%c", A1[i]);
}
}
=====================================
要將 for 改成 goto
for 通常形式長這樣
for (
stmt1;
stmt2;
stmt3) {
}
其中,
stmt1 是迴圈前的初始化
stmt2 是進入回圈的判斷條件
stmt3 是 counter 的變化量
stmt1;
lable:
if (
stmt2 ) {
//迴圈內容
stmt3;
goto lable;
}
意思是,我先執行
stmt1 初始一些變數,然後判斷是否符合
stmt2 的條件
如果符合,執行迴圈內容,接著
stmt3 我的 counter 有一些變化量運算
之後回到 lable
所以說你的 code 可能可以改成這樣...
http://nopaste.csie.org/09015
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.60.107.233
推 ericinttu:推一下解說文. 06/01 10:15
推 flydragon198:推認真,不過這種作業應該google查一下就會寫了 06/01 10:42
推 angleevil:雖然發問者心態不對,但是讓我又學到一招,大推 06/01 10:48
推 a5480277:推彩色版 06/01 14:11
推 battle7:雖然發問者心態不對,但是讓我又學到一招,大推+1 06/01 16:42
推 loveme00835:@_@ 06/02 00:34
推 pichubaby:大推 06/02 01:13
推 VictorTom:(發卡) [好人] XD 06/03 01:47
→ xatier:Q_____Q 06/03 08:02
→ angleevil:不過說實話,我很不愛goto.所以幾乎不知道怎麼用 06/03 08:32
→ xatier:樓上強者都用longjmp() 06/03 08:46
→ angleevil:longjmp是什麼?長跳?這個我也不會. 06/03 10:00
→ xatier:一個可以從深層遞迴地獄跳出來的工具XD 06/03 13:01
→ firejox:setimp.h -->標準函式庫之一 06/03 18:22
推 VictorTom:小弟我只會用debugger跳XD 然後常跳錯跟著程式就當了Orz 06/03 18:40
→ firejox:神奇的是longjmp似乎不支持返回0 XD 06/03 20:26
推 loveme00835:setimp.h ← 這根本不是標準, 連鬼影都看不到 06/03 21:35
→ firejox:筆誤 = = setjmp.h 06/03 22:06
→ angleevil:我很乖,書本說少用goto和longjmp.所以我不會 06/04 19:21
→ angleevil:其實是能力不到,淚奔QQ 06/04 19:22