欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    C语言预处理命令篇.docx

    • 资源ID:3155527       资源大小:39.97KB        全文页数:9页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言预处理命令篇.docx

    C语言预处理命令篇 ·1· 预处理命令 1 选择题 1 下面叙述中正确的是。 A. 带参数的宏定义中参数是没有类型的 B. 宏展开将占用程序的运行时间 C. 宏定义命令是C语言中的一种特殊语句 D. 使用#include命令包含的头文件必须以“.h”为后缀 2 下面叙述中正确的是。 A. 宏定义是C语句,所以要在行末加分号 B. 可以使用#undef命令来终止宏定义的作用域 C. 在进行宏定义时,宏定义不能层层嵌套 D. 对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换 3 在“文件包含”预处理语句中,当#include后面的文件名用双引号括起时,寻找被包含文件的方式为。 A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,若找不到,再按系统设定的标准方式搜索 C. 仅仅搜索源程序所在目录 D. 仅仅搜索当前目录 4 下面叙述中不正确的是。 A. 函数调用时,先求出实参表达式,然后带入形参。而使用带参的宏只是进行简单的字符替换 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时也要分配内存单元,进行值传递 C. 对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏没有类型 D. 调用函数只可得到一个返回值,而用宏可以设法得到几个结果 5 下面叙述中不正确的是。 A. 使用宏的次数较多时,宏展开后源程序长度增长。而函数调用不会使源程序变长 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时不分配内存单元,不进行值传递 C. 宏替换占用编译时间 D. 函数调用占用编译时间 6 下面叙述中正确的是( )。 A. 可以把define和if定义为用户标识符 B. 可以把define定义为用户标识符,但不能把if定义为用户标识符 C. 可以把if定义为用户标识符,但不能把define定义为用户标识符 D. define和if都不能定义为用户标识符 7 下面叙述中正确的是。 A.#define和printf都是C语句 B.#define是C语句,而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=%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下列程序执行后的输出结果是( )。 #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 int i; i=M1+M2; printf("%dn",i); 程序编译后运行的输出结果是。 A. 10 B. 20 C. 25 14请读程序: #include<stdio.h> #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 16设有以下宏定义 #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;i+) printf("%dn",i); 该程序中的for循环执行的次数是( )。 A. 5 B. 6 C. 7 D. 8 19执行如下程序后,输出结果为。 #include <stdio.h> #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<=z) c=c-32; #else if(c>=A&&c<=Z) c=c+32; #endif printf("%c",c); 以上结果都不正确 ·5· A. C Language B. c language C. C LANGUAGE D. c LANGUAGE 2 填空题 1 以下程序的输出结果是_。 #define MAX(x,y) (x)>(y)?(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( ,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("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语言中的语句,因而,编译预处理命令不以分号作为结束符,所以选项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*10<15?10:15;,条件表达式的值为15。所以选项A)是正确的。 20.解析:条件编译的命令总共有三种:一种是#ifdef 标识符#else#endif,作用是当标识符被定义过,就编译前一段程序,否则编译后一段程序;第二种是#ifdef 标识符#else#endif,作用是当标识符未被定义过,就编译前一段程序,否则编译后一段程序;第三种是#if 表达式#else#endif,作用是表达式的值为“真”时编译前一段程序,否则编译后一段程序。本例题中,由于表达式LETTER的值为0,所以编译if(c>A && c<Z) 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

    注意事项

    本文(C语言预处理命令篇.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开