请帮我解答这个C程序

来源:百度知道 编辑:UC知道 时间:2024/05/26 05:08:53
#define PT 3.5
#define S(x) PT*x*x
main()
{int a=1,b=2;
printf("%4.1f\n",S(a+b));
}
这个程序的答案是什么
A 14.0 B 31.5 C 7.5 D 10.5
答案是C是不是有问题呀?我做出来是B!到底是什么呀?请解答!谢谢

没有问题,就是C答案。
因为 #define S(x) PT*x*x
这句符号常量的定义的问题
在S(a+b)替换时是 3.5*1+2*1+2,结果就是7.5了,

如果将#define S(x) PT*x*x 改为 #define S(x) PT*(x)*(x)
在替换时就是3.5*(1+2)*(1+2)结果就是31.5了
符号常量的定义一定要小心!!

兄弟你可以研究一下宏的问题

s(a+b)=pi*(a+b)*(a+b)=3.5*3*3=31.5=B

所以答案是B

这道题 肯定 选C
因为 #define S(x) PT*x*x
这句符号常量的定义的问题
在S(a+b)替换时是 3.5*1+2*1+2,结果就是7.5了
这个绝对没问题
不信 上 C 环境 试试~~

选C

没问题用define定义函数有 问题,你这个S(a+b)是这样运算的:PT*a+b*a+b

选B就得加一个括号了。。。

答案是B