函数与宏替换省公共课一等奖全国赛课获奖课件.pptx
《函数与宏替换省公共课一等奖全国赛课获奖课件.pptx》由会员分享,可在线阅读,更多相关《函数与宏替换省公共课一等奖全国赛课获奖课件.pptx(29页珍藏版)》请在咨信网上搜索。
第6章函数与宏替换 第1页本章内容n6.1 模块化设计n6.2 函数定义与调用n6.3 函数递归调用n6.4 变量存放类型、作用域n6.5 宏替换n6.6 综合应用第2页6.1模块化设计 n模块化设计思想 把一个大问题分解成若干个比较轻易求解小问题,然后分别求解 n模块设计标准 模块独立n功效单一。n模块间联络力争简单。n数据局部化。模块规模要适当分解模块要注意层次第3页6.2函数定义与调用 n6.2.1标准库函数 math.h头文件中函数:abs()、sin()、cos()、exp()、fabs()、floor()、rand()等 stdio.h头文件中函数:fgets()、fopen()、fprintf()、fputc()、gets()、puts()、fread()、getchar()、putchar()、open()、close()、printf()、scanf()等 ctype.h头文件中函数:isalnum()、isalpha()、ispunch()、isspace()、isupper()、isxdigit()等string.h头文件中函数:strcat()、strchr()、strcmp()、strcpy()、strlen()、strlwr()、strncat()、strncpy()、strstr()、strupr()等 第4页6.2.2函数定义 类型说明符 函数名称(形式参数类型及说明列表)/*以下为函数体*/局部变量申明部分 语句序列int max(int n1,int n2)int t;if(n1n2)t=n1;elset=n2;return t;第5页函数申明部分 n类型说明符定义了函数中return语句返回值类型 省略类型说明符,函数返回一个整型值 函数没有返回值,能够定义为void n函数名称遵照C语言标识符命名规则 n形式参数类型及说明列表用逗号分隔形式参数列表 每个列表项均由“类型说明符”和“形式参数名称”两部分组成 没有参数,括号依然是必须要有 第6页函数体 n和main函数一样,必须将变量申明语句和其它语句序列用括起来 n假如有返回值,需要经过return语句返回 nreturn语句普通形式为:return(表示式表示式);或者return 表示式表示式;nreturn语句有两个主要作用返回一个值;退出当前函数。第7页6.2.3函数调用 n调用函数定义在主调函数之前,主调函数能够直接调用 n被调用函数定义在主调函数之后,则需要在主调函数中申明被调用函数。n函数申明格式类型名 函数名称(形式参数类型列表);注意:n函数申明语句后面需加分号。n在申明函数时,函数参数名称能够省略,但参数类型不能省略,且参数类型个数、类型、次序必须保持一致。main()int max(int,int);/*申明max函数,也可改为int max(int n1,int n2);*/c=max(a,b);int max(int n1,int n2)第8页函数调用 n无参函数调用普通形式为:函数名();n有参函数调用普通形式为:函数名(实参表示式1,实参表示式2,)c=max(a,b);printf(“%d”,c);第9页函数嵌套调用 n在C语言中,允许在定义一个函数时调用另外一个函数,则在该函数被调用过程中将发生另一次函数调用 图6.2 函数嵌套调用【例6.1】验证哥德巴赫猜测。猜测内容:任何一个大于4偶数,都能够表示为两个素数和。第10页6.2.4参数传递 n形参和实参概念 函数定义时使用参数称之为形式参数,简称形参 函数调用时使用参数,称之为实际参数,简称实参 在函数调用时,实参个数要和形参相等,而且类型必须一致,另外实参加形参出现次序也要一一对应。第11页程序举例n【例6.2】输入两个数,输出两个数中最大值#include stdio.hmain()int a,b,m;int max(int,int);/*申明max函数*/printf(nPlease input two numbers(a,b):);scanf(%d,%d,&a,&b);m=max(a,b);/*调用max函数*/printf(max=%dn,m);int max(int x,int y)int t;t=xy?x:y;return t;第12页形参和实参特点 n形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配内存单元。所以,形参只有在函数内部有效形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。n实参能够是常量、变量、表示式、函数实参能够是常量、变量、表示式、函数等,在进行函数调用时,它们必须含有确定值,方便把这些值传送给形参。所以,应预先用赋值、输入等方法使实参取得确定值。n实参和形参在数量上,类型上,次序上应严格一致,不然会产生类型不匹配错误。同时,实参和形参含有一一对应关系实参和形参含有一一对应关系。n函数调用中发生数据传送是单向数据传送是单向。即只能把实参值传送给形参,而不能把形参值反向地传送给实参。所以在函数调用过程中,形参值不论怎么改变,实参中值都不会改变。第13页6.3函数递归调用函数递归调用n函数在执行过程中对自己调用称为函数递归调用 n在使用递归方法处理问题时,需要分成两个步骤(1)递归边界条件。也就是描述问题最简单情况,它本身不需要递归定义,只需给出符合什么样条件程序中止递归及中止递归时返回值。(2)寻找问题规律。将问题转换为更简单相同问题,然后向着递归边界条件方向递归。第14页程序举例【例6.3】利用递归方法计算n!。【例6.4】有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁;问第4个人多少岁,他说比第3个人大2岁;问第3个人多少岁,他说比第2个人大2岁;问第2个人多少岁,他说比第1个人大2岁;最终问第一个人多少岁,他说是30岁,请问第5个人多少岁?。【例6.5】利用递归方法计算猴子吃桃问题。有一天小猴子摘若干个桃子,当即吃了二分之一还以为不过瘾,又多吃了一个。第二天接着吃剩下桃子中二分之一,仍以为不过瘾又多吃了一个,以后小猴子都是吃尚存桃子二分之一多一个。到第10天早上小猴子再去吃桃子时候,看到只剩下一个桃子。问小猴子第一天共摘下了多少个桃子?第15页6.4变量存放类型、作用域变量存放类型、作用域n6.4.1变量作用域 局部变量 n函数内作定义说明,其作用域仅限于函数内部 n注意问题:主函数中定义变量也只能在主函数中使用,不能在其它函数中使用形参变量是属于被调函数局部变量,实参变量是属于主调函数局部变量允许在不一样函数中使用相同变量名,它们代表不一样对象,分配不一样单元,互不干扰,也不会发生混同第16页全局变量 n在函数外部定义变量,也就是在程序开头申明 n全局变量定义形式为:extern 类型说明符 变量名,变量名 extern能够省去不写 比如:int a,b;等效于:extern int a,b;n注意问题:全局变量在定义时就已分配了内存单元,全局变量定义可作初始赋值,全局变量说明不能再赋初始值,只是表明在函数内要使用某全局变量全局变量可加强函数模块之间数据联络,但同时也降低了函数独立性。在同一源文件中,允许全局变量和局部变量同名。在局部变量作用域内,全局变量不起作用。第17页程序举例#include stdio.hint a=8,b=4;/*定义全局变量a,b*/void fun()int a,b;/*定义局部变量a,b*/a=10;b=5;printf(fun:a+b=%dn,a+b);main()fun();printf(“main:a+b=%dn”,a+b);上例输出结果为:fun:a+b=15main:a+b=12;第18页6.4.2变量存放类型变量存放类型n静态存放在变量定义时就分配存放单元并一直保持不变,直至整个程序结束 分类n静态(static)n外部(extern)n动态存放 在程序执行过程中,使用它时才分配存放单元,使用完成马上释放 第19页自动变量 n定义普通形式为:auto 类型标识符 变量列表其中,auto能够省略 n自动变量特点作用域仅限于定义该变量结构内 自动变量属于动态存放方式,只有在使用它,即定义该变量函数被调用时才给它分配存放单元,开始它生存期 不一样结构中允许使用同名变量而不会混同 第20页静态变量 n定义普通形式为:static 类型标识符类型标识符 变量列表变量列表比如:static int a;特点:程序结束前不释放内存。第21页程序举例#include int add()static int a=10;/*定义静态局部变量,并赋初值*/a+=10;return a;main()int i;for(i=1;i=5;i+)printf(%d.add=%dn,i,add();运行上面程序,输出结果为:1.add=202.add=303.add=404.add=505.add=60第22页外部变量 n申明外部变量普通形式为:extern 类型标识符 变量列表比如:/*f1.c*/#include main()extern int num;/*申明外部变量num,表明在函数中将用到外部变量num*/init();printf(num=%dn,num);/*f2.c*/int num;/*定义全局变量num*/void init()num=100;第23页6.5 宏替换 n6.5.1 宏替换n6.5.2 文件包含第24页6.5.1 宏替换n宏定义功效是用一个标识符来表示一个字符串,标识符称为宏名 n无参宏 无参宏定义普通形式为:#define 比如:#define EX (x*y+z)注意事项:n在宏代换时,只是简单将宏名代换为对应表示式,注意括号使用n宏定义是用宏名来表示一个字符串,在宏代换时又以该字符串简单替换宏名,字符串中能够包含任何字符,能够是常数,也能够是表示式,预处理程序对它不作任何检验 n宏定义不是说明或语句,在行尾不能加分号n宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束 n源程序中双引号引发来字符串常量中,若出现宏名,则预处理程序不对其作宏代换 n宏定义允许嵌套n习惯上宏名用大写字母表示,方便于与变量区分 第25页有参宏 n有参宏定义普通形式为:#define 宏名(形参表)字符串n有参宏调用普通形式为:宏名(实参表);n注意事项:有参宏定义中,宏名和形参表之间不能有空格出现 在有参宏定义中,形参不分配内存单元,所以无须作类型定义 在宏定义中形参是标识符,而宏调用中实参能够是表示式 在宏定义中,字符串内形参通常要用括号括起来以防止犯错 第26页程序举例#define PI 3.1415926#define S(a)PI*a*amain()float r,s;printf(nPlease input r:);scanf(%f,&r);s=S(r+1);printf(s=%fn,s);#define PI 3.1415926#define S(a)PI*(a)*(a)main()float r,s;printf(nPlease input r:);scanf(%f,&r);s=1/S(r+1);printf(s=%fn,s);#define PI 3.1415926#define S(a)(PI*(a)*(a)main()float r,s;printf(nPlease input r:);scanf(%f,&r);s=1/S(r+1);printf(s=%fn,s);第27页6.5.2 文件包含文件包含n文件包含命令行普通形式为:#include 文件名文件名或#include n比如:#include stdio.h#include math.h#include n注意事项:包含命令中文件名能够用双引号括起来,也能够用尖括号括起来 一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令 文件包含允许嵌套,即在一个被包含文件中又能够包含另一个文件 第28页6.6 综合应用【例6.8】假如一个5位数个位与万位相同,十位与千位相同,则称这个数为回文数,如12321。编写一个函数判断一个5位数是否为回文数。【例6.9】一个数假如恰好等于它因子之和,这个数就称为“完数”,比如6=123 编程找出31000全部完数。【例6.10】假如每对兔子每个月繁殖一对子兔,而子兔在出生后第二个月就有生殖能力,试问第一月有一对小兔子第十二月时有多少对兔子?即:1、1、2、3、5由数列规律建立数学模型。第29页- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 替换 公共课 一等奖 全国 获奖 课件
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文