书签 分享 收藏 举报 版权申诉 / 18
上传文档赚钱

类型全国计算机等级考试2C课程第10讲-预编译处理课件.ppt

  • 上传人(卖家):ziliao2023
  • 文档编号:5683598
  • 上传时间:2023-05-02
  • 格式:PPT
  • 页数:18
  • 大小:157KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《全国计算机等级考试2C课程第10讲-预编译处理课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    全国 计算机等级考试 课程 10 预编 处理 课件
    资源描述:

    1、全国计算机等级考试 2C课程2023-5-2作者:张旭仟 版权所有 欢迎盗版2编译预处理命令的基本概念lANSI C规定,可以在源程序中加入一些“编译预处理命令”,以改进程序设计环境,提高编程效率。例如:l#define PI 3.14159l#include l虽然这些“编译预处理命令”也是由ANSI C统一规定的,但它们并非C语言的组成部分。含有这种“编译预处理命令”的源程序,只有在正式编译之前先对它们进行“预处理”后,才能被正常编译成“目标程序”。l语言提供的预处理命令主要有:宏定义命令、文件包含命令、条件编译命令。l为了与一般语句相区别,这些编译预处理命令”都以“”号开头。2023-5

    2、-2作者:张旭仟 版权所有 欢迎盗版3不带参数的宏替换命令l不带参数的宏替换命令l一般形式:define 标识符 字符串l例如:define PI 3.1415926l其中“define”是宏定义命令,PI 称为“宏名”,“3.1415926”称为宏体。l作用是将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。l在预编译时将宏名替换成字符串的过程称为“宏展开”。2023-5-2作者:张旭仟 版权所有 欢迎盗版4不带参数的宏替换命令l说明:(1)define命令、宏名、宏体之间必须用空格隔开;(2)由于宏定义不是C语言程序语句,行的末尾不需要加“;”号;如果加了分号则会作为宏体

    3、的一部分被一起置换。(3)宏名习惯上一般用大写字母表示,以便与普通变量名区别。但这并非语法规定,即用小写字母并不属于语法错误;(4)程序中被加上双引号“”的宏名,将不能被替换,如:printf(“PI”);语句中的PI不会被替换为3.1415926;(5)适当使用宏名代替一个字符串,可以减少程序中重复书写某些复杂数据的工作量。2023-5-2作者:张旭仟 版权所有 欢迎盗版5不带参数的宏替换命令l例如:#include#define PI 3.1415926void main()float l,s,r,v;printf(input radius:);scanf(%f,&r);l=2.0*PI*

    4、r;s=PI*r*r;v=4.0/3*PI*r*r*r;printf(l=%10.4fns=%10.4fnv=%10.4fn,l,s,v);运行情况如下:1=25.1328s=50.2655v=150.79662023-5-2作者:张旭仟 版权所有 欢迎盗版6不带参数的宏替换命令(6)宏定义是用宏名代替一个字符串,只作简单置换,并不对字符串(宏体)作正确性检查。(7)#define命令通常写在文件开头或函数之前。默认情况下,宏名的有效范围,是从宏定义命令之后开始,直到本源文件结束。(8)当然,也可以用#undef命令,提前终止宏定义的作用范围。如:#define G 9.8 _void mai

    5、n()G的有效范围 _#undef G f1()2023-5-2作者:张旭仟 版权所有 欢迎盗版7不带参数的宏替换命令(9)在进行宏定义时,可以引用已定义的宏名,宏展开时将会层层置换。例如:#include#define R 3.0#define PI 3.1415926#define L 2*PI*R#define S PI*R*Rvoid main()printf(L=%fnS=%fn,L,S);编译预处理时:printf(“L=%fnS=%fn”,L,S);语句将被展开为printf(“L=%fnS=%fn”,2*3.1415926*3.0,3.1415926*3.0*3.0);2023

    6、-5-2作者:张旭仟 版权所有 欢迎盗版8带参数的宏定义l带参数的宏定义l作用:不只进行简单的字符串替换,还进行参数的替换。l一般形式为:define 宏名(参数表)字符串 例如:#define S(a,b)a*b area=S(3,2);说明:程序中用和分别代替宏定义中的形式参数和b,用*代替S(3,2)。因此赋值语句展开为:area=3*22023-5-2作者:张旭仟 版权所有 欢迎盗版9带参数的宏定义l对带参的宏定义是这样展开置换的:l对带实参的宏,如S(3,2),基本原则也是按define命令行中指定的字符串从左到右进行置换的。l但如果字符串中包含有宏名中定义的形参,如:“*”中的a和

    7、b,则要用程序中相应的实参(可以是常量、变量或表达式)来代替;其他字符,如“*”中的*号,则原样保留。图中S(3,2)将被置换为3*2,其中3和2是实参,将代替指定字符串a*b中的a和b,*不是参数,则被原样保留。2023-5-2作者:张旭仟 版权所有 欢迎盗版10带参数的宏定义l例如:#include#define PI 3.1415926#define S(r)PI*r*rvoid main()float a,area;a=3.6;area=S(a);printf(r=%fnarea=%fn,a,area);说明:赋值语句“area=S(a);”展开后被替换为:area=3.1415926

    8、*;运行结果:r=3.600000area=40.7150382023-5-2作者:张旭仟 版权所有 欢迎盗版11文件包含命令l所谓“文件包含”,是指一个源文件可以将另外一个源文件的全部内容包括进来。l语言提供了#include命令用来实现“文件包含”的操作。其一般形式为:#include 文件名 或#include l说明:(1)在#include命令中,文件名可以用双撇号或尖括号括起来。(2)一个#include命令只能指定一个被包含文件,如果要包含个文件,要用个#include命令。2023-5-2作者:张旭仟 版权所有 欢迎盗版12文件包含命令l说明:(3)在一个被包含文件中又可以包含

    9、另一个被包含文件,即文件包含是可以嵌套的。如下图所示#include A#include BCfile1.cfile2.cfile3.cCBC2023-5-2作者:张旭仟 版权所有 欢迎盗版13小练习:1、以下叙述中错误的是(2008年4月)A)在程序中凡是以“”开始的语句行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#define MAX是合法的宏定义命令行 D)C程序对预处理命令行的处理是在程序执行的过程中进行的 2023-5-2作者:张旭仟 版权所有 欢迎盗版14小练习:2、有以下程序(2010年3月)#include#define SUB(a)(a)-(a)main

    10、()int a=2,b=3,c=5,d;d=SUB(a+b)*c;printf(%dn,d);程序运行后的输出结果是A)0B)-12C)-20D)102023-5-2作者:张旭仟 版权所有 欢迎盗版15小练习:3、有以下程序(2009年9月)#include#define f(x)x*x*xmain()int a=3,s,t;3+1*3+1*3+1s=f(a+1);t=f(a+1);printf(%d,%d,s,t);程序运行后的输出结果是A)10,64 B)10,10 C)64,10D)64,642023-5-2作者:张旭仟 版权所有 欢迎盗版16小练习:4、有以下程序#include#de

    11、fine PT 3.5;#define S(x)PT*x*x;mian()int a=1,b=2;printf(“%4.1fn”,S(a+b);3.5*1+2*1+2 程序运行后输出的结果是A)14.0 B)31.5 C)7.5 D)程序有错无输出结果2023-5-2作者:张旭仟 版权所有 欢迎盗版17小练习:5、有一个名为init.txt的文件,内容如下:#define HDY(A,B)A/B#define PRINT(Y)printf(“y=%dn”,Y)有以下程序#include stdio.h#include init.txtmain()int a=1,b=2,c=3,d=4,k;k=HDY(a+c,b+d);PRINT(k);下面针对该程序的叙述正确的是(D)A)编译有错 B)运行出错 C)运行结果为 y=0 D)运行结果为 y=62023-5-2作者:张旭仟 版权所有 欢迎盗版18

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:全国计算机等级考试2C课程第10讲-预编译处理课件.ppt
    链接地址:https://www.163wenku.com/p-5683598.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库