Re: [問題] 九九乘法表不用迴圈是叫我直接從1列到81?

作者: Schottky (順風相送)   2018-07-17 17:21:15
聽說 C 比較難寫,一下子想不到什麼好的 macro 作法,只好這樣攤開來
/* https://ideone.com/yKNrXd */
#define eval(x,y) { printf("%2d x %2d = %2d\n",(x),(y),(x)*(y)); }
#define eval3(x,y) { eval(x,y); eval((x),(y)+1); eval((x),(y)+2); }
#define eval9(x) { eval3(x,1); eval3((x),4); eval3((x),7); }
#define eval39(x) { eval9(x); eval9((x)+1); eval9((x)+2); }
#define eval99() { eval39(1); eval39(4); eval39(7); }
#include <stdio.h>
int main(void)
{
eval99();
return 0;
}
作者: cutekid (可愛小孩子)   2018-07-17 17:33:00
推好像湊不到比這個更少的了。 3^4 = 81, 3*4 = 12(最少了)
作者: tsaiminghan (tsaiminghan)   2018-07-17 20:24:00
這個把巨集攤開,好像就跟1x1寫到9x9一樣對吧?
作者: cutekid (可愛小孩子)   2018-07-17 21:26:00
對,只花了 12 個 eval 就辦到了,比 9 * 2 = 18個還少
作者: sarafciel (Cattuz)   2018-07-18 06:11:00

Links booklink

Contact Us: admin [ a t ] ucptt.com