C语言大神。25题怎么算??

2025-04-17 14:53:30
推荐回答(3个)
回答1:

这个很容易错,
因为你人为的加括号 MA(1+a+b)
看原定义define MA(x) x*(x-1) ;x本身没有带括号所以你就不能加括号
这句话应该翻译成:1+a+b*(1+a+b+-1)
所以=1+1+2*(1+1+2-1)=2+6=8

如果宏定义为define MA(x) (x)*(x-1) 那就翻译过来就是(1+a+b)*(1+a+b-1)就是12了
关键是后面被宏定义的表达式格式,宏定义相当于函数的形参,表达式相当于函数体

回答2:

宏替换 注意括号就行了
MA(x) 用 x*(x-1)替换
MA(1+a+b) 中的1+a+b相当于定义中的x
所以替换后的结果为:1+a+b*(1+a+b-1) 其中a=1 b=2
所以最终结果为: 1+1+2*(1+1+2-1)=2+2*3=8

回答3:

直接将MA(1+a+b)带入即可:
MA(1+a+b) = 1+a+b*(1+a+b-1)
将a,b带入可求得结果为 8