C语言简单一题

有以下程序

#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)14.0 B)31.5 C)7.5 D)程序有错无输出结果

求答案,及最重要 讲解!

呵呵 ,答案肯定是D;就是因为你在#define常量表达式后加上了分号,你如果把分号去掉的话那么答案就是C了(去掉分号后没有语法错误则变成这样:3.5*1+2*1+2),记住原样代替后再运算;这里和这种又有不相同S(x) PT*(x)*(x)。在主函数传参的时候也不要对他进行运算,始终记住先代替再运算;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-02
#define PT 3.5;
#define S(x) PT*x*x;
你仔细看看
这2句后面如果真有分号的,那就选D吧!

没分号的话,选C
S(a+b)展开后变成
PT * a + b * a + b
= 3.5+2+2
= 7.5
第2个回答  2009-09-02
1.这题考宏定义

2.先代替S(a+b)-->PT*a+b*a+b,注意这里没括号的,因为宏是PT*x*x,
所以代数:3.5*1+2*1+2=7.5

3.选C错了,因为宏后面没分号的,,选D;

4.全国二级的题都这样掉..要细心,细心..!
相似回答