作者Schottky (顺风相送)
看板C_and_CPP
标题Re: [问题] 九九乘法表不用回圈是叫我直接从1列到81?
时间Tue Jul 17 17:21:15 2018
听说 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;
}
--
桃乐丝: 可是, 如果你没有头脑, 为什麽会说话?
稻草人: ㄝ, 我也不知... 但是有些人没有头脑也能说超~多话呢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.225.32.48
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1531819282.A.ABB.html
1F:推 cutekid: 推 07/17 17:33
2F:推 cutekid: 好像凑不到比这个更少的了。 3^4 = 81, 3*4 = 12(最少了) 07/17 20:14
3F:→ tsaiminghan: 这个把巨集摊开,好像就跟1x1写到9x9一样对吧? 07/17 20:24
4F:→ cutekid: 对,只花了 12 个 eval 就办到了,比 9 * 2 = 18个还少 07/17 21:26
5F:推 sarafciel: 推 07/18 06:11