计算机设计语言(c语言)精要.pptVIP

  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文档。上传文档
查看更多
计算机设计语言(c语言)精要.ppt

第五章 函 数 自定义函数求E=1+1/1!+1/2!+ … +1/10! 计算1+1/1!+1/2!+ … +1/10!时,我们可以利用两重循环,但问题较为复杂,程序代码行较多。根据模块化程序设计的思想,对于复杂的问题,可以将其分为相互联系但又彼此独立的若干子问题,这样的子问题在程序设计中被称为模块,模块在C语言中通过函数来实现。 因此,我们可以定义一个函数用来求1/n!,然后用主函数来调用这个自定义函数以实现求和功能。 那么如何自己定义一个求阶乘的函数,并如何调用一个函数呢? 另一个例子: 5.1 C语言函数使用常识 说明: 5.2 函数定义的一般形式 5.3 函数参数和函数的值 5.3.1 形式参数和实际参数 当主调函数和被调用函数之间有数据传递关系时,应定义为有参函数。 在定义函数时,函数名后面括号中的变量名称为“形式参数”(简称形参). 在调用函数时,函数名后面括号中的参数(可以为常量、变量、表达式),称为“实际参数”(简称实参)。 关于形参和实参的说明: 5.3.2 函数的返回值 例 5.3 返回值类型与函数类型不同。 5.4 函数的调用 5.4.2 函数调用的方式 5.4.3 对被调用函数的说明 和 函数原型 在一个函数中调用另一个函数(即被调函数)应具备什么条件? 被调用的函数必须是已经存在的函数(库函数或用户自己定义的函数)。但仅有这一 条件还不够。 如果是使用库函数,一般应该在程序的开头用 #include命令将调用有关库函数时所需的信息“包含” 到本文件中来。 如前面已用过的:#include stdio.h #include math.h 如果使用用户自定义的函数,并且该函数与调用它的函数(即主调函数)在同一个文件中,一般还应在主调函数中对被调函数作声明(declaration),即向编译系统声明将要调用此函数,并将有关信息通知编译系统,以便于检查。 说明: 自定义函数求E=1+1/1!+1/2!+ … +1/10! 分析:本例中用到了C语言中模块化设计的重要工具“自定义函数”。首先通过自定义函数fact求解1/n!,然后在main函数调用了自定义函数fact,最后完成问题求解。 #include stdio.h main() { int i; float E; float fact();/*函数原型声明*/ for(E=1,i=1;i=10;i++) E=E+fact(i);/*自定义函数fact的调用*/ printf(\nE=%f,E); } float fact(int n)/*定义求解阶乘倒数的函数fact*/ { int j; long t=1; for(t=1,j=1;j=n;j++) t=t*j; return(1.0/t); } 5.5 函数的嵌套调用 5.6 函数的递归调用 5.7局部变量和全局变量 说明: 5.7.2 全局变量 有关全局变量的说明: 5.9 变量的存储类别 按变量的作用域和存在域,可将变量分为局部变量 和 全局变量。 还可以从变量值存在的时间(即生存期)角度来分,将变量分为 静态存储方式变量 和 动态存储变量方式。 静态存储方式 是指在程序运行期间分配固定的存储空间的方式。 动态存储方式 是在程序运行期间根据需要进行动态的分配存储空间的方式。 内存中供用户使用的存储空间分为三部分,如下图所示: 数据分别存放在静态存储区和动态存储区: 全局变量全部存放在静态存储区中,在程序开始执行时,给全局变量分配存储区,程序执行完毕就释放。 在程序执行过程中它们占据固定的存储单元,而不是动态地进行分配和释放。 C语言中每一个变量和函数都有两个属性:数据类型和数据的存储类别。 数据的存储类别指的是数据在内存中存储的方法。 5.9.2 auto局部变量 5.9.3 静态局部变量(static) 对静态局部变量的说明: 需要定义局部静态变量的情况: 5.9.4 register 变量 5.9.5 用extern 声明外部变量 5.9.6 存储类别小结 函数要点 从图上可以看出,这两种递归调用都是无终止的自身调用。显然,程序中不应该出现这种无终止的递归调用,而只能出现有限次数的、有终止的递归调用,这可以用if 语句来控制,只有在某一条件成立时才继续执行递归调用,否则就不再继续。 递归调用的条件: 在有限次的调用之后结束递归调用,即: 递归必须有一个出口。 例 5.6 用递归调用求年龄。有5个人,第5人比第4人大2岁,第4人比第3人大2岁,……,第2人比第1人大2岁,第1个人是10

文档评论(0)

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

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

1亿VIP精品文档

相关文档