网站大量收购独家精品文档,联系QQ:2885784924

第7篇 用函数实现模块化程序设计---6.ppt

  1. 1、本文档共80页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.7数组作为函数参数 7.7.1数组元素作函数实参 7.7.2数组名作函数参数 7.7.1数组元素作函数实参 例7.9 输入10个数,要求输出其中值最大的元素和该数是第几个数。 7.7.1数组元素作函数实参 解题思路: 定义数组a,用来存放10个数 设计函数max,用来求两个数中的大者 在主函数中定义变量m,初值为a[0],每次调用max函数后的返回值存放在m中 用“打擂台”算法,依次将数组元素a[1]到a[9]与m比较,最后得到的m值就是10个数中的最大者 #include stdio.h int main() { int max(int x,int y); int a[10],m,n,i; printf(“10 integer numbers:\n); for(i=0;i10;i++) scanf(%d,a[i]); printf(\n); for(i=1,m=a[0],n=0;i10;i++) { if (max(m,a[i])m) { m=max(m,a[i]); n=i; } } printf(“largest number is %d\n,m); printf(“%dth number.\n“,n+1); } int max(int x,int y) { return(xy?x:y); } 7.7.2数组名作函数参数 除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参) 用数组元素作实参时,向形参变量传递的是数组元素的值 用数组名作函数实参时,向形参传递的是数组首元素的地址 7.7.2数组名作函数参数 例7.10 有一个一维数组score,内放10个学生成绩,求平均成绩。 解题思路: 用函数average求平均成绩,用数组名作为函数实参,形参也用数组名 在average函数中引用各数组元素,求平均成绩并返回main函数 #include stdio.h int main() { float average(float array[10]); float score[10],aver; int i; printf(input 10 scores:\n); for(i=0;i10;i++) scanf(%f,score[i]); printf(\n); aver=average(score); printf(%5.2f\n,aver); return 0; } 定义实参数组 float average(float array[10]) { int i; float aver,sum=array[0]; for(i=1;i10;i++) sum=sum+array[i]; aver=sum/10; return(aver); } 定义形参数组 相当于score[0] 相当于score[i] 扩展:有两个班级,分别有35名和30名学生,调用一个average函数,分别求这两个班的学生的平均成绩。 解题思路: 需要解决怎样用同一个函数求两个不同长度的数组的平均值的问题 定义average函数时不指定数组的长度,在形参表中增加一个整型变量i 从主函数把数组实际长度从实参传递给形参i 这个i用来在average函数中控制循环的次数 #include stdio.h int main() { float average(float array[ ],int n); float score1[5]={98.5,97,91.5,60,55}; float score2[10]={67.5,89.5,99,69.5, 77,89.5,76.5,54,60,99.5}; printf(“%6.2f\n”,average(score1,5)); printf(“%6.2f\n”,average(score2,10)); return 0; } float average(float array[ ],int n) { int i; float aver,sum=array[0]; for(i=1;in;i++) sum=sum+array[i]; aver=sum/n; return(aver); } 调用形式为average(score1,5)时 相当于s

您可能关注的文档

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档