《函数调用时参数传递方式精选PPT.ppt》由会员分享,可在线阅读,更多相关《函数调用时参数传递方式精选PPT.ppt(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、函数调用时参数传递方式函数调用时参数传递方式第1页,此课件共12页哦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”,iA,iB);/*输出iA,iB的值*/Swap(iA,iB);/*调用Swap函数*/printf(“a=%d,b=%dn”,iA,iB);/*再次输出iA,iB的值*/void Swap(int iA,int iB)/
2、*定义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;/*Swap函数无返回值,故return后无参数。当然连return也可省略*/第2页,此课件共12页哦3 32 22 2 数组元素作函数参数数组元素作函数参数 例4_3_5 两个队进行“掰手腕”比赛,每队5名选手,每次每队出一名选手,由每队教练决定各自选手的出场顺
3、序,共进行5场比赛,决出胜负。我们这里做个假设,比赛都是体重较重的人获胜,这样各队选手的出场顺序就非常关键了。输入排好顺序的各队的15号选手的体重,比较一下谁能获胜。分析:定义fTeama5、fTeamb5数组存储两队选手的体重。定义函数Judge来比较选手的体重,若Teama队选手体重大,就返回值1;若Teamb队选手体重大,就返回值-1。再定义两个变量对各队的胜利次数进行累加,最后再进行比较,决出胜利者。第3页,此课件共12页哦main()int Judge(float fA,float fB);/*函数声明*/float fTeama5,fTeamb5;int i,iA=0,iB=0;p
4、rintf(“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);/*比较iA和iB的大小,输出相应的信息 */else printf(“Team B Win!n”);int Judge(float fA,float fB)/*Judge函数用于比较体重,实参、与形参类型必须一致*/if
5、(fAfB)return(1);/*如果fA大于fB,函数返回值是1*/else if(fAfB)return(-1);/*否则函数返回值是-1*/第4页,此课件共12页哦3 32 23 3 数组名作函数参数数组名作函数参数例4_3_6 已知一个班10名学生的计算机考试成绩,求平均成绩。要求:在主函数main中输入10个成绩,并输出最后的平均成绩;求平均成绩的过程用函数完成。分析:这是本节的例 4_1_1,前面是用一个主函数完成的。10个已知数据我们仍然把它们组织成一个数组iScore10。要用函数计算数组10个元素的平均值,就应该由主调函数将这10个数组元素传递给被调函数,我们将数组作为一个
6、整体传递给被调函数。实参表列就写数组名即可,形参实参表列就写数组名即可,形参表列就写与实参数组同类型的数组。表列就写与实参数组同类型的数组。第5页,此课件共12页哦/*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);/*用数组名iScore作为实参调用函数 */printf(“average=%fn”,fAver);/*输出平均成绩*/float
7、 Average(int iScore10)/*函数定义,形参数组应与实参数组类型相同*/int i,iSum=0;float fAver;for(i=0;i10;i+)iSum=iSum+iScorei;/*用循环累加*/fAver=iSum/10.0;/*求出平均成绩*/return(fAver);/*将平均成绩返回给主调函数*/第6页,此课件共12页哦 例4_3_7 一个年级有3个班,每个班有20名学生。输入所有学生的计算机考试成绩,求出最高分,以及该学生的所在班级、学号。要求:在主函数中输入成绩,输出最高分,以及该学生的所在班级、学号;在函数中完成求最高分和学生所在班级学号的功能。分析
8、:这道题就是本章第一节例4_1_8,现要求用函数完成对二维数组的运算,因此实参数组应该是二维数组,形参也应该是同类型的二维数组。定义二维形参数组:void Highscore(int iScoremn)第7页,此课件共12页哦 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”);for(i=0;i3;i+)for(j=0;j20;j+)scanf(“%d”,&iScoreij);Highscore(iS
9、core,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=iScoreij;g_iRow=i;g_iColumn=j;/*将比g_iMax大的值替换g_iMax,并记下它的班号和学号*/return;第8页,此课
10、件共12页哦 例4_3_8 输入一个班级10名学生的计算机考试成绩,按成绩从高到低的顺序排序。要求:在主函数中输入原始数据,并输出最后排序好的数据,在函数中完成排序功能。分析:这是本章第一节例4_1_3,现改用函数实现。由于原来的解法实、形参都是一维数组。新解法只需将原解法中排序功能的程序段抽出来,单独构成函数;再将剩下的程序段加上函数声明和函数调用语句就可以了。设计用数组名作参数,形参数组排序好了实际上实参数组也排序好了。第9页,此课件共12页哦#define N 10 /*定义符号常量N,表示待排序数组长度*/main()void Sort(float fScore,int n);/*函数
11、声明*/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;/*函数结束*/第10页,此课件共12页哦作业与练习作业与练习:(本节习题都要求用函数形式完成)4、输入一个正整数,求出它所有的因子。在主函数中输入数据并输出结果。5、输入10名学生的某门课程的考试成绩,然后再输入一个成绩,查找该成绩是第几名学生的成绩;如果没有找到,输出“无此数”。在主函数中输入数据并输出结果。6、输入若干个正整数,判断每一个数是否是素数。在主函数中输入数据,并输出结果。第11页,此课件共12页哦下次课再见!下次课再见!第12页,此课件共12页哦
限制150内