编译预处理习题与答案_第1页
编译预处理习题与答案_第2页
编译预处理习题与答案_第3页
编译预处理习题与答案_第4页
编译预处理习题与答案_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章编译预处理9.1选择题【题9.1】以下叙述中不正确是。预处理命令行都必须以#号开始在程序中凡是以#号开始语句行都是预处理命令行C程序在执行过程中对预处理命令行进行处理以下是正确宏定义#defineIBM_PC【题9.2】以下叙述中正确是。在程序一行上能够出现多个有效预处理命令行使用带参宏时,参数类型应与宏定义时一致宏替换不占用运行时间,只占编译时间在以下定义中CR是称为“宏名”标识符#defineCR045【题9.3】请读程序: #defineADD(x)x+x main() { intm=1,n=2,k=3; intsum=ADD(m+n)*k; printf(“sum=%d”,sum); } 上面程序运行结果是。 A)sum=9 B)sum=10 C)sum=12 D)sum=18【题9.4】以下程序运行结果是。 #defineMIN(x,y)(x)<(y)?(x):(y) main() { inti=10,j=15,k; k=10*MIN(i,j); printf(“%d\n”,k); } A)10 B)15 C)100 D)150【题9.5】在宏定义#definePI3.14159中,用宏名PI代替一个。 A)常量 B)单精度数 C)双精度数 D)字符串【题9.6】以下程序运行结果是。 #include<stdio.h> #defineFUDGE(y) 2.84+y #definePR(a) printf(“%d”,(int)(a)) #definePRINT1(a) PR(a);putchar(‘\n’) main() { intx=2; PRINT1(FUDGE(5)*x); } A)11 B)12 C)13 D)15【题9.7】以下关于宏替换叙述不正确是。 A)宏替换不占用运行时间 B)宏名无类型 C)宏替换只是字符替换 D)宏名必须用大写字母表示【题9.8】C语言编译系统对宏命令处理是。在程序运行时进行在程序连接时进行和C程序中其它语句同时进行编译在对源程序中其它成份正式编译之前进行【题9.9】若有宏定义以下: #defineX5 #defineYX+1 #defineZY*X/2 则执行以下printf语句后,输出结果是。 inta;a=Y; printf(“%d\n”,Z); printf(“%d\n”,--a); A)7 B)12 C)12 D)7 6 6 5 5【题9.10】若有以下宏定义以下: #defineN2 #defineY(n)((N+1)*n) 则执行语句z=2*(N+Y(5));后结果是。 A)语句有错误 B)z=34 C)z=70 D)z无定值【题9.11】若有宏定义:#defineMOD(x,y)x%y 则执行以下语句后输出为。 intz,a=15,b=100; z=MOD(b,a); printf(“%d\n”,z++); A)11 B)10 C)6 D)宏定义不正当【题9.12】以下程序运行结果是。 #defineMAX(A,B)(A)>(B)?(A):(B) #definePRINT(Y)printf(“Y=%d\t”,Y) main() { inta=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】以下程序段中存在错误是。#definearray_size100intarray1[array_size];#definePI3.14159#defineS(r)PI*(r)*(r)…area=S(3.2);#definePI3.14159#defineS(r)PI*(r)*(r)…area=S(a+b);#definePI3.14159#defineS(r)PI*(r)*(r)…area=S(a);【题9.14】请读程序: #include<stdio.h> #defineMUL(x,y)(x)*y main() { inta=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,正确宏定义是。#definef(x)4*x*x+3*x+2#definef4*x*x+3*x+2#definef(a)(4*a*a+3*a+2)#define(4*a*a+3*a+2)f(a)【题9.16】对下面程序段: #defineA3 #defineB(a)((A+1)*a) … x=3*(A+B(7)); 正确判断是。程序错误,不许嵌套宏定义x=93x=21程序错误,宏定义不许有参数【题9.17】以下程序中,第一个输出值是(1),第二个输出值是(2)。 #include<stdio.h> #defineM3 #defineN(M+1) #defineNNN*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<stdio.h> #defineF(y)3.84+y #definePR(a)printf(“%d”,(int)(a)) #definePRINT(a)PR(a);putchar(‘\n’) main() { intx=2; PRINT(F(3)*x); } A)8 B)9 C)10 D)11【题9.19】以下程序输出结果为。 #definePT5.5 #defineS(x)PT*x*x main() { inta=1,b=2; printf(“%4.1f\n”,S(a+b)); } A)12.0 B)9.5 C)12.5 D)33.5【题9.20】以下在任何情况下计算平方数时都不会引发二义性宏定义是。#definePOWER(x)x*x#definePOWER(x)(x)*(x)#definePOWER(x)(x*x)#definePOWER(x)((x)*(x))【题9.21】在“文件包含”预处理语句使用形式中,当#include后面文件名用“”(双引号)括起时,寻找被包含文件方式是。直接按系统设定标准方式搜索目录先在源程序所在目录搜索,再按系统设定标准方式搜索仅仅搜索源程序所在目录仅仅搜索当前目录【题9.22】在“文件包含”预处理语句使用形式中,当#include后面文件名用<>(尖括号)括起时,寻找被包含文件方式是。仅仅搜索当前目录仅仅搜索源程序所在目录直接按系统设定标准方式搜索目录先在源程序所在目录搜索,再按系统设定标准方式搜索【题9.23】请读程序: #defineLETTER0 main() { charstr[20]=“CLanguage”,c; inti; i=0; while((c=str[i])!=‘\0’) { i++; #ifLETTER if(c>=‘a’&&c<=‘z’) c=c-32; #else if(c>=‘A’&&c<=‘Z’) c=c+32; #endif printf(“%c”,c); } } 上面程序运行结果是。 A)CLanguage B)clanguage C)CLANGUAGE D)clANGUAGE【题9.24】以下正确描述是。C语言预处理功效是指完成宏替换和包含文件调用预处理指令只能位于C源程序文件首部凡是C源程序中行首以“#”标识控制行都是预处理指令C语言编译预处理就是对源程序进行初步语法检验【题9.25】C语言提供预处理功效包含条件编译,其基本形式为: #XXX标识符 程序段1 #else 程序段2 #endif 这里XXX能够是。 A)define或include B)ifdef或include C)ifdef或ifndef或define D)ifdef或ifndef或if9.2填空题【题9.26】设有以下宏定义: #defineWIDTH80 #defineLENGTHWIDTH+40 则执行赋值语句:v=LENGTH*20;(v为int型变量)后,v值是。【题9.27】设有以下宏定义: #defineWIDTH80 #defineLENGTH(WIDTH+40) 则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k值是。【题9.28】下面程序运行结果是。 #defineDOUBLE(r)r*r main() { intx=1,y=2,t; t=DOUBLE(x+y); printf(“%d\n”,t); }【题9.29】下面程序运行结果是。 #defineMUL(z)(z)*(z) main() { printf(“%d\n”,MUL(1+2)+3); }【题9.30】下面程序运行结果是。 #definePOWER(x)((x)*(x)) main() { inti=1; while(i<=4)printf(“%d\t”,POWER(i++)); printf(“\n”); }【题9.31】下面程序运行结果是。 #defineEXCH(a,b){intt;t=a;a=b;b=t;} main() { intx=5,y=9; EXCH(x,y); printf(“x=%d,y=%d\n”,x,y); }【题9.32】下面程序运行结果是。 #defineMAX(a,b,c)((a)>(b)?((a)>(c)?(a):(c)):((b)>(c)?(b):(c))) main() { intx,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】下面程序运行结果是。 #defineSELECT(a,b)a<b?a:b main() { intm=2,n=4; printf(“%d\n”,SELECT(m,n)); }【题9.34】下面程序运行结果是。 #defineMAX(a,b)(a>b?a:b)+1 main() { inti=6,j=8,k; printf(“%d\n”,MAX(i,j)); }【题9.35】设有宏定义以下: #defineMIN(x,y)(x)<(y)?(x):(y) #defineT(x,y,r)x*r*y/4 则执行以下语句后,s1值为【1】,s2值为【2】。 inta=1,b=3,c=5,s1,s2; s1=MIN(a=b,b-a); s2=T(a++,a*++b,a+b+c);【题9.36】请读程序: #include<stdio.h> #defineBOT(-2) #defineTOP(BOT+5) #definePRI(arg)printf(“%d\n”,arg) #defineFOR(arg)for(;(arg);(arg)--) main() { inti=BOT,j=TOP; FOR(j) switch(j) { case1:PRI(i++); case2:PRI(j);break; default:PRI(i); } } 执行FOR循环时,j初值是【1】,终值是【2】。【题9.37】下面程序运行结果是。 #definePR(ar)printf(“%d”,ar) main() { intj,a[]={1,3,5,7,9,11,13,15},i=5; for(j=3;j;j--) { switch(j) { case1: case2:PR(a[i++]);break; case3:PR(a[--i]); } } }【题9.38】下面程序运行结果是。 #definePRIprintf #defineNL“\n” #defineD“%d” #defineD1DNL #defineD2DDNL #defineD3DDDNL #defineD4DDDDNL #defineS“%s” main() { inta,b,c,d; charstring[]=“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】以下程序运行结果是。 #defineA4 #defineB(x)A*x/2 main() { floatc,a=4.5; c=B(a); printf(“%5.1f\n”,c); }【题9.40】以下程序运行结果是。 #include<stdio.h> #definesw(x,y){x^=y;y^=x;x^=y;} main() { inta=10,b=01; sw(a,b); printf(“%d,%d\n”,a,b); }【题9.41】以下程序输出结果是。 #definePR(a)printf(“%d\t”,(int)(a)) #definePRINT(a)PR(a);printf(“ok!”) main() { inti,a=1; for(i=0;i<3;i++) PRINT(a+i); printf(“\n”); }【题9.42】以下程序输出结果是。 main() { intb=5; #defineb2 #definef(x)b*(x) inty=3; printf(“%d\n”,f(y+1)); #undefb printf(“%d\n”,f(y+1)); #defineb3 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(); /*函数调用*/ printf(“\n”); } 注:try_m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论