欢迎来到天天文库
浏览记录
ID:56527459
大小:241.00 KB
页数:26页
时间:2020-06-27
《C语言程序设计(第三版)-第8章-函数1.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、例8.7有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大。age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2age(2)=age(1)+2age(1)=10可以用数学公式表述如下:age(n)=10(n=1)age(n-1)+2(n>1)可以用一个函数来描述上述递归过程:intage(intn)/*求年龄的递归函数*/{intc;/*c用作存放函数的返回值的变量*
2、/if(n==1)c=10;elsec=age(n-1)+2;return(c);}用一个主函数调用age函数,求得第5人的年龄。#includevoidmain(){printf(″%d″,age(5));}运行结果如下:18例8.8用递归方法求n!求n!也可以用递归方法,即5!等于4!×5,而4!=3!×4…1!=1。可用下面的递归公式表示:n!=1(n=0,1)n·(n-1)!(n>1)§8.7.2数组名作函数参数可以用数组名作函数参数,此时形参应当用数组名或用指针变量。例8.11有一个一维数组score,内放10个学生成绩,求平均成绩。#
3、includevoidmain(){floataverage(floatarray[10]);/*函数声明*/floatscore[10],aver;inti;printf(″input10scores:\n″);for(i=0;i<10;i++)scanf(″%f″,&score[i]);printf(″\n″);aver=average(score);printf(″averagescoreis%5.2f″,aver);}floataverage(floatarray[10]){inti;floataver,sum=array[0];fo
4、r(i=1;i<10;i++=)sum=sum+array[i];aver=sum/10;return(aver);}运行情况如下:input10scores:100567898.576879967.57597↙averagescoreis83.40例8.12形参数组不定义长度#includevoidmain(){floataverage(floatarray[],intn)floatscore_1[5]={98.5,97,91.5,60,55};floatscore_2[10]={67.5,89.5,99,69.5,77,89.5,76.5,5
5、4,60,99.5};printf(“theaverageofclassAis%6.2f\n”,average(score_1,5));printf(“theaverageofclassBis%6.2f\n”,average(score_2,10));}floataverage(floatarray[],intn){inti;floataver,sum=array[0];for(i=1;i<n;i++=sum=sum+array[i];aver=sum/n;return(aver);}运行结果如下:theaverageofclassAis80.40Theavera
6、geofclassBis78.20例8.13用选择法对数组中10个整数按由小到大排序。所谓选择法就是先将10个数中最小的数与a[0]对换;再将a[1]到a[9]中最小的数与a[1]对换……每比较一轮,找出一个未经排序的数中最小的一个。共比较9轮。a[0]a[1]a[2]a[3]a[4]36194未排序时的情况16394将5个数中最小的数1与a[0]对换13694将余下的4个数中最小的数3与a[1]对换13496将余下的3个数中最小的数4与a[2]对换13469将余下的2个数中最小的数6与a[3]对换,至此完成排序程序实例#includevoidm
7、ain(){voidsort(intarray[],intn);inta[10],i;printf(″enterthearray\n″);for(i=0;i<10;i++)scanf(″%d″,&a[i]);sort(a,10);printf(″thesortedarray∶\n″);for(i=0;i<10;i++)printf(″%d″,a[i]);printf(″\n″);}voidsort(intarray[],intn){inti,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(array[j]<arr
8、ay[k]
此文档下载收益归作者所有