欢迎来到天天文库
浏览记录
ID:18853795
大小:1019.50 KB
页数:197页
时间:2018-09-26
《2011年全国计算机等级c考试二级填空题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、题目: 请补充fun函数,fun函数的功能是求10的阶乘。 注意:部分源程序如blank.c给出。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 #include long fun(int n) { if(___1___) return(n*fun(___2___)); elseif(___3___) return1; } main() { intk=10; print
2、f("%d!=%ld",k,fun(k)); }1分析: 整个程序是计算10的阶乘,而n的阶乘是这样计算的: n!=n*(n-1)*(n-2)*(n-3)*…*3*2*1 其中n>0并且n为自然数。 所以,10的阶乘就是计算10*9*8*7*6*5*4*3*2*1的结果,换句话说就是计算1至10之间所有自然数的乘积。从程序来看,fun函数就是计算阶乘的函数,但是在fun函数中又调用了自己,即第五行"return(n*fun(___2___));"中fun函数又调用了fun函数,这种函数自己调用自身的现象在程序设计中称为递归,使用递归这种程序设计方法对设计人员的程序
3、设计能力有较高的要求。 计算阶乘是递归程序设计的一个经典示例。计算某个数的阶乘就是用那个数去乘包括1在内的所有比它小的数。例如,fun(5)等价于5*4*3*2*1,而fun(3)等价于3*2*1。 阶乘的一个有趣特性是,某个数的阶乘等于起始数(startingnumber)乘以比它小一的数的阶乘。例如,fun(5)与5*fun(4)相同。您很可能会像这样编写阶乘函数fun: intfun(intn) { returnn*fun(n-1); } 不过,这个函数的问题是,它会永远运行下去,因为它没有终止的地方。函数会连续不断地调用fun。当计算到零时,没有条件来停止
4、它,所以它会继续调用零和负数的阶乘。因此,我们的函数需要一个条件,告诉它何时停止。 由于小于1的数的阶乘没有任何意义,所以我们在计算到数字1的时候停止,并返回1的阶乘(即1)。因此,真正的递归函数类似于: intfun(intn) { if(n==1) { return1; } else { returnn*fun(n-1); } } 题目: 请在函数fun的横线上填写若干表达式,使从键盘上输入一个整数n,输出斐波纳契数列。斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如011235813…… 注意:部分源程序如blan
5、k.c给出。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 #include intfun(intn); main() { inti,n=0; scanf("%d",&n); for(i=0;i6、 else return___3___; }2分析: 从题意可以得知本题计算的是斐波纳契数列,斐波纳契数列的计算方法由题目得知该数列中每数等于前面两数之和,如011235813……,这样我们可以列出以下计算斐波纳契数列的公式: fun(0)=0 当n=0 fun(1)=1 当n=1 fun(n)=fun(n-1)+fun(n-2) 当n>1 当n等于0的时候,即计算斐波纳契数列的第一个数字,根据题目知道该数列的第一个数字为0。 当n等于17、的时候,即计算斐波纳契数列的第二个数字,根据题目知道该数列的第二个数字为1。 当n等于2的时候,即计算斐波纳契数列的第三个数字,由于该数列中每数等于前面两数之和,所以fun(2)=fun(1)+fun(0)。 当n等于3的时候,即计算斐波纳契数列的第四个数字,由于该数列中每数等于前面两数之和,所以fun(3)=fun(2)+fun(1)。 …… 所以当n大于1的时候,fun(n)=fun(n-1)+fun(n-2)。 这里存在函数调用本身的现象,这种现象在程序设计中称为递归。 题目: 请补充函数fun(char *s),该函数的功能是把字符串中的内容
6、 else return___3___; }2分析: 从题意可以得知本题计算的是斐波纳契数列,斐波纳契数列的计算方法由题目得知该数列中每数等于前面两数之和,如011235813……,这样我们可以列出以下计算斐波纳契数列的公式: fun(0)=0 当n=0 fun(1)=1 当n=1 fun(n)=fun(n-1)+fun(n-2) 当n>1 当n等于0的时候,即计算斐波纳契数列的第一个数字,根据题目知道该数列的第一个数字为0。 当n等于1
7、的时候,即计算斐波纳契数列的第二个数字,根据题目知道该数列的第二个数字为1。 当n等于2的时候,即计算斐波纳契数列的第三个数字,由于该数列中每数等于前面两数之和,所以fun(2)=fun(1)+fun(0)。 当n等于3的时候,即计算斐波纳契数列的第四个数字,由于该数列中每数等于前面两数之和,所以fun(3)=fun(2)+fun(1)。 …… 所以当n大于1的时候,fun(n)=fun(n-1)+fun(n-2)。 这里存在函数调用本身的现象,这种现象在程序设计中称为递归。 题目: 请补充函数fun(char *s),该函数的功能是把字符串中的内容
此文档下载收益归作者所有