资源描述:
《第7章 函数――2.参数传递、变量作用域ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章函数参数传递、变量作用域§7.7数组作为函数参数§7.7.1用数组元素作函数实参由于实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素当然可以作为函数的实参,与用变量作实参一样,是单向传递,即“值传送”方式。例7.10用函数输出3阶矩阵对角线元素#includeintmain(){voidoutput(intx);//函数声明inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};//数组初始化for(i=0;i<3;i++)output(a[i][i]);//调用output函数}voidoutput(intx)//定义output函
2、数{printf(“%d”,x);}§7.7.2用数组名作函数参数可以用数组名作函数参数,此时实参与形参都应当用数组名或用指针变量(见第6章)。例:有一个一维数组score,内放10个学生成绩,求平均成绩。#includevoidmain(){floataverage(floatarray[10]);/*函数声明*/floatscore[10],aver;inti;printf(“input10scores:”);for(i=0;i<10;i++)scanf(“%f”,&score[i]);printf(“”);aver=average(score);printf(
3、″averagescoreis:%5.2f″,aver);}floataverage(floatarray[10]){inti;floataver,sum=array[0];for(i=1;i<10;i++)sum=sum+array[i];aver=sum/10;return(aver);}运行情况如下:input10scores:100567898.576879967.57597↙averagescoreis83.4例:形参数组不定义长度#includevoidmain(){floataverage(floatarray[],intn);floatscore_1[
4、5]={98.5,97,91.5,60,55};floatscore_2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};printf("theaverageofclassAis%6.2f",average(score_1,5));printf("theaverageofclassBis%6.2f",average(score_2,10));}floataverage(floatarray[],intn){inti;floataver,sum=array[0];for(i=1;i5、sum/n;return(aver);}运行结果如下:theaverageofclassAis80.4theaverageofclassBis78.2所谓选择法就是先将10个数中最小的数与a[0]对换;再将a[1]到a[9]中最小的数与a[1]对换……每比较一轮,找出一个未经排序的数中最小的一个。共比较9轮。例7.13用选择法对数组中10个整数按由小到大排序。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、小的数6与a[3]对换,至此完成排序程序实例#includeintmain(){voidselect_sort(intarray[],intn);//函数声明inta[10],i;printf(″entertheoriginlarray:″);for(i=0;i<10;i++)//输入10个数scanf(“%d”,&a[i]);printf(“”);select_sort(a,10);//函数调用,数组名作实参printf(″thesortedarray:″);for(i=0;i<10;i++)//输出10个已排好序的数printf(“%d”,a[i]);pri
7、ntf(“”);return0;}voidselect_sort(intarray[],intn)//形参array是数组名{inti,j,k,t;for(i=0;i