- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hw5递归变量作用域.doc
作业 5 递归函数、变量作用域
一、作业要求
书写在16开(A4纸)大小的本子上。无需抄题,但需标清题号。
作业最后需写作业小结,写出本次作业中遇到的问题或程序中遇到的错误,以及解决问题的方法。无作业小结者,本次作业无成绩。
作业成绩取决于作业的认真程度(反映在作业小结中),而不是作业题目的对错。雷同者双方成绩均为0,未事先说明迟交者,作业成绩为0。
二、作业内容
任选4个难度级别不同的题目!!
所有程序要求写出自己程序的运行结果!!!
1、(难度:★)
某机构举办了一个捐款活动来为慈善事业捐款。每笔捐款的一小部分会用做捐款机构的操作费,捐款的其余部分会存入慈善基金。我们所编写的程序要记录该机构所有募集款项的数量,并从每笔捐款中扣除17%作为操作费用,剩余的83%存入慈善基金。程序应能显示每笔捐款扣除了17%的操作费用后的金额,以及目前慈善基金中的总金额。运行结果如下:
要求:1)合理划分函数
2)合理定义变量的存储类型
2、(难度:★★)
下面这个程序的功能是什么?
#include stdio.h
int mystery( int, int ); // function prototype
int main()
{
int x, y;
printf(Enter two integers: );
scanf(%d%d,x,y);
printf(The result is %d\n,mystery( x, y ));
return 0; // indicates successful termination
} // end main
// Parameter b must be a positive
// integer to prevent infinite recursion
int mystery( int a, int b )
{
if ( b == 1 ) // base case
return a;
else // recursion step
return a + mystery( a, b - 1 );
} // end function mystery
3、(难度:★★★)
在不改变主函数的前提下,适当修改第二题,保证在删除第二个参数必须是非负数这个限制条件后,程序仍然能正常工作。
4、(难度:★★)此题为历年期中试题
编写程序使用辗转相除法求最大公约数。要求:使用递归实现。
提示: MaxCommonFactor(22,8)— MaxCommonFactor(8,22%8) — MaxCommonFactor(6,8%6) — MaxCommonFactor(2,6%2) 由于6%2=0,2即为22与8的最大公约数。
5、(难度:★★★★)
用下面给定的代码调用,实现函数int CommonFactors(int a, int b),计算a和b的所有公约数。第一次调用,返回最大公约数。以后只要再使用相同参数调用,每次返回下一个小一些的公约数。无公约数时返回-1。
提示使用static变量。
主函数如下:
#includestdio.h
int CommonFactors(int a, int b);
int main()
{
int sub,a,b;
printf(Please input a and b:);
scanf(%d%d,a,b);
while((sub=CommonFactors(a, b)) 0)
{
static int counter=1;
printf(Common factor %d is %d\n,counter++,sub);
}
return 0;
}
给小学生出加法考试题(6-9题每题只需交一个程序,即最终结果,如,选第九题,那么仅提交程序5,程序1-4仅作为过渡使用)
6、完成程序1、2(难度:★★)
7、完成程序1、2、3(难度:★★★)
8、完成程序1、2、3、4(难度:★★★★)
9、完成程序1、2、3、4、5(难度:★★★★★)
编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程。
程序1 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,程序结束。
提示:拆分函数:AddTest函数:计算两整型数之和,如果与用户输入的答案相同,则返回1,否则返回0;Print函数:打印结果正确与否的信息
程序2 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示
原创力文档


文档评论(0)