- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 函数 一、函数的声明 1、函数声明—函数声明是指,在调用某函数之前应对该被调函数进行说明。 2、函数声明作用: 在调用函数前,进行函数声明,这样在调用函数时,对于已经进行了函数声明的函数,系统可以顺利通过编译否则会报错。 3、函数声明的一般形式 类型说明符 函数名(类型 形参1,类型 形参2…); 4、函数声明可省略的情况 当函数定义的位置在函数调用之前,可以省略函数声明。 #include “stdio.h” int max(int a,int b); main() { int x,y,z; scanf(%d%d,x,y); z=max(x,y); printf(“最大数=%d,z); } int max(int a,int b) { if(ab)return a; else return b; } 函数的嵌套调用 C语言中不允许作嵌套的函数定义。 因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。 但是C语言允许在一个函数的定义中出现对另一个函数的调用。 这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。 示例:计算s=ab! 本题可编写两个函数: 一个是用来计算a的b次方的函数f1, 另一个是用来计算阶乘值的函数f2。 函数f1,实习功能,计算a的b次方 int f1(int a,int b) {int i,p; p=1; for(i=1;i=b;i++) p=p*a; return p;} 函数f2,实现功能,计算一个数q的阶乘。 int f2(int q) { int c=1; int i; for(i=1;i=q;i++) c=c*i; return c; } 计算s=ab!的完整的程序 例题2 输入4个整数,利用函数的嵌套调用找出最大值。 示例:课本例题p168 闰年共有366天(1-12月分别为31天,29天,31天,30天,31天,30天,31天,31天,30天,31天,30天,31天)。 ①、普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年) ②、世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年) 可以设计2个函数 函数一:计算指定年份的月的天数 参数为year,month。 根据参数年份和月份,可以得到该年该月的月的天数。 int month_day(int year,int month) {……………… ……………… …………….. return(day); } 函数二:计算指定年月日是这一年的多少天。 参数:year,month,day. 年月日。返回是这一年的第几天。 int sum_day(int year,int month,int day) {…………….. ……………………. ………………….. return(sum); } 在main函数中 负责输如年月日(日期),并输出这是这一年的第几天。 函数的递归调用 一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。 在递归调用中,主调函数又是被调函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。 例如有函数f如下: int f(int x) { int y; z=f(y); return z; } 这个函数是一个递归调用函数。但是运行该函数将无休止地调用其自身,这当然是不正确的。为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。下面举例说明递归调用的执行过程。 用递归法计算n! 用递归法计算n!可用下述公式表示: n!=1 (n=0,1) n×(n-1)! (n1) 按公式可编程如下: int ff(int n) { int f; if(n0) printf(n0,input error); else if(n==0||n==1) f=1; else f=ff(n-1)*n; return(f); } main() { int n; int y; printf(\ninput a inteager number:\n); scanf(%d,n); y=ff(n); printf(%d!=%d,n,y); } * 例一: 由键盘输入任意两个整数x、y,编写一个函数mypow()用来求x的y次方。 例二:写一个判断素数的函数,在主函数输入
您可能关注的文档
- Creo2.0教程之系统配置文件config深入探讨知识.doc
- Creo3.0安装和配置可选启动模块.pdf
- 第21讲学生信息管理——三层结构数据库编程.ppt
- 第22讲. 不变子空间,特征值及特征向量.pdf
- CREO经典阵列实例解析(高级篇)课件.pdf
- 第22节 可扩展标记语言XML.ppt
- Creo配置文件教案.doc
- CRH380BL与CRH3C救援操作方法.pdf
- 第23届高层会论文集前言与目录.pdf
- CRM模块命名说明和数据库设计文档.doc
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)