#define X 5
#define Y X+1
#define Z Y*X/2
int main ( ) {
int a=Y;
printf(“%d\n”,Z);
printf(“%d\n”,--a);
return 0;
}
A.7
5
B.12
5
C.7
6
D.12
6
以下程序的运行结果是( )。
#include#define DOUBLE(r) r*r
int main ( ) {
int x=1,y=2,t;
t = DOUBLE(x+y) ;
printf (“%d\n”,t); return 0;
}
A.7
B.6
C.5
D.8
在“文件包含”预处理命令形式中,当#include后面的文件名用””(双引号)括起时,寻找被包含文件的方式是( )。
A.仅仅搜索源程序所在目录
B.直接按系统设定的标准方式搜索目录
C.先在源程序所在目录中搜索,再按系统设定的标准方式搜索
D.仅仅搜索当前目录
若有定义
#define N 2
#define Y(n) ((N+1)*n)
则执行语句z=2*(N+Y(5));后,z的值为( )。
A.无确定值
B.语句有错误
C.34
D.70
若有定义#define MOD(x,y) x%y,则执行下面语句后的输出为( )。
int z,a=15;
float b=100;
z=MOD(b,a);
printf(“%d\n”,z++);
A.有语法错误
B.11
C.10
D.6
在任何情况下计算平方数都不会引起二义性的宏定义是( )
A.#define POWER(x) (x)*(x)
B.#define POWER(x) ((x)*(x))
C.#define POWER(x) (x*x)
D.#define POWER(x) x*x
在宏定义#define PI 3.1415926中,用宏名PI代替一个( )。
A.双精度数
B.常量
C.单精度数
D.字符串
以下叙述不正确的是( )。
A.C程序在执行过程中对预处理命令行进行处理
B.在程序中凡是以#开始的语句行都是预处理命令行
C.预处理命令行可以出现在C程序中任意一行上
D.预处理命令行都必须以#开始
以下叙述中正确的是( )。
A.宏替换不占用运行时间,只占用编译时间
B.C语言的编译预处理就是对源程序进行初步的语法检查
C.在程序的一行上可以出现多个有效的预处理命令行
D.使用带参数的宏时,参数的类型应与宏定义时的一致
在“文件包含”预处理命令形式中,当#include后名的文件名用<>(尖括号)括起时,寻找被包含文件的方式是( )。
A.先在源程序所在目录中搜索,再按系统设定的标准方式搜索
B.直接按系统设定的标准方式搜索目录
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
以下有关宏替换的叙述不正确的是( )。
A.宏名必须用大写字母表示
B.宏名无类型
C.宏替换只是字符替换
D.宏替换不占用运行时间