资源描述:
《实验8函数的调用与递归》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验8函数的调用与递归一、实验目的1.熟练掌握函数的定义、函数的调用的基本格式与方法。2.理解递归函数的基本概念和计算机执行递归函数的过程。3.初步认识结构化程序设计。二、实验要求1.通过一个完整的程序,学习函数的定义与调用的基本格式与方法。2.通过程序中return语句的使用,理解函数返回值的概念,并学习如何取得函数返回值。3.通过编写含有参数的函数,进一步理解函数间的参数传递过程。4.通过一个含有递归函数的实例,理解递归函数的基本概念,学习分析计算机执行递归函数的过程。5.通过一个比较复杂的程序,初步认识结构化程序设计实例。三、
2、实验内容1.调试运行下列程序,并注意函数的定义格式以及函数的调用方法,特别要注意形参变量与实参变量的对应关系和形参与实参之间的数据传递。floatsum_of_square(intn){inti;floatsum=0.0;for(i=1;i<=n;i++)sum=sum+i*i;return(sum);}main(){floats;s=sum_of_square(12)*sum_of_square(15);printf(“s=%f”,s);}调用sum_of_square次数实参值形参单元112传递给n215传递给n2.调试运行下列
3、程序,并注意函数间的参数传递,深刻理解“单向传递(值的传递)”。(1)main(){inta[3]={1,2,3};voidf1();f1(a[0],a[1],a[2]);printf(“a[0]=%d,a[1]=%d,a[2]=%d”,a[0],a[1],a[2]);}voidf1(intx,inty,intz){x++;y=y+2;z=z+3;printf(“x=%d,y=%d,z=%d”,x,y,z);return;}(2)main(){inta[3]={1,2,3};voidf2();f2(a);printf(“a[
4、0]=%d,a[1]=%d,a[2]=%d”,a[0],a[1],a[2]);}voidf1(intx[]){x[0]++;x[1]=x[1]+2;x[2]=x[2]+3;printf(“x[0]=%d,x[1]=%d,x[2]=%d”,x[0],x[1],zx[2]);return;}3.编写一个递归函数,计算整数a和b的最大公因子,并分析程序运行时函数调用情况。gcd(b,a%b)b≠0算法如下:gcd(a,b)=ab=0根据算法,程序如下:gcd(inta,intb){intf;if(b!=0)f=gcd(b,a%b)
5、;elsef=a;return(f);}若有如下调用:main(){printf(“thegcdof1026and405is%d、n”,gcd(1026,405));}请写出执行结果并分析计算机执行情况。4.仔细阅读下面程序,改正其中的错误,并在上机调试通过后,写出该程序的功能及运行结果。add1(b,n)intb[],n{intf;printf(“”);for(f=0;f6、9};add(a);printf(“”);for(j=0;j<10;j++)printf(“%d,”,a[j]);}四、实验思考题编写一个简单的“学生管理系统”。其功能如下:1、键盘输入若干个学生的姓名和学习成绩(大学语文、大学英语、高等数学、计算机应用基础),并计算出每位学生的总成绩。2、按照每位学生的姓名排序,并输出排序结果。3、根据学生的姓名查找该学生的所有信息。编写本程序时,要求采用若干个函数,具有较好的“人—机”对话界面,用菜单形式完成。菜单可设计成如下形式:主菜单0------退出系统1------输入2------
7、排序3------查找请您选择: