C语言预处理命令篇.docx

上传人:小飞机 文档编号:3155527 上传时间:2023-03-11 格式:DOCX 页数:9 大小:39.97KB
返回 下载 相关 举报
C语言预处理命令篇.docx_第1页
第1页 / 共9页
C语言预处理命令篇.docx_第2页
第2页 / 共9页
C语言预处理命令篇.docx_第3页
第3页 / 共9页
C语言预处理命令篇.docx_第4页
第4页 / 共9页
C语言预处理命令篇.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言预处理命令篇.docx》由会员分享,可在线阅读,更多相关《C语言预处理命令篇.docx(9页珍藏版)》请在三一办公上搜索。

1、C语言预处理命令篇 1 预处理命令 1 选择题 1 下面叙述中正确的是。 A. 带参数的宏定义中参数是没有类型的 B. 宏展开将占用程序的运行时间 C. 宏定义命令是C语言中的一种特殊语句 D. 使用#include命令包含的头文件必须以“.h”为后缀 2 下面叙述中正确的是。 A. 宏定义是C语句,所以要在行末加分号 B. 可以使用#undef命令来终止宏定义的作用域 C. 在进行宏定义时,宏定义不能层层嵌套 D. 对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换 3 在“文件包含”预处理语句中,当#include后面的文件名用双引号括起时,寻找被包含文件的方式为。 A. 直接

2、按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,若找不到,再按系统设定的标准方式搜索 C. 仅仅搜索源程序所在目录 D. 仅仅搜索当前目录 4 下面叙述中不正确的是。 A. 函数调用时,先求出实参表达式,然后带入形参。而使用带参的宏只是进行简单的字符替换 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时也要分配内存单元,进行值传递 C. 对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏没有类型 D. 调用函数只可得到一个返回值,而用宏可以设法得到几个结果 5 下面叙述中不正确的是。 A. 使用宏的次数较多时,

3、宏展开后源程序长度增长。而函数调用不会使源程序变长 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时不分配内存单元,不进行值传递 C. 宏替换占用编译时间 D. 函数调用占用编译时间 6 下面叙述中正确的是( )。 A. 可以把define和if定义为用户标识符 B. 可以把define定义为用户标识符,但不能把if定义为用户标识符 C. 可以把if定义为用户标识符,但不能把define定义为用户标识符 D. define和if都不能定义为用户标识符 7 下面叙述中正确的是。 A.#define和printf都是C语句 B.#define是C语句,而

4、printf不是 C.printf是C语句,但#define不是 D.#define和printf都不是C语句 2 8 以下叙述中正确的是。 A. 用#include包含的头文件的后缀不可以是“.a” B. 若一些源程序中包含某个头文件;当该头文件有错时,只需对该头文件进行修改,包含此头文件所有源程序不必重新进行编译 C. 宏命令行可以看作是一行C语句 D. C编译中的预处理是在编译之前进行的 9 下列程序运行结果为。 #define R 3.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R*R main printf(L=%f S=

5、%fn,L,S); A. L=18.849556 S=28.274333 B. 18.849556=18.849556 28.274333=28.274333 C. L=18.849556 28.274333=28.274333 D. 18.849556=18.849556 S=28.274333 10以下程序执行的输出结果是( )。 #define MIN(x,y) (x)(y)?(x):(y) main int i,j,k; i=10;j=15; k=10*MIN(i,j); printf(%dn,k); A.15 B.100 C.10 D.150 11下列程序执行后的输出结果是( )。

6、#define MA(x) x*(x-1) main int a=1,b=2; printf(%d n,MA(1+a+b); A. 6 B. 8 C. 10 D. 12 12以下程序的输出结果是( )。 #define M(x,y,z) x*y+z main int a=1,b=2, c=3; printf(%dn, M(a+b,b+c, c+a); 3 A. 19 B. 17 C. 15 D. 12 13程序中头文件typel.h 的内容是( )。 #define N 5 #define M1 N*3 程序如下: #include type1.h #define M2 N*2 main in

7、t i; i=M1+M2; printf(%dn,i); 程序编译后运行的输出结果是。 A. 10 B. 20 C. 25 14请读程序: #include #define SUB(X,Y) (X)*Y main int a=3, b=4; printf(%d, SUB(a+, b+); 上面程序的输出结果是。 A. 12 B. 15 C. 16 D. 20 15执行下面的程序后,a的值是( )。 #define SQR(X) X*X main( ) int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf(%dn,a); A. 10 B. 1 C. 9 1

8、6设有以下宏定义 #define N 3 #define Y(n) (N+1)*n) 则执行语句:z=2 * (N+Y(5+1);后,z的值为( )。 A. 出错 B. 42 C. 48 D. 54 17以下程序的输出结果是( )。 #define f(x) x*x main( ) int a=6,b=2,c; D. 30 D. 0 4 c=f(a) / f(b); printf(%dn,c); A. 9 B. 6 C. 36 D. 18 18有如下程序 #define N 2 #define M N+1 #define NUM 2*M+1 main int i; for(i=1;i=NUM;

9、i+) printf(%dn,i); 该程序中的for循环执行的次数是( )。 A. 5 B. 6 C. 7 D. 8 19执行如下程序后,输出结果为。 #include #define N 4+1 #define M N*2+N #define RE 5*M+M*N main printf(%d,RE/2); A.150 B.100 C. 41 D.20以下程序的输出结果是。 #define LETTER 0 main char str20= C Language,c; int i; i=0; while(c=stri)!=0) i+; #if LETTER if(c=a&c=A&c(y)?

10、(x):(y) main int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(%dn,t); 2 下面程序的运行结果是_。 #define N 10 #define s(x) x*x #define f(x) (x*x) main int i1,i2; i1=1000/s(N); i2=1000/f(N); printf(%d,%dn,i1,i2); 3 设有如下宏定义 #define MYSWAP(z,x,y) z=x; x=y; y=z; 以下程序段通过宏调用实现变量a、b内容交换,请填空。 float a=5,b=16,c; MYSWAP(

11、,a,b); 4 计算圆的周长、面积和球的体积 main float l,r,s,v; printf(input a radus: ); scanf(%f , ); l=2.0*PI*r; s=PI*r*r; v=4.0/3*( ); printf(l=%.4fn s=%.4fn v=%.4fn,l,s,v); 5 计算圆的周长、面积和球的体积 #define PI 3.1415926 #define L=2*PI*R; ; main 6 float r,l,s,v; printf(input a radus: ); scanf(%f,&r); CIRCLE(r,l,s,v); printf(

12、r=%.2fn l=%.2fn s=%.2fn v=%.2fn, ); 7 3 答案及部分解析 一选择题答案 1.A 2.B 3.B 4.B 5.D 6.B 7.D 8.D 9.A 10.A 11.B 12.D 13.C 14.A 15.B 16.C 17.C 18.B 19.C 20.B 1. 解析:关于宏的习题,我们要牢记一点:宏展开只是简单的字符串替换。宏名无类型,宏的参数也没有类型,所以选项A)是正确的。宏展开是在正式编译以前进行的,不会占用程序的运行时间,而会占用编译时间,所以选项B)错误。规定所有的编译预处理命令都不是C语言中的语句,因而,编译预处理命令不以分号作为结束符,所以选项

13、C)错误。头文件习惯上以“.h”为后缀,但它只是习惯而不是规定。所以选项D)错误。 9. 解析:注意双引号中的宏名不被展开,所以输出结果为L=18.849556 S=28.274333,而不是18.849556=18.849556 28.274333=28.274333。 10.解析:宏展开就是简单的字符串替换。语句k=10*MIN(i,j);经过宏展开为k=10*(i)(j)?(i):(j);。由于*号的优先级要高于号的优先级,因此要先进行10*(i)的运算;把值带入宏展开式为k=10*10A & cZ) c=c+32;语句,结果为c language。 二填空题答案 1 答案:7 2 答案:1000,10 3 答案: c 4 答案: #define PI 3.1415926 &r PI*r*r*r 5 答案: CIRCLE(R,L,S,V) S=PI*R*R;V=PI*R*R*R*4/3 r,l,s,v

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号