- 1、本文档共66页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 函数与指针 函数与指针 函数是模块化设计的一种实现。对于一个大的复杂的问题,如果不采用模块化设计的方法进行设计,那么进行维护和修改操作会变得非常困难。比如做软件。一个大型的软件很少只由一个人完成,通常将一个问题分解成为若干个小问题,如果问题还不够小,还可以再细分。当所有的小问题都解决之后,软件设计的系统工程师完成各部分的组装工作。 实际上,我们的日常生活中到处都可以看到模块化设计的实例:组装活动房的各个组件、食堂工作的人员分配、工厂中各个加工部门的设立等…… 在程序设计中,程序的模块化设计的实现是通过函数来实现的。每个函数解决一个子问题,而主函数去调用这些函数。(这里主函数的作用类似软件设计的系统工程师)。函数分为库函数和自定义的函数。 函数与指针 6.1 函数的定义与调用 6.2 函数的参数传递 6.3 指针作为函数参数 6.1函数的定义和调用 1.编写一个名为Hello的函数,该函数的目的是输出“Hello,world!”。 2.编写一个名为findAbs的函数,接收一个传递给它的单精度数,并且返回它的绝对值。 3.编写一个名为powfun的函数,自乘一个传递给它的整数到一个正整数幂和显示结果。 1 函数的定义 任何函数在调用之前都要先定义。函数定义的基本模式: 返值类型 函数名(函数参数表列) { 函数体 } 在函数定义过程中,要注意 (1)函数定义中,返回值的类型可以是空类型void,可以是其他任意定义过的类型(整型(int),实型(float,double),字符型(char),结构体型(struct ……)等,也可以是指针。 (2)函数中可以有参数,也可以没有参数。参数可以是1个,也可以是多个,具体由函数要解决的问题而定。 (3)由return带回函数的返回值。要注意的是,return最多只能带回1个返回值。 (4)函数体中的语句是根据形参表列中的参数作为变量描述要解决问题的过程。 课堂练习 1.编写一个名为Transf的函数,该函数将一个十进制数转换成为r进制数,并输出转换后的结果。 2.编写一个名为tempConvert函数,接收一个温度和一个字符作为参数。如果传递给这个函数的字符是字母f,函数应该把传递来的温度从华氏温度转换为摄氏温度,否则函数应该是把传递过来的温度从摄氏温度转化为华氏温度。(c=5*(f-32)/9) 3.编写一个名为distance的函数,接受两点x1,y1和x2,y2的坐标,计算和返回两点之间的距离。 课堂练习(续) 4.编写一个名为fac函数,接收一个正整数,计算并返回所传递数的阶乘。 5.一个x的二次多项式由ax2+bx+c给定,式中a,b和c是已知数,且a不等于0.编写一个名为Polytwo函数,计算和返回这个二次多项式的数值,使用任何被传递的a,b,c和x的数值。 课堂练习(续) 编写程序,实现电话簿的管理。要求有如下几个功能:输入(Input)、修改(Amend)、删除(Delete)、查询(Search)和浏览(Browse)。 如何根据问题定义函数? 1.弄清楚问题的需求。 2.确定输入项(有无参数?参数的类型和个数?) 3.期望的输出(通过return返回还是当时输出?) 4.具体实现步骤(算法) 2 函数的调用 函数调用的方法: m=函数名(实参表列); 实参表列中的参数类型和参数的个数要与被调用函数定义时的形参的参数类型和个数完全一致。 m用来存放函数由return带回来的返回值,该变量的类型要和被调用函数的返值类型一致,有时也可以不用。 如果所定义的函数没有返回值,则函数调用的方式为: 函数名(实参表列); 函数的调用 例如: 1) Hello( );//无参、无返值函数 函数的调用 3) int a=45,r=2;调用进制转换函数,将45转换为二进制并输出结果,其调用为: trans(45,2);//2个整型参数,无返回值 函数的调用 一般地,函数在调用时,调用其他函数的函数称为主调函数,被调用的函数称为被调函数。很多时候,主函数main是最大的主调函数。 函数在调用的时候,其调用和返回的示意图如下: 函数的调用 课堂练习 在主函数main中调用上述的练习中的所定义的函数。 3 函数的嵌套调用与递归 主调函数未必一定是主函数。比如进制转换函数trans中调用了输出函数printf()。这里trans是主调函数,printf是被调函数。 例:编写函数combine(),求从n个数中取r个数的组合数。该问题的解决可以通过借助练习4来完成。因为组合公式为: 函数的嵌套调用 函数的嵌套调用示意图: 其中,③、④、⑤部
文档评论(0)