- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九讲——函数的高级编程高级编程
第九章 函数的高级 9.1函数与数组 单个数组元素作为函数参数 上章中我们了解到实参可以是常量、变量和表达式。那么数组元素是表达式的一种,也就可以作为函数的实参进行传递了。 数组名作为函数参数 9.2 函数调用 函数的嵌套调用 问题 你现在了解数组作为函数的参数了吗? 你现在掌握函数的嵌套调用了吗? 函数的递归调用 我们看下面一个求年龄的问题。 有5个人坐在一起聊天,问第5个人他多大了,他说第4个人大2岁;又问第4个人多大了,他说比第3个人大2岁;问第3个人多大了,他说比第2个人大2岁;问第2个人多大了,他说比第1个人大2岁;问第1个人多大了,他说是15岁。请问,第5个人多大了。 这显然也是一个递归问题,每个人的年龄(age)都取决于他前面的人的年龄,而且,这里面是有规律的,就是每个人的年龄都比他前一个人的年龄大2岁。我们可以写为: 因此可以用式子表达如下: 本章总结 希望同学们理解数组作为函数参数时的传递方式 掌握函数的嵌套调用 了解函数的递归调用 * 当我们把数组元素作为实参进行传递时,与普通的变量一样, 它是单向的传值方式。 #includestdio.h void check(float n) { if(n=0n=100) printf(合法,谢谢!\n); else printf(不合法\n); } void main() { float score[10]={56,90.5,112.5,78,150,67,88.5,23,-7,90}; int i; for(i=0;i10;i++) { printf(第%d号学生的分数%f,i+1,score[i]); check(score[i]); } } 我们看到把单个数组元素作为参数传递给函数时,只是在书写 数组元素时要注意对数组下标的正确表示。 我们要想使某个数组元素的值在自定义函数中被改变时,也可 以把这个数组元素的地址(例:a[2])作为参数传递给函数, 函数的形参同样是定义为指针变量就可以了。 在前面的学习中我们知道数组的名字就是数组首元素的地址, 因此,当把数组名作为参数传递给函数时,就是传址方式。 因此,要注意使用这种方式时,形参的定义。 C的编译系统对形参数组的大小不做语法检查,只是将实参数 组的首地址传递给形参数组。因此,实参数组和形参数组的 大小可以一致,也可以不一致。我们最常用的形式是不指定 形参数组的大小,而是在定义形参数组时在数组名后面加一 对空的方括号。 #include stdio.h void adds(int s[]) //s[]为形参,接收sco数组的首地址 { int i; //adds()函数中的局部变量i for(i=0;i5;i++) /*对s数组的处理就是对sco数组的处理, 因为它们共用相同的内存单元*/ s[i]+=5; } void main() { int sco[5]={45,85,60,23,90}; int i; /*main()函数中的局部变量i*/ printf(原来的分数为:\n); for(i=0;i5;i++) printf(%d\t,sco[i]); printf(\n); adds(sco); /*调用函数,并将数组首地址做实参传递 */ printf(调用函数后数组为:\n); for(i=0;i5;i++) /*再次输出该数组*/ printf(%d\t,sco[i]); printf(\n); } #includestdio.h void sort(float sco[]) { int i,j,tmp; for(i=0;i9;i++) /*冒泡排序法*/ for(j=i+1;j10;j++) { if(sco[i]sco[j]) { tmp=sco[i]; sco[i]=sco[j]; sco[j]=tmp; } } } void main() { float score[10]={56,90.5,100,78,50,67,88.5,23,35.5,87}; int i; printf(初始分数为:\n); for(i=0;i10;i++) printf(%.1f\t,score[i]); sort(score); printf(调用排序函数后\n); for(i=0;i10;i++) printf(%.1f\t,
您可能关注的文档
最近下载
- 医院中央空调小型机组维保整体服务方案.docx VIP
- “四议两公开”会议记录模板.pdf VIP
- 【语文】《在马克思目前的讲话》课件 2023-2024学年统编版高中语文必修下册.pptx VIP
- 数码摄像机-松下-AJ-D965MC说明书.pdf VIP
- 2024年巡察整改专题民主生活会个人“聚焦四个方面”对照检查材料范文2篇.docx VIP
- 人工智能对文化产业的推动.pptx VIP
- 软件的项目可行性的研究的报告编写.ppt VIP
- 一种用于处理高硫高砷金矿的提金剂及其制备方法.pdf VIP
- 中国甲状腺疾病诊治指南ppt.pptx VIP
- 《中国抗癌协会甲状腺癌整合诊治指南(2022精简版)》解读PPT课件.pptx VIP
文档评论(0)