C语言程序设计_第二版_8.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第8课编译预处理

课题

编译预处理

课时

5课时(225min)。

教学目标

知识技能目标:

1.了解宏定义。

2.通过学习与练习掌握文件包含。

思政育人目标:

让学生通过学习编译预处理,具有积极向上的学习态度,具备自学、自省、自控的能力。

教学重难点

教学重点:宏定义

教学难点:文件包含

教学方法

讲授法、问答法、讨论法

教学用具

电脑、投影仪、多媒体课件、教材

教学设计

第1节课:考勤(2min)--知识讲解(40min)--作业布置(3min)

第2节课:知识讲解(40min)--课堂小结(3min)--作业布置(2min)

第3节课:知识讲解(40min)--课堂小结(3min)--作业布置(2min)

第4节课:知识讲解(40min)--课堂小结(3min)--作业布置(2min)

第5节课:知识讲解(40min)--课堂小结(3min)--作业布置(2min)

教学过程

主要教学内容及步骤

设计意图

考勤

(2min)

■【教师】清点上课人数,记录好考勤

■【学生】班干部报请假人员及原因

培养学生的组织纪律性,掌握学生的出勤情况

知识讲解

(40min)

【教师】展示宏定义

任务描述

用带参数的宏计算圆面积。

预备知识

在C语言源程序中,允许用一个标识符来表示字符串(不是狭义的字符串常量或变量,而是指一串排列符合C语言规定的字符),称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代替,这称为“宏代换”或“宏展开”。

宏定义是由源程序中的宏命令完成的,宏代换是由预处理程序自动完成的,宏替换不占用程序的运行时间。“宏”按照有无参数,划分为无参数的宏和带参数的宏两种。

一、无参数的宏定义

无参数的宏的宏名后面不带参数,其定义的一般形式为:

#define标识符字符串

#是预处理命令的标志,“define”为宏定义命令,“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。前面介绍过的符号常量的定义就是一种无参数宏定义。

例如:

#definePI3.1415926

#definesum1+2

【注意】

(1)宏定义是用宏名来表示一个字符串,这只是一种简单的代换,字符串中可以包含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。如果有错误,只能在编译已被宏展开后的源程序里发现。

(2)宏定义不是说明语句,在行末不必加分号,若加了分号,则连分号一起被置换。

例如:

#definesum1+2;

……

result=sum/2;

宏展开后实际上就是:

result=1+2;/2

这样显然是不对的。

(3)宏定义必须写在函数之外,其作用域为从宏定义命令起到源程序结束。如果要终止作用域可使用#undef命令。例如:

#definePI3.1415926

voidmain()

{

}

#undefPI

f()

{…}

表示PI只在main函数中有效,在f函数中无效。

(4)宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换。

(5)宏名若在源程序中用引号括起来,则预处理程序不对其做宏代换。例如:

#defineL6.283185

voidmain()

{

printf(L=%f,L);

}

运行结果为:

L=6.283185

本例中可以看到,在printf函数中,只有第二个L被宏替换了,第一个L仍正常显示。这是因为第一个L被引号括住,使其不参与替换。

(6)习惯上,宏名用大写字母表示,以便与变量名区别,但也允许用小写字母。

二、带参数的宏定义

C语言中允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中不仅要宏展开,而且要用实参去代换形参。

带参数宏定义的一般形式为:

#define宏名(形参表)字符串

例如:

#defineAREA(R)3.14*R*R

#defineSUM(X,Y)X+Y

带参数宏调用的一般形式为:

宏名(实参表);

【例8-1】把下列运算表达式定义为带参的宏。

(1)求两个数的小者。

(2)求x的绝对值。

(3)判断x是否奇数。

(4)两个整数交换。

解答:带参的宏定义如下:

(1)#defineMIN(a,b)((a)(b)?(a):(b))

(2)#defineABS(x)((x)=0)?(x):(-x)

(3)#defineISO(x)(((x)%2==1)?1:0)

(4)#defineCHANGE(a,b){intt

文档评论(0)

yuzuzou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档