当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《C语言程序设计》课程教学资源:第九章 编译预处理 练习9

资源类别:文库,文档格式:DOC,文档页数:12,文件大小:73.5KB,团购合买
第九章编译预处理 9.1选择题 【题9.1】以下叙述中不正确的是 A)预处理命令行都必须以#号开始 B)在程序中凡是以#号开始的语句行都是预处理命令行 C)C程序在执行过程中对预处理命令行进行处理 D)以下是正确的宏定义 #define IBM_PC 【题9.2】以下叙述中正确的是 A)在程序的一行上可以出现多个有效的预处理命令行 B)使用带参的宏时,参数的类型应与宏定义时的一致 C)宏替换不占用运行时间,只占编译时间 D)在以下定义中CR是称为“宏名”的标识符 #define CR045
点击下载完整版文档(DOC)

第九章编译预处理 9.1选择题 【题9.1】以下叙述中不正确的是 A)预处理命令行都必须以#号开始 B)在程序中凡是以#号开始的语句行都是预处理命令行 C)C程序在执行过程中对预处理命令行进行处理 D)以下是正确的宏定义 #define Ibm pc 【题9.2】以下叙述中正确的是 A)在程序的一行上可以出现多个有效的预处理命令行 B)使用带参的宏时,参数的类型应与宏定义时的一致 C)宏替换不占用运行时间,只占编译时间 D)在以下定义中CR是称为“宏名”的标识符 #define c r 045 【题9.3】请读程序: #define ADd (x)x+x tm=1,n=2,k=3; int sumFADD(m+n)*k printf(“su 上面程序的运行结果是 A) sum=9 B) sum=10 C) sum=12 D) sum=1 【题9.4】以下程序的运行结果是 #define MIN (x, y)(x)<(y)?(x): (y) ma nti=10,j=15,k k=10=*MIN (i, j) printf(“%d\n”,k) A)10 B)15 C)100 D)150 【题9.5】在宏定义# define pi3.14159中,用宏名PI代替一个 A)常量B)单精度数C)双精度数D)字符串

第九章 编译预处理 9.1 选择题 【题 9.1】以下叙述中不正确的是 。 A) 预处理命令行都必须以#号开始 B) 在程序中凡是以#号开始的语句行都是预处理命令行 C) C 程序在执行过程中对预处理命令行进行处理 D) 以下是正确的宏定义 #define IBM_PC 【题 9.2】以下叙述中正确的是 。 A) 在程序的一行上可以出现多个有效的预处理命令行 B) 使用带参的宏时,参数的类型应与宏定义时的一致 C) 宏替换不占用运行时间,只占编译时间 D) 在以下定义中 C R 是称为“宏名”的标识符 #define C R 045 【题 9.3】请读程序: #define ADD(x) x+x main() { int m=1,n=2,k=3; int sum=ADD(m+n)*k; printf(“sum=%d”,sum); } 上面程序的运行结果是 。 A)sum=9 B)sum=10 C)sum=12 D)sum=18 【题 9.4】以下程序的运行结果是 。 #define MIN(x,y) (x)<(y)?(x):(y) main() { int i=10,j=15,k; k=10*MIN(i,j); printf(“%d\n”,k); } A)10 B)15 C)100 D)150 【题 9.5】在宏定义#define PI 3.14159 中,用宏名 PI 代替一个 。 A)常量 B)单精度数 C)双精度数 D)字符串

【题9.6】以下程序的运行结果是 include #define Fudge(y) 2.84+y # define pr(a) printf(“%d”,(int)(a) #define PRINTl(a) PR(a): putchar('n main PRINTI (FUDGE (5)*x) A)11 B)12 C)13 D)15 【题9.7】以下有关宏替换的叙述不正确的是_。 A)宏替换不占用运行时间 B)宏名无类型 C)宏替换只是字符替换 D)宏名必须用大写字母表示 【题9.8】C语言的编译系统对宏命令的处理是_ A)在程序运行时进行的 B)在程序连接时进行的 C)和C程序中的其它语句同时进行编译的 D)在对源程序中其它成份正式编译之前进行的 【题9.9】若有宏定义如下: #define x 5 #define y x+1 #define Z y=*X/2 则执行以下 printf语句后,输出结果是 printf(“%d\n”,Z) printf(“%dn A)7 B)1 C)12 D)7 5 5 【题9.10】若有以下宏定义如下: #definen 2 #define y(n)((N+1)*n) 则执行语句z=2*(N+Y(5);后的结果是 A)语句有错误 B)z=34C)z=70D)z无定值 【题9.11】若有宏定义:# define mod(x,y)x%y 则执行以下语句后的输出为 intz,a=15,b=100 z=MOD(b, a) printf(“%d\n”,z++)

【题 9.6】以下程序的运行结果是 。 #include #define FUDGE(y) 2.84+y #define PR(a) printf(“%d”,(int)(a)) #define PRINT1(a) PR(a); putchar(‘\n’) main() { int x=2; PRINT1(FUDGE(5)*x); } A)11 B)12 C)13 D)15 【题 9.7】以下有关宏替换的叙述不正确的是 。 A)宏替换不占用运行时间 B)宏名无类型 C)宏替换只是字符替换 D)宏名必须用大写字母表示 【题 9.8】C 语言的编译系统对宏命令的处理是 。 A) 在程序运行时进行的 B) 在程序连接时进行的 C) 和 C 程序中的其它语句同时进行编译的 D) 在对源程序中其它成份正式编译之前进行的 【题 9.9】若有宏定义如下: #define X 5 #define Y X+1 #define Z Y*X/2 则执行以下 printf 语句后,输出结果是 。 int a; a=Y; printf(“%d\n”,Z); printf(“%d\n”,--a); A)7 B)12 C)12 D)7 6 6 5 5 【题 9.10】若有以下宏定义如下: #define N 2 #define Y(n) ((N+1)*n) 则执行语句 z=2*(N+Y(5));后的结果是 。 A)语句有错误 B)z=34 C)z=70 D)z 无定值 【题 9.11】若有宏定义:#define MOD(x,y) x%y 则执行以下语句后的输出为 。 int z,a=15,b=100; z=MOD(b,a); printf(“%d\n”,z++);

A)11 B)10 C)6 D)宏定义不合法 【题9.12】以下程序的运行结果是 #define MAX(A, B)(A)>(B)?(A): (B) # define print(Y) printf(“Y=%d\t”,Y main( nta=1,b=2,c=3,d=4,t t=MAX(a+b, c+d) PRINT (t) A)Y=3B)存在语法错误C)Y=7D)Y=0 【题9.13】以下程序段中存在错误的是 A)#define array size 100 int array [array size] B) #define pi 3. 141 59 #define S(r) PI*(r)*(r) (3.2) c) #define pi 3. 1415 9 #define S(r) Pl=(r)*(r) area=s(a+b) D) #define pi 3. 14159 #define S(r) PI*(r)*(r) area=S(a) 【题9.14】请读程序 #include #define MUL (x, y)(x)* maino int a=3, b=4.c c=MUL(a++, b++) printf(“%d\n”,c) 上面程序的输出结果是 A)12 【题9.15】# define能作简单的替代,用宏替代计算多项式4*x*x+3*x+2之值的函数f,正 确的宏定义是 A)#define f(x)4*x*x+3*x+2

A)11 B)10 C)6 D)宏定义不合法 【题 9.12】以下程序的运行结果是 。 #define MAX(A,B) (A)>(B)?(A):(B) #define PRINT(Y) printf(“Y=%d\t”,Y) main() { int a=1,b=2,c=3,d=4,t; t=MAX(a+b,c+d); PRINT(t); } A)Y=3 B)存在语法错误 C)Y=7 D)Y=0 【题 9.13】以下程序段中存在错误的是 。 A) #define array_size 100 int array1[array_size]; B) #define PI 3.14159 #define S(r) PI*(r)*(r) … area=S(3.2); C) #define PI 3.14159 #define S(r) PI*(r)*(r) … area=S(a+b); D) #define PI 3.14159 #define S(r) PI*(r)*(r) … area=S(a); 【题 9.14】请读程序: #include #define MUL(x,y) (x)*y main() { int a=3,b=4,c; c=MUL(a++,b++); printf(“%d\n”,c); } 上面程序的输出结果是 。 A)12 B)15 C)20 D)16 【题 9.15】#define 能作简单的替代,用宏替代计算多项式 4*x*x+3*x+2 之值的函数 f,正 确的宏定义是 。 A) #define f(x) 4*x*x+3*x+2

B) #define f 4:*x**x+3*x+2 C)#define f(a)(4*a*a+3*a+2) D)#define (4*a*a+3*a+2)f(a) 【题9.16】对下面程序段: 3 #define B(a)((A+1)*a) 3*(A+B(7)) 正确的判断是 )程序错误,不许嵌套宏定义 B)x=93 D)程序错误,宏定义不许有参数 【题9.17】以下程序中,第一个输出值是(1) 第二个输出值是(2) #define m 3 #define N (M+1) #define nn n*N/2 ino rinf(“%d\n” printf(“%d”,5*NN) 【1】A)3B)4C)6D)8 【2】A)17B)18C)30D)40 【题9.18】以下程序的输出结果为 #include #define F(y)3.84+y # define pr(a) printf(“%d”,(int)(a) #define print(a) PR(a): putchar('\n main RINT (F(3)*x) B)9 【题9.19】以下程序的输出结果为 #define pt 5. 5 #define S(x) PT=*xa*x

B) #define f 4*x*x+3*x+2 C) #define f(a) (4*a*a+3*a+2) D) #define (4*a*a+3*a+2) f(a) 【题 9.16】对下面程序段: #define A 3 #define B(a) ((A+1)*a) … x=3*(A+B(7)); 正确的判断是 。 A) 程序错误,不许嵌套宏定义 B) x=93 C) x=21 D) 程序错误,宏定义不许有参数 【题 9.17】以下程序中,第一个输出值是(1) ,第二个输出值是(2) 。 #include #define M 3 #define N (M+1) #define NN N*N/2 main() { printf(“%d\n”,NN); printf(“%d”,5*NN); } 【1】A)3 B)4 C)6 D)8 【2】A)17 B)18 C)30 D)40 【题 9.18】以下程序的输出结果为 。 #include #define F(y) 3.84+y #define PR(a) printf(“%d”,(int)(a)) #define PRINT(a) PR(a); putchar(‘\n’) main() { int x=2; PRINT(F(3)*x); } A)8 B)9 C)10 D)11 【题 9.19】以下程序的输出结果为 。 #define PT 5.5 #define S(x) PT*x*x main()

int a=l, b=2 printf(“%4.lfln”,S(a+b)) A)12.0 B)9.5 C)12.5D)33.5 【题9.20】以下在任何情况下计算平方数时都不会引起二义性的宏定义是 A)#define pOWer (x)x*x B)#define pOWer (x)(x)=(x) C)#define POWER (x)(x*x) D)#define POWER (x)((x)*(x)) 【题9.21】在“文件包含”预处理语句的使用形式中,当# include后面的文件名用“”(双 引号)括起时,寻找被包含文件的方式是 A)直接按系统设定的标准方式搜索目录 B)先在源程序所在目录搜索,再按系统设定的标准方式搜索 C)仅仅搜索源程序所在目录 D)仅仅搜索当前目录 【题9.22】在“文件包含”预处理语句的使用形式中,当# include后面的文件名用<>(尖 括号)括起时,寻找被包含文件的方式是 A)仅仅搜索当前目录 B)仅仅搜索源程序所在目录 C)直接按系统设定的标准方式搜索目录 D)先在源程序所在目录搜索,再按系统设定的标准方式搜索 【题9.23】请读程序: #define letter o char str[20]=“ C Language”,c hile(c=str[i])!=“\0’) #if letter f(c>=‘a'&&c<=‘z’) c=c-32 if(c≥=‘A’&&c<=‘Z’) #endif printf(“%c”,c)

{ int a=1,b=2; printf(“%4.1f\n”,S(a+b)); } A)12.0 B)9.5 C)12.5 D)33.5 【题 9.20】以下在任何情况下计算平方数时都不会引起二义性的宏定义是 。 A) #define POWER(x) x*x B) #define POWER(x) (x)*(x) C) #define POWER(x) (x*x) D) #define POWER(x) ((x)*(x)) 【题 9.21】在“文件包含”预处理语句的使用形式中,当#include 后面的文件名用“ ”(双 引号)括起时,寻找被包含文件的方式是 。 A) 直接按系统设定的标准方式搜索目录 B) 先在源程序所在目录搜索,再按系统设定的标准方式搜索 C) 仅仅搜索源程序所在目录 D) 仅仅搜索当前目录 【题 9.22】在“文件包含”预处理语句的使用形式中,当#include 后面的文件名用(尖 括号)括起时,寻找被包含文件的方式是 。 A) 仅仅搜索当前目录 B) 仅仅搜索源程序所在目录 C) 直接按系统设定的标准方式搜索目录 D) 先在源程序所在目录搜索,再按系统设定的标准方式搜索 【题 9.23】请读程序: #define LETTER 0 main() { char str[20]=“C Language”,c; int i; i=0; while((c=str[i])!=‘\0’) { i++; #if LETTER if(c>=‘a’&&c=‘A’&&c<=‘Z’) c=c+32; #endif printf(“%c”,c);

上面程序的运行结果是 A)C Language b)c language C)C LANGUAGE D)C lANGUAGE 【题9.24】以下正确的描述是 A)C语言的预处理功能是指完成宏替换和包含文件的调用 B)预处理指令只能位于C源程序文件的首部 C)凡是C源程序中行首以“#”标识的控制行都是预处理指令 D)C语言的编译预处理就是对源程序进行初步的语法检查 【题9.25】C语言提供的预处理功能包括条件编译,其基本形式为 #X标记符 程序段1 程序段2 fendi 这里XXX可以是 A) define或 include B) ifdef或 include C) ifdef或 ifndef或 define D) ifdef或 ifndef或if 9.2填空题 【题9.26】设有以下宏定义:# define WIdtH80 #define LenGth WIdtH+40 则执行赋值语句:v= LENGTH*20;(v为int型变量)后,v的值是 【题9.27】设有以下宏定义:# define WIdtH80 #define LENGTH (WIDTH+40) 则执行赋值语句:k= LENGTH*20;(k为int型变量)后,k的值是 【题9.28】下面程序的运行结果是 #define double (r)r*r int x=l, y=2, t t=DOUBLE (x+y) printf(“%d\n”,t); 【题9.29】下面程序的运行结果是 #define MUL(z)(z)*(z)

} } 上面程序的运行结果是 。 A)C Language B)c language C)C LANGUAGE D)c lANGUAGE 【题 9.24】以下正确的描述是 。 A) C 语言的预处理功能是指完成宏替换和包含文件的调用 B) 预处理指令只能位于 C 源程序文件的首部 C) 凡是 C 源程序中行首以“#”标识的控制行都是预处理指令 D) C 语言的编译预处理就是对源程序进行初步的语法检查 【题 9.25】C 语言提供的预处理功能包括条件编译,其基本形式为: #XXX 标记符 程序段 1 #else 程序段 2 #endif 这里 XXX 可以是 。 A)define 或 include B)ifdef 或 include C)ifdef 或 ifndef 或 define D)ifdef 或 ifndef 或 if 9.2 填空题 【题 9.26】设有以下宏定义: #define WIDTH 80 #define LENGTH WIDTH+40 则执行赋值语句:v=LENGTH*20; (v 为 int 型变量)后,v 的值是 。 【题 9.27】设有以下宏定义: #define WIDTH 80 #define LENGTH (WIDTH+40) 则执行赋值语句:k=LENGTH*20; (k 为 int 型变量)后,k 的值是 。 【题 9.28】下面程序的运行结果是 。 #define DOUBLE(r) r*r main() { int x=1,y=2,t; t=DOUBLE(x+y); printf(“%d\n”,t); } 【题 9.29】下面程序的运行结果是 。 #define MUL(z) (z)*(z) main()

printf(“%d\n”,MUL(1+2)+3) 【题9.30】下面程序的运行结果是 #define POWER (x)((x)*(x)) while(i(b)?(a)(c)?(a):(c)):((b)>(c)?(b):(c) mal x=1;y=2;z=3; MAX(x, y, z)) printf(“%d,”,MAX( printf(“%d\n”,MAX(x,y+z,z)) 【题9.33】下面程序的运行结果是 #define SELECT(a, b) a<b?a: b int m2, n=4 printf(“%dln”, SELECT(m,n)); 【题9.34】下面程序的运行结果是 #define MAX(a, b)(a)b?a: b)+1

{ printf(“%d\n”,MUL(1+2)+3); } 【题 9.30】下面程序的运行结果是 。 #define POWER(x) ((x)*(x)) main() { int i=1; while(i(b)?((a)>(c)?(a):(c)):((b)>(c)?(b):(c))) main() { int x,y,z; x=1; y=2; z=3; printf(“%d,”,MAX(x,y,z)); printf(“%d,”,MAX(x+y,y,y+x)); printf(“%d\n”,MAX(x,y+z,z)); } 【题 9.33】下面程序的运行结果是 。 #define SELECT(a,b) ab?a:b)+1 main()

=6,j=8,k printf(“%d\n”,MAX(i,j); 【题9.35】设有宏定义如下: #define MIN(x, y)(x) #define bOT(-2) #define TOP(BOT+5) # define pri(arg) printf(“%dn”,arg) #define FOR (arg) for((arg): (arg)-) int i=BOT, j=TOF FOR (j) case 1: PRI(i++) case 2: PRI(j); break default: PRI(i) 执行FOR循环时,j的初值是【1】,终值是【2】 【题9.37】下面程序的运行结果是 # define pr(ar) printf(“%d”,ar) intj,a[]={1,3,5,7,9,11,13,15},i=5; for (j=3 case 2: PR(a[i++]):break case 3: PR(a[--i])

{ int i=6,j=8,k; printf(“%d\n”,MAX(i,j)); } 【题 9.35】设有宏定义如下: #define MIN(x,y) (x) #define BOT (-2) #define TOP (BOT+5) #define PRI(arg) printf(“%d\n”,arg) #define FOR(arg) for(;(arg);(arg)--) main() { int i=BOT,j=TOP; FOR(j) switch(j) { case 1: PRI(i++); case 2: PRI(j); break; default: PRI(i); } } 执行 FOR 循环时,j 的初值是【1】,终值是【2】。 【题 9.37】下面程序的运行结果是 。 #define PR(ar) printf(“%d”,ar) main() { int j,a[]={1,3,5,7,9,11,13,15},i=5; for(j=3;j;j--) { switch(j) { case 1: case 2: PR(a[i++]); break; case 3: PR(a[--i]);

【题9.38】下面程序的运行结果是 #define pri printf # define nl“n” # define d“%d” #define di d nl #define d2 dd nl #define d3 dd nl #define d4 d dd d nl # define s“%s” int a, b, c, d har string[]=“ TABLE”; PRI(D2, a, b) PRI (S, string) 【题9.39】以下程序的运行结果是 #define a 4 #define B(x)A*x/2 float c, a=4.5: c=B(a) printf(“%5.1fn”,c) 【题9.40】以下程序的运行结果是 #include #define sw(x, y)I x'=y; y=x;x maino int a=10, b=01 printf(“%d,%dn”,a,b)

} } } 【题 9.38】下面程序的运行结果是 。 #define PRI printf #define NL “\n” #define D “%d” #define D1 D NL #define D2 D D NL #define D3 D D D NL #define D4 D D D D NL #define S “%s” main() { int a,b,c,d; char string[]=“TABLE”; a=1; b=2; c=3; d=4; PRI(D1,a); PRI(D2,a,b); PRI(D3,a,b,c); PRI(D4,a,b,c,d); PRI(S,string); } 【题 9.39】以下程序的运行结果是 。 #define A 4 #define B(x) A*x/2 main() { float c,a=4.5; c=B(a); printf(“%5.1f\n”,c); } 【题 9.40】以下程序的运行结果是 。 #include #define sw(x,y) { x^=y; y^=x; x^=y; } main() { int a=10,b=01; sw(a,b); printf(“%d,%d\n”,a,b); }

【题9.41】以下程序的输出结果是 # define pr(a) printf(“%d\t”,(int)(a)) #define PRiNt (a)PR(a): printf("ok! main int i, a=l for(i=0;i<3;i++) Print (ati) printf(“n”) 【题9.42】以下程序的输出结果是 main( int b=5 #define b2 #define f(x)b*(x) printf(“%d\n”,f(y+1)) #undef b printf(“%d\n”,f(y+1)) #define b3 printf(“%dn”,f(y+1)) 【题9.43】设有以下程序,为使之正确运行,请在【】中填入应包含的命令行。(注: try me0 函数在a:\ myfile.txt中有定义。) maino printf(“Ⅶn”) try me o printf(“\n”) 【题9.44】设有以下程序,为使之正确运行,请在【】中填入应包含的命令 【1】 maln printf(“Ⅶn”); t O) /*函数调用*/

【题 9.41】以下程序的输出结果是 。 #define PR(a) printf(“%d\t”,(int)(a)) #define PRINT(a) PR(a); printf(“ok!”) main() { int i,a=1; for(i=0;i<3;i++) PRINT(a+i); printf(“\n”); } 【题 9.42】以下程序的输出结果是 。 main() { int b=5; #define b2 #define f(x) b*(x) int y=3; printf(“%d\n”,f(y+1)); #undef b printf(“%d\n”,f(y+1)); #define b3 printf(“%d\n”,f(y+1)); } 【题 9.43】设有以下程序,为使之正确运行,请在【】中填入应包含的命令行。(注:try_me() 函数在 a:\myfile.txt 中有定义。) 【】 main() { printf(“\n”); try_me(); printf(“\n”); } 【题 9.44】设有以下程序,为使之正确运行,请在【】中填入应包含的命令行。 /* a.c */ 【1】 【2】 main() { printf(“\n”); try_me(); /* 函数调用 */

点击下载完整版文档(DOC)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共12页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有