c语言第10次实验内容(函数2)邹显春PPT课件_第1页
c语言第10次实验内容(函数2)邹显春PPT课件_第2页
c语言第10次实验内容(函数2)邹显春PPT课件_第3页
c语言第10次实验内容(函数2)邹显春PPT课件_第4页
c语言第10次实验内容(函数2)邹显春PPT课件_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

精选,1,该实验内容依据教材:C语言程序设计实验教程邹显春、王建国主编高等教育出版社,制作人:邹显春,E-Mail:zouxc,精选,2,掌握C语言程序设计的诀窍-重在上机实践!目标:熟练阅读、编写程序,精选,3,实验10函数的嵌套、递归调用及变量的作用域、生存期(P40),说明:参考程序代码放在备注中,仅供大家对照检查,希望同学们本着对自己负责的精神,先独立完成,再看参考答案,精选,4,一、实验目的,1.掌握用递归函数解决递归问题的方法2.理解变量作用域、及生存周期,精选,5,二、实验内容(P40-43),2.设计性实验,为选做。,温馨提示,1.验证性实验、,按要求进行实验,所需要程序代码在网络平台的“课程导学”的“实验引导”中下载。,精选,6,三、实验内容示范,1.验证性实验,程序调试改错a)从“平台”上提供的代码文件test2_23.cpp中取代码,粘贴到编辑区中目的:掌握函数调用的方法,通过调试发现错误,精选,7,该程序编译过程中的错误:,-Configuration:test2_23-Win32Debug-Compiling.test2_23.cppd:vctesttest2_23.cpp(16):errorC2065:call:undeclaredidentifierd:vctesttest2_23.cpp(21):errorC2373:call:redefinition;differenttypemodifiersd:vctesttest2_23.cpp(24):errorC2065:addition:undeclaredidentifierd:vctesttest2_23.cpp(24):errorC2144:syntaxerror:missing)beforetypedoubled:vctesttest2_23.cpp(24):errorC2059:syntaxerror:)d:vctesttest2_23.cpp(26):errorC2065:subtractor:undeclaredidentifierd:vctesttest2_23.cpp(26):errorC2144:syntaxerror:missing)beforetypedoubled:vctesttest2_23.cpp(26):errorC2059:syntaxerror:)d:vctesttest2_23.cpp(28):errorC2062:typedoubleunexpectedd:vctesttest2_23.cpp(30):errorC2062:typedoubleunexpectedd:vctesttest2_23.cpp(34):errorC2373:addition:redefinition;differenttypemodifiers,精选,8,该程序编译过程中的错误(续):,d:vctesttest2_23.cpp(34):errorC2562:addition:voidfunctionreturningavalued:vctesttest2_23.cpp(33):seedeclarationofadditiond:vctesttest2_23.cpp(37):errorC2373:subtractor:redefinition;differenttypemodifiersd:vctesttest2_23.cpp(38):errorC2562:subtractor:voidfunctionreturningavalued:vctesttest2_23.cpp(36):seedeclarationofsubtractord:vctesttest2_23.cpp(41):errorC2562:multiple:voidfunctionreturningavalued:vctesttest2_23.cpp(40):seedeclarationofmultipled:vctesttest2_23.cpp(45):errorC2562:division:voidfunctionreturningavalued:vctesttest2_23.cpp(44):seedeclarationofdivision执行cl.exe时出错.,请分析错误代码,找准出错部位,精选,9,温馨提示:该题目有如下错误:函数未在调用前声明或定义函数在调用时使用了定义时的格式(不必标类型)函数在带值返回时,定义函数的类型与返回类型不一致,参考代码见备注,精选,10,b)将自定义函数保存在函数名为名称的头文件中,使用#include包含在calculator.cpp中说明,包含自定义的头文件,一定保证文件路径与cpp文件一致,并且#include后面使用”来引用头文件,精选,11,温馨提示:由于函数call调用了其他函数,在主函数所在cpp文件中使用#include命令一定要注意顺序,必须保证函数在使用前已经完成了定义或声明(即其他函数的头文件应该先于call函数所在头文件之前被包含进来),#include#includeaddition.h#includesubtractor.h#includemultiple.h#includedivision.h#includecall.h,call.h请放在最后,精选,12,程序调试从“平台”上提供的代码文件test2_24.cpp中取代码,粘贴到编辑区中,按照要求设置断点调试目的:掌握函数调试方法,理解调试中变量值的变化情况,精选,13,解释:当单步运行或设置断点使用GO命令中断后,可在watch窗口手工添加变量看到其值,但在windowsXP下使用VC6.0存在一个bug(错误),看不到程序中定义的静态局部变量值,此时只能通过分析结果来估计它的变化,变量i未在函数中定义(i在主函数中),看不到其值,静态局部变量由于系统bug此时也看不到,运行结果,精选,14,2.设计性实验,为选做。,用嵌套调用的方法计算s=1!+2!+3!+10!,温馨提示:首先编写自定义函数求n的阶乘,再编写一个函数,内部循环调用阶乘并累加求和,主函数中直接调用求和函数,参考代码见备注,精选,15,编写一个递归函数,求第n个Fibonacci数,调用该函数产生前40个数输出。Fibonacci数列中的任意第三个数是它前面两个数的和,即f(n)=f(n-1)+f(n-2)。假若Fibonacci数列的前两个数分别是1和1。要求每行输出5个Fibonacci数,温馨提示:使用条件语句判断,如果传入函数的参数小于等于2时,返回1,否则返回它自身两个递归函数之和,这两个函数的参数使用目前参数减1和目前参数减2的值,参考代码见备注,精选,16,编写一个递归函数,统计任意位正整数的位数,并在主函数中输入这个整数和输出统计的结果。要求有输入/输出提示,说明:限于VC整数的值域,输入的整数请勿大于4294967295(无符号整型)温馨提示:函数中判断传入的参数除以10后的结果,如果为0,则说明是1位数,此时返回1,否则返回1加上自身的递归调用,将自身参数除以10后传给递归函数,参考代码见备注,精选,17,选做或课后完成,精选,18,温馨提示:call函数可参照验证性实验的方法实现,用模块化方法实现数组的查找、插入和删除等基本操作。要求:a)编写一个函数menu实现菜单的输出。b)编写函数find、insert、delet,分别用于实现数组的查找、插入和删除操作。要求以数组的指针为参数。(注:删除不能取名delete,这是C+的一个运算符)c)要求编写一个call函数来调用find、insert、或delet函数。d)要求所有操作完成后要有输出结果e)编写一个主函数调用上述函数,要求数据的输入/输出在主函数内完成,且有输入/输出提示。,精选,19,算法提示:查找操作可用折半查找方法,即通过不断调整要找的数落入的上下边界范围来定位该数插入的方法是先循环在原有序数组中比较,确定操作数应该插入的位置,然后再循环从数组最后位起每次将前一个元素向后搬移,最终留空插入的位置删除的方法是首先查找到要删的数在数组中的位置,再从该位起循环将当前后一位置的数前移,最后填充该位置,详细注释见代码部分,精选,20,运行结果:,参考代码见备注,精选,21,用模块化方法实现找出一个45的二维数组中的鞍点。所谓鞍点是指行上最大且列上最小的元素。也可能没有鞍点。若有鞍点,要求输出鞍点的位置、鞍点的值以及鞍点的个数。若无鞍点,要求输出“无鞍点”的提示。,温馨提示:为了使鞍点容易出现,使用110的随机整数填充,首先循环调用填充数组,然后编写一个两重循环,外循环按行,内循环行内比较,求得每行的最大值(需开辟一个一维的最大值数组来保存),再次编写一个两重循环,外循环按列,内循环按行求得每列最小值(同样要一个最小值数组)。第三次编写两重循环,外循环按行,内循环按列,比较对应行最大值数组和对应列最小值数组是否相同,如果相同,则把原数组种对应值输出,即为一个鞍点。,精选,22,运行结果:,参考代码见备注,精选,23,在命令行中输入若干整数,计算并输出它们的和。要求使用有参主函数实现。,温馨提示:有参主函数的形式为“voidmain(intargc,char*argv)”,形参为命令行中输入的参数个数(包括生成的可执行

温馨提示

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

评论

0/150

提交评论