《小学生C++创意编程》第8单元课件 函数_第1页
《小学生C++创意编程》第8单元课件 函数_第2页
《小学生C++创意编程》第8单元课件 函数_第3页
《小学生C++创意编程》第8单元课件 函数_第4页
《小学生C++创意编程》第8单元课件 函数_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

英第8单元C++快乐编程——小学C++创意编程实例(课件)堂课Hi,Pythonlist,tuple,dictionary语复杂问题,函数上阵——函数目录目录第27课老鹰捉小鸡游戏――库函数第28课剪刀石头布游戏——自定义函数第29课古老汉诺塔游戏——函数的声明和调用老鹰捉小鸡游戏――库函数第27课

体育课上,皮皮鲁与小伙伴玩老鹰捉小鸡的游。皮皮鲁的小伙伴,一共有6位小朋友,按1至6号进行编号,从中随机选择一位当老鹰。皮皮鲁准备编程调用随机函数rand(),产生一个机随数,随机数是几,就让几号小朋友来当老鹰。读故事理思路C++函数有两种,一种是库函数,一种是自己编写的函数。常见的库函数有随机函数rand()、时间函数time()等。在编程时,这些函数不需要自己定义和编写,如果想使用这些库函数,必须在文件开头“包含”有关头文件即可,本题中需要添加的头文件是<stdlib.h>和<time.h>。1.理解题意2.问题思考理思路3.思路分析本题,其思路如下:第一步:使用srand(time(0))函数,获取当前系统时间,设置随机数种子;第二步:调用随机函数rand()产生一个1~6之间的随机数;第三步:输出随机数n。理思路查秘籍1.英汉字典main[meɪn]主要的;重要的

void[vɔɪd]空的;无参数;无返回值;无类型2.库函数的使用在程序设计中,常常将一些常用的功能模块编写成函数放在C++库中,叫库函数。C++常用库中提供了大量的可以调用的库函数,如数学运算的、文件操作的等,在编写程序的过程中,可以直接拿来使用。格式如下:求解决1.编写代码2.测试程序运行结果:第1次运行产生随机数为:第2次运行产生随机数为:第3次运行产生随机数为:求解决2.程序解决3.易犯错误一般情况下,rand()和srand()要一起使用,其中srand()用来初始化随机数种子,rand()用来产生随机数。time()函数用来获取系统时间,因为每次运行程序的时间是不相同的,所以产生的随机数也是不一样的。一般情况下,rand()和srand()要一起使用,其中srand()用来初始化随机数种子,rand()用来产生随机数。time()函数用来获取系统时间,因为每次运行程序的时间是不相同的,所以产生的随机数也是不一样的。求解决4.拓展应用默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以为使每次得到的随机数不一样,用函数srand()初始化随机数种子。srand()的参数是time函数的值(即当前时间),因为两次调用rand()函数的时间通常是不同的,这样就可以保证随机性了。如产生10个1~100之间的随机数可以这样写:#include<iostream>#include<cstdlib>//调用rand()和srand()函数

#include<ctime>//调用time()函数

usingnamespacestd;intmain(){inti,n;srand(time(0));for(i=0;i<10;i++){ n=rand()%100+1;cout<<n<<endl; }}阅览室每个C程序都至少有一个函数,即主函数main()。每个程序可以包含若干个其他函数,但有且只有一个main函数。程序总是从main函数开始执行,在程序执行时main函数可以调用其他函数,其他函数也可以互相调用,但其他函数不能调用main函数。1.主函数阅览室2.常用数学函数

编写程序时,如果需要解决一些数学问题,此时千万不要着急先去写代码,C++库中提供了很多数学函数,随时可以调用,这些库函数多包含中<cmath>库中。练武功1.阅读程序写结果输入:5输入:-8输出:

输出:

练武功2.修改程序错误1:

错误2:

下面这段代码是求一个实数的平方根,其中有2处错误,快来改正吧!

练武功3.完善程序传说古代的叙拉古国王海伦二世发现一个公式,利用三角形的三条边长可以用来求取三角形面积。已知△ABC中的三边长分别为a,b,c,求△ABC的面积(提示:海伦公式如下,其中p=(a+b+c)/2)。练武功4.编写程序

班级联欢会上要举行抽奖活动,全班50名同学每人都拿到了1个抽奖号,试编写程序实现随机抽奖活动,每次抽出5位幸运同学。剪刀石头布游戏――自定义函数第28课

剪刀石头布,是一种非常简单而有趣的小游戏,游戏规则很简单,通过剪刀,石头,布三种手势判断胜负,即剪刀胜布,布胜石头,石头胜剪刀。现在,需要你编写一个程序,判断人与电脑进行剪刀石头布游戏的结果。读故事理思路这是一个猜拳游戏(剪刀胜布,布胜石头,石头胜剪刀),人与电脑对决。人出的拳由自己决定,电脑则随机出拳,最后判断胜负。

1.理解题意2.问题思考理思路3.算法分析本题可通过自定义不同的函数来实现特定的功能,思路如下:第一步:定义一个玩家出拳函数voidplayer(inta);第二步:定义电脑出拳函数intcomputer();第三步:定义判断输赢函数voidpd(intx,intn)。理思路查秘籍1.函数的定义当C++提供给我们的标准函数不能满足需要时,没关系,我们也可以自己编写函数的。在C++语言中,函数是由函数头和函数体组成,每个组成部分都有着不同的作用。函数定义的一般格式如下:查秘籍2.函数定义的说明(1)返回值类型函数的数据类型是函数的返回值类型,可能是int、double、char等,若数据类型为void,则无返回值。(2)函数名函数名是函数的实际名称。一个程序中除了主函数必须为main外,其余函数的名称按照变量的取名规则命名,最好取有助于记忆的名字。(3)形式参数形式参数(简称形参)表可以是空的(即无参函数);也可以有多个形参,形参间用逗号隔开,不管有无参数,函数名后的圆括号都必须有。(4)函数主体函数主体包含一组定义函数执行任务的语句。函数体内的语句决定该函数功能。函数体实际上是一个复合语句,它可以没有任何类型说明,而只有语句,也可以两者都没有,即空函数。求解决1.编写代码求解决2.测试程序

求解决3.程序解决4.易犯错误首先,我们需要定义3个函数来完成玩家出拳(player)、电脑出拳头(computer)和比较判断(pd)结果。然后给出文字提示,让玩家输入对应的数字代表玩家出拳。玩家出拳结束,电脑开始出拳,电脑通过产生随机数来出拳。剪刀石头布游戏规则很简单,即剪刀胜布,布胜石头,石头胜剪刀。如果x代表人出拳,n代表电脑出拳,1代表剪刀,2代表石头,3代表布,则通过以下逻辑表达式,判断人和电脑对决输赢的结果。求解决5.程序改进想一想,为了避免玩一次游戏就退出程序,可以将主程序代码放在循环中,while(1)条件一直成立,这样可以一直不断在玩,添加如下所示代码。intmain(){while(1){cout<<"剪刀石头布开始\n"<<endl;cout<<"请选择:1.剪刀2.石头3.布"<<endl;cin>>x;player(x);n=computer();pd(x,n);}}6.拓展应用在本程序末尾还可以添加用于统计整个战况的代码,如cout<<"战况:赢:"<<y<<"次输:"<<s<<"次平:"<<p<<"次"<<endl。阅览室一个C++程序可由一个主函数和若干个其他函数构成。一个较大的程序可分为若干个程序模块,每一个模块用来实现一个特定的功能。在C++语言中用子程序实现模块的功能。子程序由函数来完成。1.主函数与其他函数阅览室2.形式参数与实际参数

函数的参数分为形式参数和实际参数。在定义函数时,函数名后面圆括号中的变量名称为形式参数,简称“形参”。调用函数时函数名后面圆括号中的参数称为实际参数,也叫实参。调用函数将实际参数传递给形式参数,然后执行函数体。练武功1.阅读程序写结果练武功2.修改程序下面这段代码是定义一个输出“*”的函数,利用它输出三角形的“*”号图,其中,输出的行数在程序运行时输入。其中有2处错误,快来改正吧!错误1:

错误2:

练武功3.完善程序练武功4.编写程序

已知1个六边形,其六边形的面积是4个三角形面积之和,已知4个三角形各边的长度,求六边形的面积。请利用函数编程求解此题(提示:六边形的面积等于四个三角形的面积)。古老汉诺塔游戏――函数声明和调用第29课

有一个的古老传说:在印度北部的一个圣庙里,大梵天创造世界的时候做了3根金刚石柱子A、B、C。其中,在A柱子上穿好了由小到大,且编号为1到n的黄金圆盘,这就是所谓的汉诺塔。有一位僧侣,不论白天黑夜要将所有的圆盘从A柱子移到C柱子,但他同时要遵守以下规则:(1)一次只能移动1个圆盘,它必须位于某个柱子的顶部;(2)圆盘只能在三个柱子上存放。(3)大圆盘不能放在小圆盘上面。试编程输出每一步移动的方法。并估算下,要将A柱上的64个圆盘,按规则要求全部移动到C柱上,需要多长时间。读故事理思路

游戏最简单的情况是当只有1个圆盘时,只要将圆盘从A柱移到C柱上就可以了。如果有2个圆盘,则需要通过3个步骤解决这个游戏:①将1号圆盘从A柱移到B柱上;②将2号圆盘从A柱移到C柱上。③再将1号圆盘从B柱移C到柱上。以此类推,虽然游戏的目的是将圆盘从A柱移到C柱上,但是有必要使用B柱作为圆盘的临时安放位置。可以定义函数hanoi(n,a,b,c),通过递归解决该问题。1.理解题意2.问题思考理思路3.算法分析本题要求用最少的移动次数,把1到n号圆盘从A柱经过B柱移动到C柱。根据分析,需要经过以下几步:第一步:用最少移动次数把1到n-1号圆盘从A柱经过C柱移动到B柱;第二步:把n号圆盘直接从A柱移动到C柱;第三步:用最少移动次数把1到n-1号圆盘从B柱经过A柱移动到C柱。观察发现,第1步和第3步与原问题的本质是一样的,只是圆盘数量在减少,源柱、中间柱和目标柱的状态发生了变化。至此,递归关系比较明显,递归终止条件就是当n=1时,直接从A柱移动到C柱即可。理思路查秘籍1.函数的声明与调用编写程序时,若想调用函数,必须先告诉计算机,也就是要先声明函数。只有声明了函数之后,才可以按规定格式调用函数。具体格式如下:如果在所有函数定义之前声明了函数,那么该函数在本程序文件中任何地方都有效。如果是在某个主调函数内部声明了被调用函数,那么该函数就只能在这个函数内部有效。函数声明与函数定义时的第一行类似,只多了1个“;”号。查秘籍2.函数的返回值在组成函数体的各类语句中,在程序的最后要加一个返回语句return。它的一般形式是:return(表达式);其功能是把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数的返回。当一个函数类型定义为void,或没有返回值时,函数中可以没有return语句;函数类型定义为int,必须有返回值。求解决1.编写代码2.测试程序输入:1运行结果:

输入:2运行结果:

输入:3运行结果:

求解决3.程序解决4.易犯错误如果要把64个圆盘,由一根柱上移到另一根柱上,并且始终保持上小下大的顺序。这需要多少次移动呢?通过递归的方法,假设有n片,移动次数是f(n),显然f(1)=1,f(2)=3,f(3)=7,且f(k+1)=2*f(k)+1,且不难证明f(n)=2n-1。n=64时,f(n)=18446744073709551615。这个数字非常庞大,如每秒钟一次,共需多长时间呢?假如一个平年365天,才有60秒×60分×24小时×365=31536000秒,因此,移完这些圆盘需要5845.54亿年以上,而地球存在至今不过45亿年。因此,众僧们即便是耗尽毕生精力也不可能完成64个圆盘的移动。函数定义与函数声明是不同的,定义是写出函数的完整形式,而声明是告诉系统此函数的返回值类型、参数的个数与类型,便于编译时进行有效的类型检查。函数声明与函数定义时的第一行类似,只多了1个“;”号。在函数定义时,函数名后没有分号。求解决5.程序改进在C语言中,除了主函数外,对于用户定义的函数要遵循“先定义,后使用”的规则。若把函数的定义放在调用之后,应该在调用之前对函数进行声明(或称为函数说明)。但若被调函数的定义出现在主调函数之前,也可以不进行函数声明。程序代码如下所示。求解决6.拓展应用在印度还有一个传说,国王打算奖赏国际象棋的发明人——宰相西达依尔。就问他想要什么,他对国王说:“陛下,请您在这张棋盘的第1个小格里赏给我一粒麦子,在第2个小格里给2粒,第3个小格给4粒,以后每一小格都比前一小格加一倍。请您把这样摆满棋盘上所有64格的麦粒,都赏给您的仆人吧!”国王觉得这个要求太容易满足了,就命令给他这

温馨提示

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

评论

0/150

提交评论