




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章函数5.1函数和C程序结构,函数是构成C程序的基本单位;一个C程序中所含函数的个数没有限制,但必须有main()函数;整个C程序从main()开始执行,各函数之间的关系是平行的,无主次之分,可返回值,也可不返回。C函数可分为库函数和自编函数。调用C标准库函数时用#include,例如:#include“math.h”,5.2函数的构成及定义,函数的构成如下:类型函数名(形参表)形参说明内部说明和定义函数执行部分同一函数的定义在同一程序中只能出现一次。,5.3函数的参数及返回值5.3.1形式参数和实际参数,形参:定义函数时,函数名后面圆括号中的参数;实参:调用函数时,函数名后面圆括号中的参数,可以是变量、常量、表达式;实参的个数和类型应与形参的个数和类型按定义时的顺序完全一致;实参和形参分别占据不同的存储单元;形实结合采用值传递,即实参的值单向传给形参,实参的值并不改变。,例如:main()inta,b;a=2;b=5;swap(x,y);printf(“a=%d,b=%dn”,a,b);swap(x,y)intx,y;intt;t=x;x=y;y=t;printf(“x=%d,y=%dn”,x,y);,运行结果:x=5,y=2a=2,b=5,t,2,5,2,5,2,5.3.2函数的返回值,函数的返回值是通过函数中的return语句得到;其语法为:return(表达式)或return表达式先求解表达式,然后返回该表达式的值;一个函数中可有多个return语句,当执行到该函数的任一条return语句时,都从该函数返回;如果不需要从函数返回值,则函数中可以没有return语句,或return语句后不带有任何表达式。,main()inti;for(i=1;i1;-n)value*=n;return(value);,运行结果:1!is12!is23!is64!is245!is120,5.3.2函数的返回值,例:main()intscore=85;chargrade;grade=stog(score);printf(“score%disgrade%cn”,score,grade);stog(s)ints;if(s94)return(A);elseif(s84)return(B);elseif(s69)return(C);elseif(s59)return(D);elsereturn(F);,5.3.2函数的返回值,5.4函数的调用,函数调用的一般形式:函数名(实参列表);过程调用:不引用被调用函数的返回值;函数调用:引用被调用函数的返回值;例如:putchar(a);getchar();ch=getchar();putchar(getchar();,main()inta,b;a=fa();b=fb();printf(“a=%dnb=%dn”,a,b);fa()intval;val=100;return(val);fb()intval;val=100;,运行结果:a=100b=750,5.4函数的调用,函数的类型是指函数返回值的类型;对返回值不是int或char的函数,必须在定义时给出类型说明。例如:main()inti=2;while(i256)printf(“%dn”,i=square(i);square(x)intx;return(x*x);,5.5函数的类型及说明,运行结果:416256,main()floati=1.5;while(i256.0)printf(“%fn”,i=square(i);square(x)/*Squaretheintegerx*/intx;return(x*x);,运行结果:-28672.0000001024.000000,5.5函数的类型及说明,5.5函数的类型及说明,在main中对函数类型进行说明:类型被调用函数名();将函数的定义放在main前面;一个函数只能被“定义”一次,可“说明”多次,“定义”与“说明”不同;每个函数可当成外部变量,即全局的。只能以“过程调用”的函数,一般应定义为“void”类型,C编译不再为其返回值分配存储单元。,main()floati=1.5;while(i256.0)printf(“%fn”,i=square(i);/*Squareafloatordoublex*/doublesquare(x)doublex;/*line9*/return(x*x);,运行结果testc:9:squareredeclared,5.5函数的类型及说明,main()floati=1.5;doublesquare();while(i256.0)printf(“%fn”,i=square(i);/*Squareafloatoradoublex*/doublesquare(x)doublex;return(x*x);,运行结果:2.2500005.06250025.628906656.840836,5.5函数的类型及说明,函数的递归调用:在函数中又调用了其本身;递归调用又分为直接递归调用和间接递归调用;,5.6函数的递归调用,直接递归调用a()a();,间接递归调a()b();b()a();,递归与嵌套循环的区别:编写递归之前,应先给出递归的边界条件和递推公式。,若没有递归无从终止,若没有,不是递归,循环的嵌套:陷入死循环main()for(;)printf(“weareboy.n”);,函数的递归调用main()printf(“weareboy.n”);main();终止于系统空间耗尽之时,5.6函数的递归调用,例如:n!可递归定义如下:,factorial(n)/*Returnn!*/intn;if(n=1)/*边界条件判断*/return(1);elsereturn(n*factorial(n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全科医学慢性病管理知识检测模拟试题答案及解析
- 驾驶客车考试题及答案
- 家长教师培训考试题及答案
- 2025年放射科影像学报告解读能力测验试卷答案及解析
- 农发行延安市吴起县2025秋招笔试创新题型专练及答案
- 梧州市2025广西梧州苍梧县供销合作社联合社招聘基层供销社工作人员1人笔试历年参考题库附带答案详解
- Web服务创新发展计划总结
- 办公自动化风险管控规范
- 清洁酒店餐饮厨房规范
- 医疗机构执业许可证延续申请表
- 农业现代化种植技术培训课件
- 中城汽车(山东)有限公司审计报告
- 大学博士竞赛试题及答案
- 钢结构彩钢瓦施工工艺与技术交底
- 2025版煤矿安全规程宣贯培训课件
- 梁启超家教家风课件
- 第5课 我们说方言教学设计-2025-2026学年小学地方、校本课程浙教版(2024)人·自然·社会
- (2025秋新版)青岛版科学三年级上册全册教案
- DB31∕T 1545-2025 卫生健康数据分类分级要求
- 大学生创新创业基础(创新创业课程)完整全套教学课件
- GB/T 5796.4-2022梯形螺纹第4部分:公差
评论
0/150
提交评论