预处理的考试试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1) 下面叙述错误的是()。
A) “#define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE
B) C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率
C) “#include <>”命令的作用是在预处理时将文件中的实际内容代替该命令
D) 宏定义也是C语句,必须在行末加分号
(2) 若有定义:#define PI 3,则表达式PI*2*2的值为()。
A) 4
B) 不确定
C) 12
D) 322
(3) 以下程序的运行结果是()。
#define X a+b
main( )
{
int a=3,b=4,s1;
s1=2*X;
printf("%d\n",s1);
}
A) 8
B) 14
C) 10
D) 6
(4) 若有定义#define F 2+3,则表达式F*F的值为()。
A) 13
B) 17
C) 25
D) 11
(5) 下面叙述正确的是()。
A) 宏名必须用大写字母表示
B) 一个源程序只能有一个预编译处理命令行
C) 宏展开不占用运行时间,只占用编译时间
D) 预处理命令也是C语句,必须以分号结束
(6) 下列程序中定义的二维数组a的()。
# define M 3
# define N 4
void main( )
{ int a[M][N];
……
}
A、第一维和第二维都为4
B、第一维和第二维都为3
C、第一维为4,第二维为3
D、第一维为3,第二维为4
(7) 下列程序的运行结果是()。
# define M 5
# define N M+1
# define NN N*N-M
void main( )
{ printf(“%d\n”,3*NN);
}
A、108
B、16
C、21
D、103
(8) 下列叙述正确的是()。
A、宏定义中的宏名必须用大写字母表示
B、为提高程序运行速度可在源程序中加入一些宏定义
C、一个C语言源程序只能有一条预处理命令
D、宏定义不占用程序运行时间,但与程序中的语句一样需要编译
(9) 下列叙述错误的是()。
A、宏定义可出现在源程序中任意合适的位置,且必须在行末加分号
B、预处理命令行都必须以#号开始
C、C语言源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率
D、# define PER 的作用是用标识符PER代表
(10) 下列程序的运行结果是()。
# define K 5
void main( )
{ int a=3,b=4;
printf(“%d\n”,K*(a+b));
}
A、20
B、15
C、5
D、35
(11) 以下叙述正确的是()。
A) 一个源程序只能由一个编译预处理命令行
B) 编译预处理命令都必须以"#"开头
C) "#define PRICE=30"定义了与30等价的符号常量PRICE
D) 使用带参数的宏定义时,应该说明每个参数的数据类型
(12) 以下程序运行后输出结果是()。
#define MIN(m,n) m main() { int a=3,b=5,c; c=2*MIN(a,b); printf("%d",c); } A) 3 B) 5 C) 6 D) 10 (13) 以下叙述正确的是()。 A) 编译预处理命令行必须以分号结束 B) 宏名只能包含大写字母和数字字符 C) 程序中使用带参数的宏时,参数类型要与宏定义时一致 D) 宏展开不占用运行时间,只占用编译时间 (14) 若有定义:#define N 3+2,则表达式N*2的值为()。 A) 5 B) 7 C) 10 D) 0 (15)运行下列程序,其结果是( )。 #include <> #define NUM(x,y) x*x+y main() { int a=3,b=2,s1,s2; s1=NUM(a,b)*2; s2=fun(a,b)*2; printf("%d,%d\n",s1,s2); } fun(x,y) int x,y; { return(x*x+y); } A)22,13 B)22,22 C)13,22 D)13,13 (16)下列程序的输出结果为( )。 # include<> # define SQR(x) x*x main() { int a=10,k=3,m=2; a=SQR(k+m); printf("%d\n",a); } A)25 B)11 C)5 D)10 (17)下列程序的输出结果为( )。 # define SQR(x) ((x)*(x)) main() { int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k-m); printf("%d\n",a); } A)10 B)9 C)1 D)0 (18) 有宏定义:#define MULT1(a,b) a*b #define MULT2(a,b) (a)*(b) 在后面的程序中有宏引用:y=MULT1(3+2,5+8); z=MULT2(3+2,5+8); 则y和z的值是()。 A)y=65,z=65 B)y=21,z=65 C)y=65,z=21 D)y=21,z=21 (19)格式1 #include "文件名" 格式2 #include <文件名> 下面4个结论,正确的是( )。 A)格式1中的文件名能带路径,而格式2不能。