C语言程序设计教程第版学习教案

上传人:莉**** 文档编号:90490395 上传时间:2022-05-15 格式:PPTX 页数:27 大小:170.60KB
收藏 版权申诉 举报 下载
C语言程序设计教程第版学习教案_第1页
第1页 / 共27页
C语言程序设计教程第版学习教案_第2页
第2页 / 共27页
C语言程序设计教程第版学习教案_第3页
第3页 / 共27页
资源描述:

《C语言程序设计教程第版学习教案》由会员分享,可在线阅读,更多相关《C语言程序设计教程第版学习教案(27页珍藏版)》请在装配图网上搜索。

1、会计学1C语言程序设计语言程序设计(chn x sh j)教程第教程第版版第一页,共27页。“文件包含文件包含“:是指一个源文件可以将另外一是指一个源文件可以将另外一个个 源文件的全部内容包含进来。源文件的全部内容包含进来。 C语言提供语言提供#include命令来实现命令来实现(shxin)“文件包含文件包含”的操作,其一般形式为的操作,其一般形式为: #include “文件名” #include 或或作用作用(zuyng):使编译系统把指定的被包:使编译系统把指定的被包含文件嵌入含文件嵌入 到带有到带有#include的源文件中。的源文件中。第1页/共27页第二页,共27页。第2页/共2

2、7页第三页,共27页。第3页/共27页第四页,共27页。包含文件的查找方法:#include “文件名文件名” 先在当前工作目录中去查找(ch zho),若找不到再到指定的标准目录中去查找(ch zho)。如:对Turbo C编译系统,先在用户目录(ml)下 查找,然后在TCinclude文件夹中查找。#include 直接到系统指定的标准(biozhn)目录中去查找。如:对Turbo C编译系统,直接在TCinclude 文件夹中查找。第4页/共27页第五页,共27页。第5页/共27页第六页,共27页。根据根据(gnj)经验的总结,以下内容放在头文件中比较经验的总结,以下内容放在头文件中比较

3、合适。需要说明的是合适。需要说明的是C语言对此没有强行的规定。语言对此没有强行的规定。包含指令(嵌套),如:包含指令(嵌套),如:#include函数声明,如:函数声明,如:extern float fun(float x);类型说明,如:类型说明,如:enum bool false,true常量定义,如:常量定义,如:const float pi=3.14159;数据声明,如:数据声明,如:extern int m;宏定义,如:宏定义,如:#define PI 3 .1415926;第6页/共27页第七页,共27页。10.2.1 无参宏定义无参宏定义(dngy) 作用:作用: 用标识符来代表

4、一个字符串。用标识符来代表一个字符串。宏名宏名宏内容宏内容(nirng)无分号无分号宏宏:是对正文进行代入或嵌入的一种功能。即从是对正文进行代入或嵌入的一种功能。即从 一字符流中取出某个字符串去代替源程序里一字符流中取出某个字符串去代替源程序里 的标识符。的标识符。1.一般形式一般形式: # #define define 标识符标识符 常量常量第7页/共27页第八页,共27页。引例引例(yn l):#define PI 3.1415926main() float l,s,r,v; printf(“input radius :”); scanf(“%f”,&r); l=2.0*PI*r; s=P

5、I*r*r; v=3.0/4*PI*r*r*r; printf(“l=%10.4fns=%10.4fnv=%10.4fn”,l,s,v); 其中其中 #define PI 3.1415926 作用作用(zuyng)是指定标识符是指定标识符PI来代表来代表“3.1415926”第8页/共27页第九页,共27页。宏定义允许嵌套,在宏定义的字符串中可宏定义允许嵌套,在宏定义的字符串中可以使用已经以使用已经(y jing)定义的宏名。在宏展开定义的宏名。在宏展开中由预处理程序层层代换。中由预处理程序层层代换。例如:例如:#define N 2#define M N+1#define NUM (M+1)

6、*M/2 替换替换(t hun)的过程为;的过程为;NUM=(M+1)*M/2;而;而M=M+1,也就是说,也就是说NUM=(N+1+1)*N+1/2。 第9页/共27页第十页,共27页。宏名用做代替一个字符串,不作语法宏名用做代替一个字符串,不作语法(yf)检查检查;宏定义的字符串不能以宏定义的字符串不能以“;”结尾结尾(jiwi),字符,字符串结束后一串结束后一 定要换行;定要换行; C语言允许宏定义出现在程序中函数外面的任何语言允许宏定义出现在程序中函数外面的任何 位置,但一般情况位置,但一般情况(qngkung)下它总写在文件下它总写在文件的开头。的开头。说明:说明:宏名一般习惯用大写

7、字母,以便与变量名相区别;宏名一般习惯用大写字母,以便与变量名相区别; 在进行宏定义时,可以引用已定义的宏名;在进行宏定义时,可以引用已定义的宏名;(6)宏名的前后应有空格,以便准确地辨认宏名,如宏名的前后应有空格,以便准确地辨认宏名,如果没有留空格,则程序运行的结果会出错。果没有留空格,则程序运行的结果会出错。 第10页/共27页第十一页,共27页。 说明说明(shumng):宏替换由编译程序预先宏替换由编译程序预先(yxin)进行;进行; 宏替换范围是除字符串以外的所有宏替换范围是除字符串以外的所有(suyu)宏宏名字;名字;若替换后文本串中仍含有宏名字,将再次进若替换后文本串中仍含有宏名

8、字,将再次进 行替换,直到程序中不含宏名字为止。行替换,直到程序中不含宏名字为止。 #define PI 3.1415926#define R 3.0#define L 2*PI*R#define S PI*R*R宏替换宏替换(宏展开宏展开) :用宏内容(字符串)原样代:用宏内容(字符串)原样代 换程序中的所有宏名字的过程换程序中的所有宏名字的过程。 第一次替换:printf(l=%f ns=%fn, 2*PI*R, PI*R*R);二:printf(l=%f ns=%fn, 2*3.1415926*3.0, 3.1415926*3.0*3.0); main() printf(l=%f ns=

9、%fn,L,S);第11页/共27页第十二页,共27页。10.2.2 有参宏定义有参宏定义(dngy) 一般形式一般形式: # #define define 宏名(宏形参数表)宏名(宏形参数表) 字符串字符串作用:作用: 宏替换时以实参数替代形参数。宏替换时以实参数替代形参数。#define PI 3.1415926#define S(r) PI*r*rmain()float r1=3.6, area;area=S(r1); /* S(r1)用PI*r1*r1替换(t hun) */printf(r=%f area=%fn,r1,area);第12页/共27页第十三页,共27页。注意:注意:

10、宏替换后,程序的原意表达。宏替换后,程序的原意表达。#define PF(x) x*x /*#define PF(x) (x)*(x) */*#define PF(x) (x)*(x) */main() int a=2, b=3, c; c=PF(a+b)/PF(a+1); printf(nc=%d ,c);按第一种宏定义(dngy):c=a+b*a+b/a+1*a+1;按第二种宏定义(dngy):c=(a+b)*(a+b)/(a+1)*(a+1);按第三种宏定义(dngy):c=(a+b)*(a+b)/(a+1)*(a+1);注意替换时不求值,注意替换时不求值,只是字符串的原样替换只是字符串

11、的原样替换第13页/共27页第十四页,共27页。#define MAX(x,y) xy?x:ymain()int n1,n2;float f1,f2;scanf(%d%d%f%f,&n1,&n2,&f1,&f2); printf(maxi=%dmaxf=%f,MAX(n1,n2),MAX(f1,f2);程序程序(chngx)举例:举例:经预编译宏替换后的经预编译宏替换后的printf语句语句(yj)如下:如下:printf(maxi=%dmaxf=%f,n1n2?n1:n2, f1f2?f1:f2);第14页/共27页第十五页,共27页。第15页/共27页第十六页,共27页。10.2.4 带参

12、数带参数(cnsh)的宏替换与函数的主的宏替换与函数的主要区别要区别函数调用时,先求出实参表达式的值,然后代入函数调用时,先求出实参表达式的值,然后代入 形参。而使用形参。而使用(shyng)(shyng)带参的宏只是进行简单的带参的宏只是进行简单的字符替换。字符替换。函数调用是在程序运行时处理的,分配临时的内函数调用是在程序运行时处理的,分配临时的内 存单元。而宏替换则是在编译时进行的,在展开存单元。而宏替换则是在编译时进行的,在展开 时并不分配内存单元,不进行值的传递时并不分配内存单元,不进行值的传递(chund)(chund)处理处理,也,也 没有没有“返回值返回值”的概念。的概念。函数

13、中函数名及参数均有一定的数据类型,而宏函数中函数名及参数均有一定的数据类型,而宏 不存在类型问题,宏名及其参数无类型。不存在类型问题,宏名及其参数无类型。宏替换不占运行时间,只占编译时间,而函数调宏替换不占运行时间,只占编译时间,而函数调 用则占运行时间。用则占运行时间。第16页/共27页第十七页,共27页。第17页/共27页第十八页,共27页。条件编译:根据条件选择被编译的源程序行。条件编译:根据条件选择被编译的源程序行。使用宏定义的标识符作为编译条件使用宏定义的标识符作为编译条件 使用常量表达式的值作为编译条件使用常量表达式的值作为编译条件 一、使用宏定义一、使用宏定义(dngy)的标识符

14、作为编译条件的标识符作为编译条件 # ifdef 标识符 程序段1 # else 程序段2 #endif 形式一:形式一:作用:当所指定的标识符作用:当所指定的标识符已经被已经被#define 命令命令(mng lng)定义过,则在定义过,则在程序编译阶段只编译程序程序编译阶段只编译程序段段1,否则编译程序段,否则编译程序段2。第18页/共27页第十九页,共27页。# ifdef 标识符 程序段1 #endif 形式二:形式二:作用:当所指定的标识作用:当所指定的标识符已经被符已经被#define 命令命令(mng lng)定义过,则定义过,则在程序编译阶段只编译在程序编译阶段只编译程序段程序

15、段1,# ifndef 标识符 程序段1 # else 程序段2 #endif 形式三:形式三:作用:当所指定作用:当所指定(zhdng)的标识符未被的标识符未被#define 命命令定义过,则在程序编译令定义过,则在程序编译阶段只编译程序段阶段只编译程序段1,否则,否则编译程序段编译程序段2。第19页/共27页第二十页,共27页。例1: #ifdef TURBO #define int int #else #define int short #endif可用于实现程序可用于实现程序(chngx)在不在不同环境下的兼容同环境下的兼容性。性。例2: #ifdef DEBUG printf(“x=

16、%d,y=%dn”,x,y);#endif可用于进行可用于进行(jnxng)程序的调程序的调试。试。 调试过程中,在程序调试过程中,在程序(chngx)前面加前面加#define DEBUG 调试完成后,将前面的调试完成后,将前面的#define DEBUG删除掉删除掉第20页/共27页第二十一页,共27页。二、使用常量二、使用常量(chngling)表达式的值作为表达式的值作为编译条件编译条件 # if 表达式 程序段1 # else 程序段2 #endif 形式:形式:作用:当所指定的表达式作用:当所指定的表达式为真(非零)时就编译程为真(非零)时就编译程序序(bin y chn x)段段

17、1,否则编译程序,否则编译程序(bin y chn x)段段2。 可以事先给定一定可以事先给定一定(ydng)条件,使程序条件,使程序在不同的条件下执行不同的功能。在不同的条件下执行不同的功能。注意注意:#if和和#endif必须配对使用。必须配对使用。 第21页/共27页第二十二页,共27页。第22页/共27页第二十三页,共27页。程序举例程序举例(j l):用同一程序实现大小写字母转换(:用同一程序实现大小写字母转换(若定义若定义UP转换为大写)转换为大写) #include stdio.h#define UPmain() char s128; gets(s); #ifdef UP str

18、upr(s); #else strlwr(s); #endifputs(s);第23页/共27页第二十四页,共27页。第24页/共27页第二十五页,共27页。例例 #ifdef和和#ifndef的使用的使用(shyng)。#define TED 10main()#ifdef TEDprintf(“hi tedn”);#elseprintf(“hi anyonen);#endif#ifndef RALPHprintf(“RALPH not definedn”);#endif程序运行结果程序运行结果(ji gu)为:为:hi tedRALPH not defined第25页/共27页第二十六页,共27页。第26页/共27页第二十七页,共27页。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!