欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    《函数与宏替换》PPT课件.ppt

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

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

    《函数与宏替换》PPT课件.ppt

    第6章函数与宏替换 本章内容n6.1 模块化设计n6.2 函数的定义与调用n6.3 函数的递归调用n6.4 变量的存储类型、作用域n6.5 宏替换n6.6 综合应用6.1模块化设计 n模块化设计思想 把一个大问题分解成若干个比较容易求解的小问题,然后分别求解 n模块设计原则 模块独立n功能单一。n模块间的联系力求简单。n数据局部化。模块的规模要适当分解模块要注意层次6.2函数的定义与调用 n标准库函数 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()等 函数的定义 类型说明符 函数名称(形式参数类型及说明列表)/*以下为函数体*/局部变量声明部分 语句序列int max(int n1,int n2)int t;if(n1n2)t=n1;elset=n2;return t;函数的声明部分 n类型说明符定义了函数中return语句返回值的类型 省略类型说明符,函数返回一个整型值 函数没有返回值,可以定义为void n函数名称遵循C语言标识符的命名规则 n形式参数类型及说明列表用逗号分隔的形式参数列表 每个列表项均由“类型说明符”和“形式参数名称”两部分组成 没有参数,括号仍然是必须要有的 函数体 n和main函数一样,必须将变量声明语句和其它语句序列用括起来 n如果有返回值,需要通过return语句返回 nreturn语句的一般形式为:return(表达式表达式);或者return 表达式表达式;nreturn语句有两个重要作用返回一个值;退出当前函数。函数的调用 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)函数的调用 n无参函数调用的一般形式为:函数名();n有参函数调用的一般形式为:函数名(实参表达式1,实参表达式2,)c=max(a,b);printf(“%d”,c);函数的嵌套调用 n在C语言中,允许在定义一个函数时调用另外一个函数,则在该函数被调用的过程中将发生另一次函数调用 图6.2 函数的嵌套调用【例6.1】验证哥德巴赫猜想。猜想内容:任何一个大于4的偶数,都可以表示为两个素数的和。参数的传递 n形参和实参的概念 函数定义时使用的参数称之为形式参数,简称形参 函数调用时使用的参数,称之为实际参数,简称实参 在函数调用时,实参的个数要和形参相等,而且类型必须一致,另外实参与形参出现的次序也要一一对应。程序举例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;形参和实参的特点 n形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。n实参可以是常量、变量、表达式、函数实参可以是常量、变量、表达式、函数等,在进行函数调用时,它们必须具有确定的值,以便把这些值传送给形参。因此,应预先用赋值、输入等方法使实参获得确定值。n实参和形参在数量上,类型上,顺序上应严格一致,否则会产生类型不匹配的错误。同时,实参和形参具有一一对应的关系实参和形参具有一一对应的关系。n函数调用中发生的数据传送是单向的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值无论怎么改变,实参中的值都不会变化。6.3函数的递归调用函数的递归调用n函数在执行过程中对自己的调用称为函数的递归调用 n在使用递归方法解决问题时,需要分成两个步骤(1)递归的边界条件。也就是描述问题的最简单情况,它本身不需要递归的定义,只需给出符合什么样的条件程序中止递归及中止递归时的返回值。(2)寻找问题的规律。将问题转换为更简单的相同问题,然后向着递归边界条件的方向递归。程序举例【例6.3】利用递归的方法计算n!。【例6.4】有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁;问第4个人多少岁,他说比第3个人大2岁;问第3个人多少岁,他说比第2个人大2岁;问第2个人多少岁,他说比第1个人大2岁;最后问第一个人多少岁,他说是30岁,请问第5个人多少岁?。【例6.5】利用递归方法计算猴子吃桃的问题。有一天小猴子摘若干个桃子,当即吃了一半还觉得不过瘾,又多吃了一个。第二天接着吃剩下桃子中的一半,仍觉得不过瘾又多吃了一个,以后小猴子都是吃尚存桃子一半多一个。到第10天早上小猴子再去吃桃子的时候,看到只剩下一个桃子。问小猴子第一天共摘下了多少个桃子?6.4变量的存储类型、作用域变量的存储类型、作用域n变量的作用域 局部变量 n函数内作定义说明的,其作用域仅限于函数内部 n注意问题:主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆全局变量 n在函数外部定义的变量,也就是在程序的开头声明 n全局变量定义形式为:extern 类型说明符 变量名,变量名 extern可以省去不写 例如:int a,b;等效于:extern int a,b;n注意问题:全局变量在定义时就已分配了内存单元,全局变量定义可作初始赋值,全局变量说明不能再赋初始值,只是表明在函数内要使用某全局变量全局变量可加强函数模块之间的数据联系,但同时也降低了函数的独立性。在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。程序举例#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;变量的存储类型变量的存储类型n静态存储在变量定义时就分配存储单元并一直保持不变,直至整个程序结束 分类n静态(static)n外部(extern)n动态存储 在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放 自动变量 n定义的一般形式为:auto 类型标识符 变量列表其中,auto可以省略 n自动变量的特点作用域仅限于定义该变量的结构内 自动变量属于动态存储方式,只有在使用它,即定义该变量的函数被调用时才给它分配存储单元,开始它的生存期 不同的结构中允许使用同名的变量而不会混淆 静态变量 n定义的一般形式为:static 类型标识符类型标识符 变量列表变量列表例如:static int a;特点:程序结束前不释放内存。程序举例#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外部变量 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;6.5 宏替换 n6.5.1 宏替换n6.5.2 文件包含6.5.1 宏替换n宏定义的功能是用一个标识符来表示一个字符串,标识符称为宏名 n无参宏 无参宏定义的一般形式为:#define 例如:#define EX (x*y+z)注意事项:n在宏代换时,只是简单的将宏名代换为相应的表达式,注意括号的使用n宏定义是用宏名来表示一个字符串,在宏代换时又以该字符串简单的替换宏名,字符串中可以包含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查 n宏定义不是说明或语句,在行尾不能加分号n宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束 n源程序中双引号引起来的字符串常量中,若出现宏名,则预处理程序不对其作宏代换 n宏定义允许嵌套n习惯上宏名用大写字母表示,以便于与变量区别 有参宏 n有参宏定义的一般形式为:#define 宏名(形参表)字符串n有参宏调用的一般形式为:宏名(实参表);n注意事项:有参宏定义中,宏名和形参表之间不能有空格出现 在有参宏定义中,形参不分配内存单元,因此不必作类型定义 在宏定义中的形参是标识符,而宏调用中的实参可以是表达式 在宏定义中,字符串内的形参通常要用括号括起来以避免出错 程序举例#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);6.5.2 文件包含文件包含n文件包含命令行的一般形式为:#include 文件名文件名或#include n例如:#include stdio.h#include math.h#include n注意事项:包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来 一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令 文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件 6.6 综合应用【例6.8】如果一个5位数的个位与万位相同,十位与千位相同,则称这个数为回文数,如12321。编写一个函数判断一个5位数是否为回文数。【例6.9】一个数如果恰好等于它的因子之和,这个数就称为“完数”,例如6=123 编程找出31000的所有完数。【例6.10】如果每对兔子每月繁殖一对子兔,而子兔在出生后第二个月就有生殖能力,试问第一月有一对小兔子第十二月时有多少对兔子?即:1、1、2、3、5由数列的规律建立数学模型。

    注意事项

    本文(《函数与宏替换》PPT课件.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开