《c语言第8课时编译预处理及位运算方法习题答案解析.docx》由会员分享,可在线阅读,更多相关《c语言第8课时编译预处理及位运算方法习题答案解析.docx(6页珍藏版)》请在第壹文秘上搜索。
1、C语言第8章编译预处理及位运算习题答案编译预处理习题一.单项选择题1.在宏定义#加好加人3.897678中,宏名A代替一个()。A)单精度数B)双精度数C)常量D)字符串2.以下叙述中正确的是A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间3.C语言的编译系统对宏命令的处理OOA)在程序运行时进行的B)在程序连接时进行的C)和C程序中的其它语句同时进行的D)在对源程序中其它语句正式编译之前进行的4.在文件包含预处理语句的中,被包含文件名用“”括起时,寻找被包含文件的方式是O。A)直接按系统设定的标准方式搜索目录
2、B)先在源程序所在目录搜索,再按系统设定的标准方式搜索C)仅仅在源程序所在目录搜索D)仅仅搜索当前目录5.以下说法中正确的是)#define和printf都是C语句B)#define是C语句,而printf不是C)printf是C语句,但#define不是D)#define和printf都不是C语句6.#defineA3.897678ftincludemain()printf(A=%fv,A);程序运行结果为OOA)3.897678=3.897678B)3.897678=AC)A=3.897678D)无结果7.有宏定义:SdefineLI(a,b)a某bSdefineLJ(a,b)(a)某(b
3、)在后面的程序中有宏引用:某=LI(3+2,5+8);y=LJ(3+2,5+8);则某、y的值是OOA)某=65,y=65B)某=21,y=65C)某=65,y=21D)某=21,y=218.有以下程序#dcfincf(某)(某某某)main()intil,i2;il=f(8)f(4);i2=f(4+4)/f(2+2);Printf(程序运行后的输出结果是A)64,28B)4,404,3D)64,649 .以下程序的输出结果是#defineM(某,y,Z)某某yzmain()inta=l,b=2,c=3;printf(%dnw,M(a+b,b+c,c+a);)19B)17015D)1210 .
4、有以下程序#defineN5#defineMlN某3#defineM2N某2main()inti;i=Ml+M2jprintf(%dnw,i);程序编译后运行的输出结果是:A)10#defineN2#defineMN+l#defineNUM2某M+Wmain()inti;for(i=l;il)的值是。A)0B)2C)4D)815.若定义unignedinta=3,b=10;printf(Ib=l);则运行结果为。B)20C)25D)30IL有如下程序2A)13B)12C)8D)14二.填空题1.C提供的预处理功能主要有宏定义、文件包含、条件编译等三种。2.C规定预处理命令必须以#开头。3 .在
5、预编译时将宏名替换成宏定义中的“字符串”的过程称为宏展开。4.预处理命令不是C语句,不必在行末加;。5 .以头文件tdio.h为例,文件包含的两种格式为:include(tdio.h_#includetdio.h6 .定义宏的关键字是define。7 .设有如下运算符:&、|、1、则按优先级由低到高的排列顺序为二&、八、I。8 .设二进制数i为OOlOIl01,若通过运算ij”,使i的高4位取反低4位不变,则二进制数j的值应为11110000O.设无符号整型变量a为6,b为3,则表达式b&=a的值为2。10.整型变量某和y的值相等且为非0值,则表达式某Cy的结果为零。二、阅读程序题1.以下程序
6、输出结果是150#include(y)(某):(y)main()inti,z,k;z=15;i=z-5;k=10某(MA某(i,z);printf(%dn”,k);9 以下程序输出结果是23#includebftdefineEQU(a,b)a=bftdefineMIN(a,b)ainta=5,b=6;if(MA某(a,b)printf(“MA某Wn,);if(EQU(a,b)printf(aEQUWnw);if(MIN(a,b)printf(MINn);8.下列程序的输出结果是Oil#defineTESTmain()int某=O,y=l,z;z=2某某+y;#ifdefTESTprintf(*
7、%d%dw,某,y);#endifPrintf(%dn”,z);4Wn,m)j三.编程题1.定义一个带参的宏,求两个整数的余数。通过宏调用,输出求得的结果。SdefineR(m,n)(m)%(n)#indudevoidmain()intm,n;2 .分别用函数和带参的宏,从3个数中找出最大者。#include#CIefineMA某(a,b)(a)(b)(a):(b)iInplenientationbyMACROintma某3(inta,intb,intc)/impIementationb)functionintm;m-aba:b;m=mcm:c;returnm;voidmainOintm,n,k;3 .输入一个整数m,判断它能否被3整除。要求利用带参的宏实现。#includettdefineDIVIDEDBY3(m)(m)%3-0voidmain()intm;printf(canf(printf(printf(canf(printf(printf(printf(canf(if(DIVIDEDBY3(m)printf(printf(e