一、判断题 (12分) 1
若有 # define S(a,b) a*b 则语句 area=S(3,2); area的值为6
由于宏名与宏体之间以空格相隔,因此宏名中不应再有空格
宏替换就是字符替换,不能进行任何计算
带参的宏替换,在调用时也进行实参与形参的结合,因此它和函数是一回事 5
以数组名作函数参数时,实参数组与形参数组都不必定义长度,因此实参与形参的结合方式是地址结合,与数组长度无关
以数组名作函数参数时,数据传递的方向是“双向的”,因此我们可以说,在此情况下,函数带回的返回值可能不止一个
2 分 二、选择题 (24分) 1
下列宏定义命令中,哪一个格式是正确的() [D] 2 分 A
#define pi=3
14159; B
define pi=3
14159 C
#define pi="3
14159" D
#define pi (3
14159) 2
宏定义为#define div(x,y) x/y; 若语句printf("div(x,y)=%d\n",div(x+3,y-3));作宏替换后为() [C] 2 分 A
printf("x/y=%d\n",(x+3)/(y-3)); B
printf("div(x,y)=%d\n",x+3/y-3); C
printf("div(x,y)=%d\n",x+3/y-3;); D
printf("x/y=%d\n",x+3/y-3;); 3
程序中调用了库函数exit,必须包含头文件() [B] 2 分 A
string
stdlib
定义带参数的宏计算两个表达式的乘积,下列定义中哪个是正确的() [C] 2 分 A
#define muit(u,v) u*v B