电子教案C 语言案例教程第四章7_第1页
电子教案C 语言案例教程第四章7_第2页
电子教案C 语言案例教程第四章7_第3页
电子教案C 语言案例教程第四章7_第4页
电子教案C 语言案例教程第四章7_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、32 函数调用时参数传递方式 本段任务 学会用普通变量、数组元素变量和数组名变量作函数的参数实施编程。懂得参数的传值和传地址两种不同的参数传递方法。321 普通变量作函数的参数 想一想:下面例4_3_4 程序设计的目的是将A、B两数交换。可是程序运行后两个数是否交换了? main() void Swap(int iA,int iB); /*函数声明*/ int iA,iB; /*定义变量iA,iB*/ printf(“Input iA iB=”); scanf(“%d%d”,&iA,&iB); printf(“rn”); /*键盘输入iA,iB的值*/ printf(“a=%d,b=%dn”,

2、iA,iB); /*输出iA,iB的值*/ Swap(iA,iB); /*调用Swap函数*/ printf(“a=%d,b=%dn”,iA,iB); /*再次输出iA,iB的值*/void Swap(int iA,int iB) /*定义Swap函数*/ int iTemp; /*定义数据交换的中间变量iTemp*/ printf(“a=%d,b=%dn”,iA,iB); /*输出iA,iB的值*/ iTemp=iA; /*交换iA,iB的值*/ iA=iB; iB=iTemp; printf(“a=%d,b=%dn”,iA,iB); /*再次输出iA,iB的值*/ return; /*Sw

3、ap函数无返回值,故return后无参数。当然连return也可省略*/322 数组元素作函数参数 例4_3_5 两个队进行“掰手腕”比赛,每队5名选手,每次每队出一名选手,由每队教练决定各自选手的出场顺序,共进行5场比赛,决出胜负。我们这里做个假设,比赛都是体重较重的人获胜,这样各队选手的出场顺序就非常关键了。输入排好顺序的各队的15号选手的体重,比较一下谁能获胜。分析:定义fTeama5、fTeamb5数组存储两队选手的体重。定义函数Judge来比较选手的体重,若Teama队选手体重大,就返回值1;若Teamb队选手体重大,就返回值-1。再定义两个变量对各队的胜利次数进行累加,最后再进行比

4、较,决出胜利者。 main() int Judge(float fA,float fB); /*函数声明*/ float fTeama5,fTeamb5; int i,iA=0,iB=0; printf(“Please input Team A:n”); for(i=0;i5;i+) scanf(“%f”,fTeamai); /*输入数组Teama*/ printf(“Please input Team B:n”); for(i=0;i5;i+) scanf(“%f”,fTeambi); /*输入数组Teamb*/ for(i=0;iiB) scanf(“%f”,fTeambi); /*比较i

5、A和iB的大小,输出相应的信息 */ else printf(“Team B Win!n”); int Judge(float fA,float fB) /* Judge函数用于比较体重,实参、与形参类型必须一致 */ if(fAfB) return(1); /*如果fA大于fB,函数返回值是1*/ else if(fAfB) return(-1); /*否则函数返回值是-1*/ 323 数组名作函数参数例4_3_6 已知一个班10名学生的计算机考试成绩,求平均成绩。要求:在主函数main中输入10个成绩,并输出最后的平均成绩;求平均成绩的过程用函数完成。分析:这是本节的例 4_1_1,前面是

6、用一个主函数完成的。10个已知数据我们仍然把它们组织成一个数组iScore10。要用函数计算数组10个元素的平均值,就应该由主调函数将这10个数组元素传递给被调函数,我们将数组作为一个整体传递给被调函数。实参表列就写数组名即可,形参表列就写与实参数组同类型的数组。 /* 4_3L6_1.C */main() float Average(int iScore10); /*函数声明*/ int iScore10,i; float fAver; for(i=0;i10;i+) scanf(“%d”,&iScorei); /*输入10个成绩*/ fAver=Average(iScore); /* 用数

7、组名iScore作为实参调用函数 */ printf(“average=%fn”,fAver); /*输出平均成绩*/ float Average(int iScore10) /* 函数定义,形参数组应与实参数组类型相同 */ int i, iSum=0; float fAver; for(i=0;i10;i+) iSum=iSum+iScorei; /* 用循环累加*/ fAver=iSum/10.0; /* 求出平均成绩*/ return(fAver); /* 将平均成绩返回给主调函数*/ 例4_3_7 一个年级有3个班,每个班有20名学生。输入所有学生的计算机考试成绩,求出最高分,以及该

8、学生的所在班级、学号。要求:在主函数中输入成绩,输出最高分,以及该学生的所在班级、学号;在函数中完成求最高分和学生所在班级学号的功能。分析:这道题就是本章第一节例4_1_8,现要求用函数完成对二维数组的运算,因此实参数组应该是二维数组,形参也应该是同类型的二维数组。定义二维形参数组: void Highscore(int iScoremn) int g_iMax,g_iRow=0,g_iColumn=0; main()void Highscore(int iScore 20,int n);int iScore320,I,j; printf(“Please input score:n”); fo

9、r(i=0;i3;i+) for(j=0;j20;j+) scanf(“%d”,&iScoreij); Highscore(iScore,20); printf(“max=%d,row=%d,column=%dn”,g_iMax,g_iRow+1,g_iColumn+1); /*打印结果*/void Highscore(int iScore 20,int n) int i,j; g_iMax=iScore00; /*将iScore00元素赋给g_iMax变量作为初始值 */ for(i=0;i3;i+) for(j=0;jn;j+) if(g_iMaxiScoreij) g_iMax=iSco

10、reij; g_iRow=i; g_iColumn=j; /* 将比g_iMax大的值替换g_iMax,并记下它的班号和学号 */ return; 例4_3_8 输入一个班级10名学生的计算机考试成绩,按成绩从高到低的顺序排序。要求:在主函数中输入原始数据,并输出最后排序好的数据,在函数中完成排序功能。分析:这是本章第一节例4_1_3,现改用函数实现。由于原来的解法实、形参都是一维数组。新解法只需将原解法中排序功能的程序段抽出来,单独构成函数;再将剩下的程序段加上函数声明和函数调用语句就可以了。设计用数组名作参数,形参数组排序好了实际上实参数组也排序好了。 #define N 10 /*定义符

11、号常量N,表示待排序数组长度*/main() void Sort(float fScore ,int n); /*函数声明*/float fScoreN; int i,j; /* 输出提示信息,输入待比较的数据,同例4_1_3,略写 */ Sort(fScore,N); /*函数调用,用fScore数组和N作实参*/ /*输出提示信息,输出最后排序好的数据,同例4_1_3,略写 */void Sort(float fScore ,int n) /*函数定义,用fScore数组和n作形参*/int i,j; float fTemp; /*定义变量fTemp作为数据交换的中间变量*/ for(i=0;in-1;i+) for(j=0;jn-1-i;j+) /* 用冒泡法排序,见第四章113 */ if(fScorejfScorej+1) fTemp=fScorej; fScorej=fScorej+1; fScorej+1=fTemp; return; /*函数结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论