资源描述:
《C语言项目实训教程 教学课件 作者 侯小毛 马凌 项目 5函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计项目五函数项目目标目标二掌握函数的定义和调用格式目标三掌握函数的嵌套调用目标四初步掌握函数的递归调用目标一理解函数的意义目标五能编写程序解决小孩分糖的问题任务分解了解函数1函数的实现2实例体验及算法归纳3绘制流程图及项目实现4项目拓展----函数的嵌套调用5项目拓展----函数的递归调用6项目要求10个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩2
2、0块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖的块数一样多?每人各有多少块糖?任务一了解函数main(){intnum,num1,num2;scanf("%d,%d",&num1,&num2);num=max(num1,num2);printf("max=%d",num);getch();}intmax(intn1,intn2){return(n1>n2?n1:n2);}1.max为定义的函数;2.函数调用时,将参数按顺序传递,然后转去
3、执行该函数;3.执行完函数或执行到return时返回到函数调用处1.概述函数是一个自我包含的完成一定相关功能的执行代码段。C语言程序是由函数组成的。C语言程序鼓励和提倡人们把一个大问题划分成一个个子问题,对应于解决一个子问题编制一个函数。intmax(intn1,intn2){return(n1>n2?n1:n2);}max:函数名intn1,intn2:形参可以接收从函数外部传来的数据int:函数的返回类型函数体,return函数的返回值2.函数定义的一般形式3.函数的声明声明的意义:使编译系统知道被调函
4、数返回值的类型,以便在主调函数中按此种类型对返回值作相应的处理。声明的格式:类型说明符被调函数名(类型形参,类型形参……);或为类型说明符被调函数名(类型,类型……);4.函数的调用main(){intnum,num1,num2;scanf("%d,%d",&num1,&num2);num=max(num1,num2);printf("max=%d",num);getch();}实参:函数调用时,将按顺序将值传递给形参函数返回:max函数执行完后,返回到调用的地方,并将返回值带回函数的调用格式:【变量=
5、】函数名(实参列表)voidprint(ints[])/*输出数组中每个元素的值*/{intk;/*定义一个整型变量,作为循环变量*/printf("%4d",j++);/*输出分糖的次数*//*打印出当前每个小孩手里糖果的数目*/for(k=0;k<10;k++)printf("%4d",s[k]);printf("");/*打印换行*/}print函数:输出每个小孩手中糖果的数量。任务二函数的实现intjudge(intc[])/*判断每个孩子手中的糖是否相同*/{inti;/*定义一个整型变量,作
6、为循环变量*/for(i=0;i<10;i++)if(c[0]!=c[i])return1;/*不相同返回1*/return0;/*相同返回0*/}Judge函数:判断每个小孩手中的糖果数是否一致,一致返回0,否则为1.任务三实例体验第一次分糖(1)第一个小孩分一半给第二个小孩,再加上第十个小孩分给他的糖块数,则余下的糖块数为10/2+20/2=15;(2)第二个小孩分一半给第三个小孩再加上第一个小孩分给他的糖块数,则余下的糖块数为2/2+10/2=6;(3)第三个小孩分一半给第四个小孩再加上第二个小孩分给
7、他的糖块数,则余下的糖块数为8/2+2/2=5;(4)第四个小孩分一半给第五个小孩再加上第三个小孩分给他的糖块数,则余下的糖块数为22/2+8/2=15;(5)第五个小孩分一半给第六个小孩再加上第四个小孩分给他的糖块数,则余下的糖块数为16/2+22/2=19;(6)第六个小孩分一半给第七个小孩再加上第五个小孩分给他的糖块数,则余下的糖块数为4/2+16/2=10;(7)第七个小孩分一半给第八个小孩再加上第六个小孩分给他的糖块数,则余下的糖块数为10/2+4/2=7;(8)第八个小孩分一半给第九个小孩再加上
8、第七个小孩分给他的糖块数,则余下的糖块数为6/2+10/2=8;(9)第九个小孩分一半给第十个小孩再加上第八个小孩分给他的糖块数,则余下的糖块数为14/2+6/2=10;(10)第十个小孩分一半给第一个小孩再加上第九个小孩分给他的糖块数,则余下的糖块数为20/2+14/2=17。第二次分糖(1)第一个小孩找老师要颗糖后分一半给第二个小孩,再加上第十个小孩分给他的糖块数,则余下的糖块数为(15+1)/2+(17+1