C++函数新特征与递归函数
来源:互联网 发布:mac怎么彻底删除战网 编辑:程序博客网 时间:2024/06/02 05:53
地址:http://blog.csdn.net/sxhelijian/article/details/40947993
【项目1- 阅读程序】阅读下列程序,写出程序的运行结果。上机时运行程序,与你的预期进行对照、理解。如果对运行结果和其背后的原理仍不理解,请通过单步执行的手段跟踪理解。
(1)阅读下面两个有静态局部变量的程序,阅读中画出其中各变量的变化过程,以掌握静态变量的存储特征,对照实际运行结果检验学习成果。必要时记得看书及课件。
实际运行结果是:__________________
实际运行结果是:__________________
(2)阅读下面两个有全局变量的程序,阅读中画出其中各变量的变化过程,以掌握全变量的存储特征,对照实际运行结果检验学习成果。必要时记得看书及课件。
预计运行结果是:__________________
实际运行结果是:__________________
预计运行结果是:__________________
实际运行结果是:__________________
(3)阅读下面两个包含有递归函数的程序,要求按课堂演示,画出调用过程,并列出运行结果。对照实际运行结果检验学习成果。必要时记得看书及课件。
预计运行结果是:__________________
实际运行结果是:__________________
预计运行结果是:__________________
实际运行结果是:__________________
(4)理解函数的默认参数:运行程序,利用调试功能,观察变量和函数参数的值,结合课堂讲解,品味默认参数的作用。
① 去掉第4行的“=6.5”试试,出错的原因是____________________;
② 将第14行改为“float area(float r=6.5)”,出错的原因是__________________;
③ 将第5行“float h,float r=6.5”改为“float h=1,float r”,出错的原因是_____________;
④ 将第5行改为“float volume(float h=0,float r=6.5)”,带来的改变将是____________________。
(5)理解函数模板:运行程序,结合课堂讲解,品味函数模板的意义。利用codeBlocks中的Debug功能,Step Into到函数内部,观察每次调用时函数的参数值,体会类型参数T每次调用时被不同实际类型替代。
提示1:在单步执行中,采用step into后,可以将T像待观察的变量一样,放在watch窗口中进行察看,如图所示,可以发现T取不同的类型。
【项目2-OJ平台题目中多种输入形式的处理】
看教学视频或“OJ平台题目中不同形式输入的处理”,完成平台中的一组题目,分别对应不同输入的形式的问题。
A: 求N组数的最大公约数
Description
计算一组数的最大公约数
Input
第一行是数据的组数N,从第二行是N组由两个整数(a和b)构成的输入,a和b之间用空格隔开,每组输入单独占一行
Output
每组的两个整数(a和b)的最大 公约数,每个结果独占一行
Sample Input
3
98 72
80 36
12 144
Sample Output
2
4
12
B:分离正整数中的各位数
Description
输出正整数的各位数
Input
若干个用空格隔开的正整数(输入个数不确定,键盘输入时,以CTRL-Z结束)
Output
每个正整数的各位数字,个位数在前,十位数紧随,最高位在最后,每位数后面有一个空格。每个正整数对应的输出占一行。
Sample Input
123 9523 89
Sample Output
3 2 1
3 2 5 9
9 8
C:刑警的射击成绩
Description
刑警培训结束,进行了射击科检验。教官要对学员射击的成绩进行分析,得出各分数段人数统计。
Input
输入若干个0-10间的整数(最高10环,脱靶为0)表示成绩,人数不确定,输入以一个0-10以外的数作为。
Output
各分数段(A:9环以上,B:7环以上,C:5环以上,D:不足5环)的人数,每项成绩占一行
Sample Input
9 7 3 5 8 5 6 7 9 10 0 6 99
Sample Output
A:3
B:3
C:4
D:2
【项目3-用递归方法求解】
(1)编写递归函数求出n的阶乘(自定义main函数,调用定义的递归函数)
(2)写出求1*3*...*n的递归式,并编写出递归函数求解。
(3)编程序,用递归函数求出两个数的最大公约数。(包括编main函数,调用定义的递归函数)
(4)编制递归函数fib(int n)返回第n个Fibnacci数,以此输出Fibnacci序列的第20个数。
(5)输入一个整数n,要求输出对应的二进制形式,请用递归函数实现。提示:二进制整数n转换为二进制的方法是“除2取余法”,即将n除以2后得到的余数,由后到前“串”起来,得到对应的二进制数,如图。
(6)汉诺塔
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,下面左图给出了移动方法的提示。请编制递归函数输出盘子数为4时(程序调试后,试试15个、20个,直至64个,看看会如何),移动的方案。图为盘子数为3时的输出供参考。
参考代码如下:
【项目4 - 银行系统】
这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了。
在学习中,总是想要些成就感的。当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么。在学习过程中,完成一个像样的项目,那是一件很酷的事情,也让我们更有激情。做好思想准备,中间可能会有些困难,但相信沉下心来还是可以完成的。
要做项目的需求最好能和大家的生活实践联系起来,我们想得到。另外,还能和我们的课程同步上。两厢结合,我们就开个银行,做个自动取款机吧。
如果没有用过自动取款机,先用你的银行卡取一次钱去吧,权当作调研。
我们首先插卡,输密码。做纯软件模拟,我们没有读卡机,好吧,认为卡已经插好了。
为了让大家一点一点地做出来,我试图分解其中的工作,我们逐渐完善,“增量式”地完成工作。你可以每做完一个任务,就发一篇博文,将这样一个成长的阶段记录下来。
任务1——搭一个框架
你的程序运行后的界面如图:
- 用const定义全局的常变量PASSWORD,作为银行卡的密码(真银行卡的密码可不是这样,它要分别记住各个帐户的密码,我们现在认为所有卡都这个密码)。
- 判断输入的密码是否正确,如果不正确,提示:“你这个笨脑瓜!”并退出程序,(注意,真银行可不敢骂人,你的银行这样写写无妨。)否则,继续下面的工作。
- 用户如图输入功能选择,根据给出的答复,用switch多分支完成下面的显示:
- a. 输入1,显示“您的余额是xxxx.xx元。”(想过瘾,用你觉得足够大的数当余额)
- b. 输入2-4的提示自编;
- c. 输入0,显示“谢谢,欢迎下次再来!”(好有礼貌)
- d. 输入不是0-4,提示“输错,不要急!”
写完程序后,请将之发布为博文(程序中的注释自己加,程序前要有,中间也来些必要的)。
任务2——引入函数改善程序结构
1、数据
仍然只支持一位用户,所以用户帐号不必存储。
要用全局变量存储:(1)用户密码(由于支持改密码功能,所以用变量,暂先用整型,声明时赋初值);(2)帐户余额(用浮点数表示,声明时赋初值)
2、在输入密码环节,实现有限次密码输入的限制,如果三次都没有输入正确,程序将直接退出,不允许用户继续操作。
查验密码功能做成一个函数。例如:
4、办理业务的函数work的结构如下:
其中,各项业务分别编制一个函数完成。提示功能菜单(1.查询、2.取款、3.存款、4.转帐、5.改密、0.退出)后,由用户输入功能选择,用switch多分支完成对应的功能(有的功能依然只输出一句话提示即可)。图示给出建议(鼓励在合理范围内别出心裁):
- 输入1(查询),调用函数showbalance(),显示“您的余额是xxxx.xx元。”
- 输入2(取款),调用drawmoney(),完成取款。要求输入取款金额,若余额不够,提示不能取款,否则,帐户余额减少。取款后给出提示:“你的余额还有XXX.XX元”。
在实际业务中,还涉及到计算的问题。本题暂不考虑,作为拓展建议,可以在此处考虑计息。 - 输入3(存款):调用deposit(),完成存款,余额增加(过瘾吧,想存多少存多少)。存款后给出提示:“你的余额是XXX.XX元”。
- 输入4(转帐):调用transferAccounts(),完成转帐,只支持转出功能。要求输入对方帐号和转帐金额,若金额充足,完成转帐,当前帐户的余额减少,对方帐户余额增加。由于本题只有一个帐号,故对方帐户增加的操作先不做了。
- 输入5(改密):调用updatePassword()改变密码。要求先输入旧密码,对了以后才能改密。新密码要输入两次,只有两次完全相同时才可以完成修改。
- 输入0,显示“谢谢,欢迎下次再来!”退出循环,返回调用函数。
- 输入不是0-5,提示“输错了,不要急!”
任务3——将程序用多文件组织
将任务2中的代码,涉及密码、帐户的函数放在一个文件中,完成各项功能的函数放在另一个文件中,main函放也单独一个文件。
- C++函数新特征与递归函数
- C++函数新特征与递归函数
- 2014秋C++ 第12周项目 C++函数新特征与递归函数
- c语言--函数与递归
- C++:函数与递归 Function and Recursion
- C语言04函数与递归
- C语言函数与递归四
- C语言函数与递归四
- C 重写power函数 递归与循环
- C for ios --- printf 与递归函数
- C + +的递归函数
- c算法 ->递归函数
- c语言递归函数
- C 【函数 递归】
- C-递归的函数
- C语言 函数递归
- 函数调用与递归
- 匿名函数与递归
- UVA Skew Binary
- Smarty学习笔记
- 移植ssh到arm
- JSON简要-来自百科
- vijos p1005 奶牛浴场[ 极大化思想]
- C++函数新特征与递归函数
- SZU 2015 Winter Training Day#2
- UVA Multiplying by Rotation
- HDUOJ-1001: 计算从1到n的和
- Alex 的 Hadoop 菜鸟教程: 第9课 zookeeper 介绍和使用
- Unix高级环境编程系列笔记
- 关于servlet中如何弹出消息框并跳转到某一页面---和其中的一些问题
- Python 安装matplotlib,six,dateutil,pyparsing 完整过程
- Triangle (Java)