《C程序设计教案262课时——数组作为函数参数.docx》由会员分享,可在线阅读,更多相关《C程序设计教案262课时——数组作为函数参数.docx(6页珍藏版)》请在第一文库网上搜索。
1、教案序号26周次授课形式新授授课章节名称数组作为函数参数教学目的学会用数组作为函数参数教学重点学会用数组作为函数参数教学难点学会用数组作为函数参数使用教具机房课外作业课后体会授课主要内容7.7数组作为函数参数7. 7.1数组元素作函数实参8. 7.2数组名作函数参数9. 7.3多维数组名作函数参数 7.7.1数组元素作函数实参例7.9输入10个数,要求输出其中值最大的元素和该数是第几个数。 7.7.1数组元素作函数实参解题思路: 定义数组a,用来存放10个数 设计函数max,用来求两个数中的大者 在主函数中定义变量m,初值为a0,每次调用max函数后的返回值存放在In中用“打擂台”算法,依次将
2、数组元素a1到a9与m比较,最后得到的m值就是10个数中的最大者#inc1udeintmain()intmax(intx,inty);inta10,m,n,i;printf(10integernumbers:n,z);for(i=0;i10;i+)SCanf(%d,&ai);printf(n);for(i=1,m=a0,n=0;im)m=max(m,ai);n=i;)printf(a1argestnumberis%dn”,m);printf(u%dthnumber,n,n+1);) 7.7.2数组名作函数参数 除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参) 用数组
3、元素作实参时,向形参变量传递的是数组元素的值 用数组名作函数实参时,向形参传递的是数组首元素的地址 7.7.2数组名作函数参数例7.10有一个一维数组score,内放10个学生成绩,求平均成绩。A解题思路: 用函数average求平均成绩,用数组名作为函数实参,形参也用数组名 在average函数中引用各数组元素,求平均成绩并返回main函数Jtinc1udeintmain()f1oataverage(f1oatarray10);f1oatscore10,aver;inti;printf(z,input10scores:n,z);for(i=0;i10;i+)scanf(%f”,&scorei
4、);Printf(n);aver=average(score);printf(z,%5.2fn*,aver);return0;)f1oataverage(f1oatarray10)inti;f1oataver,sum=array0;for(i=1;i10;i+)sum=sum+arrayi;aver=sum10;return(aver);)例7.11有两个班级,分别有35名和30名学生,调用一个average函数,分别求这两个班的学生的平均成绩。A解题思路: 需要解决怎样用同一个函数求两个不同长度的数组的平均值的问题 定义average函数时不指定数组的长度,在形参表中增加一个整型变量i 从主
5、函数把数组实际长度从实参传递给形参i 这个i用来在average函数中控制循环的次数 为简化,设两个班的学生数分别为5和10#inc1udeintmain()f1oataverage(f1oatarray,intn);f1oatscore15=98.5,97,91.5,60,55;f1oatscore210=67.5,89.5,99,69.5,77, 89.5,76.5,54,60,99.5:printf(rt%6.2fnw,average(score1,5);printf(rt%6.2fnw,average(score2,10);return0;)f1oataverage(f1oatarra
6、y,intn) inti;f1oataver,sum=array0;for(i=1;in;i+)sum=sum+arrayi;aver=sumn;return(aver);)f1oataverage(f1oatarray,intn) inti;f1oataver,sum=array0;for(i=1;in;i+)sum=sum+arrayi;aver=sumn;return(aver);)例7.12用选择法对数组中10个整数按由小到大排序。A解题思路:所谓选择法就是先将10个数中最小的数与a0对换;再将a1到a9中最小的数与a1对换每比较一轮,找出一个未经排序的数中最小的一个共比较9轮#inc
7、1udeintmain()voidsort(intarray,intn);inta10,i;printf(z,enterarray:n);for(i=0;i10;i+)SCanf(%d”,;sort(a,10);Printf(Thesortedarray:n,z);for(i=0;i10;i+)printf(*%d”,ai);printf(zznz,);return0;)voidsort(intarray,intn)inti,j,k,t;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(arrayj7.7.3多维数组名作函数参数例7.13有一个3X4的矩阵,求所有元
8、素中的最大值。解题思路:先使变量max的初值等于矩阵中第一个元素的值,然后将矩阵中各个元素的值与max相比,每次比较后都把“大者”存放在max中,全部元素比较完后,max的值就是所有元素的最大值。#inc1udeintmain()intmax_va1ue(intarray4);inta34=1,3,5,7,2f4,6,8),15J7,34,12);Printf(Maxva1ueis%dnw,max-va1ue(a);return0;)intmax_va1ue(intarray4)inti,j,max;max=array00;for(i=0;i3;i+)for(j=0;jmax)max=arrayij;return(max);)