资源描述:
《第7章 用函数实现模块化程序设计(二)ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章用函数实现模块化程序设计7.1为什么要用函数7.2怎样定义函数7.3调用函数7.4对被调用函数的声明和函数原型7.5函数的嵌套调用7.6函数的递归调用7.7数组作为函数参数7.8局部变量和全局变量7.9变量的存储方式和生存期7.10关于变量的声明和定义7.11内部函数和外部函数17.7数组作为函数参数7.7.1数组元素作函数实参7.7.2数组名作函数参数7.7.3多维数组名作函数参数27.7.1数组元素作函数实参例7.9输入10个数,要求输出其中值最大的元素和该数是第几个数。37.7.1数组元素作函数实参解题思路:定义数组a,用来存放10个数设计函数max
2、,用来求两个数中的大者在主函数中定义变量m,初值为a[0],每次调用max函数后的返回值存放在m中用“打擂台”算法,依次将数组元素a[1]到a[9]与m比较,最后得到的m值就是10个数中的最大者4#includeintmain(){intmax(intx,inty);inta[10],m,n,i;printf(“10integernumbers:");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("");5for(i=1,m=a[0],n=0;i<10;i++){if(max(m,a[i])>m){
3、m=max(m,a[i]);n=i;}}printf(“largestnumberis%d",m);printf(“%dthnumber.“,n+1);}intmax(intx,inty){return(x>y?x:y);}67.7.2数组名作函数参数除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参)用数组元素作实参时,向形参变量传递的是数组元素的值用数组名作函数实参时,向形参传递的是数组首元素的地址77.7.2数组名作函数参数例7.10有一个一维数组score,内放10个学生成绩,求平均成绩。解题思路:用函数average求平
4、均成绩,用数组名作为函数实参,形参也用数组名在average函数中引用各数组元素,求平均成绩并返回main函数8#includeintmain(){floataverage(floatarray[10]);floatscore[10],aver;inti;printf("input10scores:");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("");aver=average(score);printf("%5.2f",aver);return0;}定义实参数组9floataver
5、age(floatarray[10]){inti;floataver,sum=array[0];for(i=1;i<10;i++)sum=sum+array[i];aver=sum/10;return(aver);}定义形参数组相当于score[0]相当于score[i]10例7.11有两个班级,分别有35名和30名学生,调用一个average函数,分别求这两个班的学生的平均成绩。11解题思路:需要解决怎样用同一个函数求两个不同长度的数组的平均值的问题定义average函数时不指定数组的长度,在形参表中增加一个整型变量i从主函数把数组实际长度从实参传递给形参i这
6、个i用来在average函数中控制循环的次数为简化,设两个班的学生数分别为5和1012#includeintmain(){floataverage(floatarray[],intn);floatscore1[5]={98.5,97,91.5,60,55};floatscore2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};printf(“%6.2f”,average(score1,5));printf(“%6.2f”,average(score2,10));return0;}13fl
7、oataverage(floatarray[],intn){inti;floataver,sum=array[0];for(i=1;i8、);}调用形式为aver