《2022年预处理命令答案参考 .pdf》由会员分享,可在线阅读,更多相关《2022年预处理命令答案参考 .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、预处理命令一、选择题1.C 语言中,宏定义有效范围从定义处开始,到源文件结束处结束,但可以用D 来提前解除宏定义的作用。A)#ifdef B)endif C)#undefine D)#undef 2.以下不正确的叙述是C。A)预处理命令都必须以“#”号开始B)在程序中凡是以“#”号开始的语句行都是预处理命令行C)C 语言在执行过程中对预处理命令行进行处理D)#define ABCD 是正确的宏定义3.以下正确的叙述是C。A)在程序的一行中可以出现多个有效的预处理命令行B)使用带参宏时,参数的类型应与宏定义时的一致C)宏替换不占用运行时间,只占编译时间D)宏定义不能出现在函数内部4.以下不正确的
2、叙述是D。A)宏替换不占用运行时间B)宏名无类型C)宏替换只是字符替换D)宏名必须用大写字母表示5.以下正确的叙述是C。A)C 语言的预处理功能是指完成宏替换和包含文件的调用B)预处理命令只能位于C 源程序文件的首部C)凡是 C 源程序中行首以“#”标识的控制行都是预处理命令D)C 语言的编译预处理就是对源程序进行初步的语法检查6.在文件包含预处理语句(#include)的使用形式中,当之后的文件名用“”(双引号)括起时,寻找被包含文件的方式是B。A)直接按系统设定的标准方式搜索目录B)先在源程序所在目录搜索,再按系统设定的标准方式搜索C)仅仅搜索源程序所在目录D)仅仅搜索当前目录7.在文件包
3、含预处理语句(#include)的使用形式中,当之后的文件名用(尖引号)括起时,寻找被包含文件的方式是A。A)直接按系统设定的标准方式搜索目录B)先在源程序所在目录搜索,再按系统设定的标准方式搜索C)仅仅搜索源程序所在目录D)仅仅搜索当前目录8.C 语言的编译系统对宏命令的处理D。A)在程序运行时进行的B)在程序连接时进行的C)和 C 程序中的其它语句同时进行编译的名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -D)在对源程序中其它语句正式编译之前进行的9.以下程序的输出结果是A。#define MIN(x,y)(x)(y)?(x):(y)main()int i,j,k
4、;i=10;j=15;k=10*MIN(i,j);printf(“%d”,k);A)15 B)100 C)10 D)150 10.以下程序的输出结果是B。#include#define ADD(y)3.54+y#define PR(a)printf(“%d”,(int)(a)#define PR1(a)PR(a);putchar(,n?)main()int i=4;PR1(ADD(5)*i);A)20 B)23 C)10 D)0 11.以下程序的输出结果是B。#include#define N 2#define M N+2#define CUBE(x)(x*x*x)main()int i=M;
5、i=CUBE(i);printf(“%dn”,i);A)17 B)64 C)125 D)53 二、填空题1.C 提供的预处理功能主要有三种,分别是宏定义、文件包含和条件编译。2.设有以下宏定义:#define WIDTH 80#define LENGTH WIDTH+40 则执行赋值语句:v=LENGTH*20;(v 为 int 型变量)后,v 的值是880。3.设有以下宏定义:#define WIDTH 80#define LENGTH(WIDTH+40)则执行赋值语句:k=LENGTH*20;(k 为 int 型变量)后,k 的值是2400。三、读程序写结果题1以下程序的输出结果是。#de
6、fine PR(int)printf(”int=%dn”,int)main()int x=1,y=1,z=1;x+=y+=z;PR(xy?y:x);PR(xy?x+:y+);PR(x);PR(y);PR(z+=xy?x+:y+);PR(y);2.以下程序的输出结果是。#include#define PR(a)printf(”a=%d”,(int)(a)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 4 页 -#define PRINT(a)PR(a);putchar(,n?);main()float x=3.1415,y=1.823;PRINT(2*x);PRINT(3*y*y)
7、;3.以下程序的输出结果是。#include#define PR(a)printf(”a=%d”,(int)(a)#define PRINT(a)PR(a);putchar(,n?);#define PRINT2(a,b)PR(a),PRINT(b)#define PRINT3(a,b,c)PR(a),PRINT2(b,c)main()float x=3.1415,y=1.823,z=0.923;PRINT3(x,2*y,3*z)4.以下程序的输出结果是。#define A 3#define B(a)(A+1)*a)main()int x;x=3*(A+B(7);printf(”x=%4dn”
8、,x);5.以下程序的输出结果是。#define POWER(x)(x)*(x)main()int i=1;while(i=4)printf(“%d”,POWER(i+);6.以下程序的输出结果是。main()int b=5;#define b 2#define f(x)b*(x)int y=3;printf(“%d,”,f(y+1);#undef b printf(“%d,”,f(y+1);#define b 3 printf(“%dn”,f(y+1);7.以下程序的输出结果是。#define DEBUG main()int a=14,b=15,c;c=a/b;#ifdef DEBUG pr
9、intf(“a=%d,b=%d,”,a,b);#endif名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 4 页 -printf(“c=%dn,”,c);a=14,b=15,c=0 8.以下程序的输出结果是。main()int a=20,b=10,c;c=a/b;#ifdef DEBUG printf(“a=%d,b=%d,”,a,b);#endifprintf(“c=%dn,”,c);四、编程题1.编写一个宏定义MYALPHA(c),用以判定c 是否是字母字符,若是,得1;否则得0。2.编写一个宏定义AREA(a,b,c),用于求一个边长为a、b 和 c 的三角形的面积。其公式为:s=(a+b+c)/2 area=s(s-a)(s-b)(s-c)3.编写一个程序求三个数中最大者,要求用带参宏实现。4.编写一个程序求1+2+.+n 之和,要求用带参宏实现。5.编写一个宏定义LEAPYEAR(y),用以判定年份y 是否是闰年。判定标准是:若y 是 4 的倍数且不是100 的倍数或者y 是 400 的倍数,则y 是闰年。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 4 页 -
限制150内