Re: [問題]C++ 九九乘法表 如何用if來寫呢??

看板C_and_CPP作者 (宅爸爸)時間16年前 (2010/02/01 18:36), 編輯推噓5(509)
留言14則, 11人參與, 最新討論串2/13 (看更多)
/* 恕刪全文... 我認為 do-while, while-do, for迴圈某種程度上是由 if 判斷式加上 goto 組合而成(前板有推文中也有提到) 之間可以互用,這邊獻個醜,若有不對觀念請鞭小力點 謝謝.... 以下的source cide中將USING_LOOP的定義改成1~4, 再用 gcc -E 就可以看出不同的寫法,但一樣的結果 :) <P.S> 抱歉,我不會用C++,改成C .... */ #define USING_LOOP 4 #define LOOP_FOR 1 #define LOOP_DO_WHILE 2 #define LOOP_WHILE_DO 3 #define LOOP_IF_GOTO 4 #if (USING_LOOP == LOOP_FOR) #define LOOP_BEGIN(F, Begin, Stop, Step) \ for(Begin; Stop; Step) { #define LOOP_END(F, Begin, Stop, Step) \ } #elif (USING_LOOP == LOOP_DO_WHILE) #define LOOP_BEGIN(F, Begin, stop, step) \ Begin; do { #define LOOP_END(F, Begin, Stop, Step) \ Step; } while(Stop); #elif (USING_LOOP == LOOP_WHILE_DO) #define LOOP_BEGIN(F, Begin, Stop, Step) \ Begin; while(Stop) { #define LOOP_END(F, Begin, Stop, Step) \ Step; } #elif (USING_LOOP == LOOP_IF_GOTO) #define LOOP_BEGIN(F, Begin, Stop, Step) \ Begin; loop_begin_##F: #define LOOP_END(F, Begin, Stop, Step) \ Step; if (Stop) {goto loop_begin_##F;} #endif int main(int argc, char *argv[]) { int i , j; int sum; LOOP_BEGIN(a, i = 1, i <= 9, i++) { LOOP_BEGIN(b, j = 1, j <= i, j++) { sum=i*j; printf("%d*%d=%d ", j, i, sum); } LOOP_END(b, j = 1, j <= i, j++) printf("\n"); } LOOP_END(a, i = 1, i <= 9, i++) return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.136.210.73

02/01 19:15, , 1F
何苦呢
02/01 19:15, 1F

02/01 19:54, , 2F
你這樣寫 原PO肯定看不懂你在寫啥...XD
02/01 19:54, 2F

02/01 20:36, , 3F
#放在第一行,如 # define....
02/01 20:36, 3F

02/01 20:47, , 4F
不要講元PO了 我沒展開工具我也看不懂 -_-
02/01 20:47, 4F

02/01 21:50, , 5F
這........我看不懂XDDD
02/01 21:50, 5F

02/01 22:54, , 6F
乍看很有印象,但仔細一看,是程式碼代換.
02/01 22:54, 6F

02/02 08:47, , 7F
這...自找麻煩= =a
02/02 08:47, 7F

02/02 10:13, , 8F
謝謝lungswu大的提供,但是我看不懂...XD
02/02 10:13, 8F

02/02 10:17, , 9F
SORRY, 我想請問一下,#define那邊 有接個”\”這是甚麼意思
02/02 10:17, 9F

02/02 10:19, , 10F
代表把這一行跟下一行接在一起
02/02 10:19, 10F

02/02 10:49, , 11F
1,7樓說的也是中肯,一般是不會這樣做啦,哈哈...
02/02 10:49, 11F

02/02 10:50, , 12F
回lianchiamin:使用gcc -E aa.c -o bb.c, 就可以看到aa.c
02/02 10:50, 12F

02/02 10:50, , 13F
展開的結果,儲存於bb.c
02/02 10:50, 13F

02/02 10:51, , 14F
USING_LOOP 設為1~4中的任意一個數,可以看到不同的作法
02/02 10:51, 14F
文章代碼(AID): #1BPgxAow (C_and_CPP)
討論串 (同標題文章)
完整討論串 (本文為第 2 之 13 篇):
文章代碼(AID): #1BPgxAow (C_and_CPP)