欢迎来到天天文库
浏览记录
ID:47215085
大小:54.50 KB
页数:12页
时间:2019-08-27
《2012年计算机等级二级C语言填空题练习题及答案解析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、求阶乘 1.该fun函数的功能是求10的阶乘。 1)#include 2)longfun(intn) 3){if(___1___) 4)return(n*fun(___2___)); 5)elseif(___3___) 6)return1;} 第一处:n>1 第二处:n-1· 第三处:n==1 解析:从第2、4行看到了函数名,函数体中又出现了函数的调用,则是递归。我们知道:n!=n*(n-1)!这就是一个递归的表达式,写成函数就是fun(n)=n*fun(n-1)。因此,4行处填写n-1。又:1!=1故3,5行就好填了。因此答案是n>1n-1n=
2、=1。还有0!=1故,还可填写:n>0n-1n==0 注意:35行的条件是相反的,这也是if与else条件的互斥性。 2.程序的功能是计算s=1!+2!+3!+……+n! 1)longfun(intn) 2){inti; 3)longs; 4)s=___1___; 5)for(i=1;i<=n;i++) 6)s=___2___; 7)returns; 8)} 9)main() 10){longs; 11)intk,n; 12)scanf("%d",&n); 13)s=___3___; 14)for(k=1;k<=n;k++) 15)s
3、=___4___; 16)printf("%ld",s); 17)} 第一处:1 第二处:s*i 第三处:0 第四处:s+fun(k) 解析:首先,搞清楚函数fun、main各自的功能。 Fun是求一个数的阶乘,我们知道:n!=1*2*3*…*n 同时要死记住:求积,积的初值一般等于1。故fun中s是用来存放积的,其初值等于1;求阶乘是连乘,故s=s*i Main是求和,记住:和的初值一般等于0. 两个函数中的局部变量s的作用是不同的。Main中的s是存放和的。 最后:注意一些变量的类型。 阶乘是求积,积的增长速度是比较快的,为防止溢出,
4、fun的返回值类型是long。输出中ld是输出长整数。 3.请补全main函数,该函数的功能是: 求1+2!+3!+…+N!的和。 1)main() 2){inti,n; 3)longs=0,t=1; 4)//clrscr(); 5)printf("Inputn:"); 6)scanf("%d",___1___); 7)for(i=1;i<=n;i++) 8){ 9)t=___2___; 10)s=___3___; 11)} 12)printf("1!+2!+3!...+%d!=%ld",n,s); 13)} 第一处:&n
5、 第二处:t*i 第三处:s+t 解析:求前n项的阶乘之和。这里没有使用子函数。 我们知道:5!=5*4!。即需要利用前一个数的阶乘,还有就是替换。 从第3行可知:s存放和,t存放积。 输入n,记住应是&n。 i是循环变量。 记住:填空后,手工地将循环执行几次,检验是否正确。求和、平均值 1.请补全main函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的的绝对值,并显示出来。 main() {longintn; clrscr(); printf("Enterthedata:"); scanf(___1___);
6、printf("******theorigialdata********"); if(n<0) ___2___ printf(""); printf(___3___); } 第一处:"%ld",&n 第二处:n=-n 第三处:"%ld",n 解析:此题要注意的是数据类型,输入输出的格式控制。 长整数使用ld(或Ld) 双精度浮点数使用lf(或Lf) 此处df不能大写 2.请在函数fun的横线上填写若干个表达式,使从键盘上输入一个整数n,输出斐波纳契数列。斐波契数列是一种整数数列,其中每数等于前两数之后,如:011235813……
7、 1)intfun(intn){ 2)if(___1___) 3)return0; 4)elseif(___2___) 5)return1; 6)else 7)return___3___; 8)} 第一处:n==0 第二处:n==1 第三处:fun(n-1)+fun(n-2) 解析:求斐波契数列:一项等于其前两项的和。 这也是一个递归。 求斐波契数列的第n项的值,n从0开始。 3.请补全函数fun,该函数的功能是求出以下分数序列的前n项之和。和值通过函数值返回到main函数。 1)#include 2)#include
此文档下载收益归作者所有