预处理的考试试题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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不能。

相关文档
最新文档