C语言题 有以下程序 #include <stdio.h> #define PT 3.5 ;

有以下程序 #include <stdio.h> #define PT 3.5 ; #define S(x) PT*x*x ; main() { int a=1,b=2; printf(“%4.1f\n”,S(a+b));} 程序运行后的输出结果是().A、31.5B、程序有错无输出结果C、7.5D、14.0
选什么啊?为什么?

答案选C。
原因:代入a=1,b=1,PT=3.5后,S(a+b)为(3.5*1+2*1+2)=7.5 。
易错点:一般会容易以为答案是A,因为会被S(a+b)误导,认为是a,b相加后再与3.5相乘,即3.5*(1+2)*(1+2)=31.5 ,这个是错误的。所以我们要仔细看S(x)的宏定义,是PT*x*x,而不是PT*(x)*(x)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-31
C. 7.5 还有,你上面写错了
3.5*1+2*2=7.5
第2个回答  2013-12-31
答案选B啊
宏是原样子替换并不会计算。而且题目中的宏竟然还有分号
那句printf就被宏扩展成
printf("%4.1f\n",3.5 ;*1+2*1+2;);
函数里面有两个分号了 所以语法错误

打字不易 谢谢采纳本回答被提问者采纳
相似回答