ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:19.23KB ,
资源ID:18091970      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-18091970.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机等级二级C语言填空题练习题及答案解析.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

计算机等级二级C语言填空题练习题及答案解析.docx

1、计算机等级二级C语言填空题练习题及答案解析求阶乘1. 该fun函数的功能是求10的阶乘。1) #include 2) long fun ( int n)3) if (_1_)4) return (n*fun(_2_);5) else if ( _3_)6) return 1;第一处:n1第二处:n-1第三处:n=1解析:从第2、4行看到了函数名,函数体中又出现了函数的调用,则是递归。我们知道:n!=n*(n-1)! 这就是一个递归的表达式,写成函数就是fun(n)=n*fun(n-1)。因此,4行处填写n-1。又:1!=1 故3,5行就好填了。因此答案是 n1 n-1 n=1。还有 0!=1

2、故,还可填写:n0 n-1 n=0注意:3 5行的条件是相反的,这也是if与else条件的互斥性。2. 程序的功能是计算s=1!+2!+3!+n!1) long fun(int n)2) int i;3) long s;4) s=_1_;5) for (i=1; i=n; i+)6) s=_2_;7) return s;8) 9) main()10) long s;11) int k,n;12) scanf(%d,&n);13) s=_3_;14) for (k=1; k=n; k+)15) s=_4_;16) printf(%ldn, s);17) 第一处:1第二处:s*i第三处:0第四处:

3、s+fun(k)解析:首先,搞清楚函数fun、 main各自的功能。Fun是求一个数的阶乘,我们知道: n!=1*2*3*n同时要死记住:求积,积的初值一般等于1。故fun中s是用来存放积的,其初值等于1;求阶乘是连乘,故s=s*iMain是求和,记住:和的初值一般等于0.两个函数中的局部变量s的作用是不同的。Main中的s是存放和的。最后:注意一些变量的类型。阶乘是求积,积的增长速度是比较快的,为防止溢出,fun的返回值类型是long。 输出中 ld 是输出长整数。3. 请补全main函数,该函数的功能是:求1+2!+3!+N!的和。1) main()2) int i,n;3) long s

4、=0,t=1;4) /clrscr();5) printf(nInput n:n);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!=%ldn,n,s);13) 第一处:&n第二处:t*i第三处:s+t解析:求前n项的阶乘之和。这里没有使用子函数。我们知道:5!=5*4!。即需要利用前一个数的阶乘,还有就是替换。从第3行可知:s存放和,t存放积。输入n ,记住应是 &n。i是循环变量。记住:填空后,手工地将循环执行几次,检验是否正确。求和、平均值 1. 请补全main函数,

5、该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的的绝对值,并显示出来。main()long int n;clrscr() ;printf(Enter the data:n);scanf(_1_);printf(* the origial data *n);if(n0)_2_printf(nn);printf(_3_);第一处:%ld,&n第二处:n=-n第三处:%ld,n解析:此题要注意的是数据类型,输入输出的格式控制。长整数使用 ld(或Ld)双精度浮点数使用 lf(或Lf)此处 d f 不能大写2. 请在函数fun的横线上填写若干个表达式,使从键盘上输入一个整数n,输出斐波

6、纳契数列。斐波契数列是一种整数数列,其中每数等于前两数之后,如: 0 1 1 2 3 5 8 131) int fun(int n)2) if(_1_)3) return 0;4) else if(_2_)5) return 1;6) else7) return_3_;8) 第一处:n=0第二处:n=1第三处:fun(n-1)+fun(n-2)解析:求斐波契数列:一项等于其前两项的和。这也是一个递归。求斐波契数列的第n项的值,n从0开始。3. 请补全函数fun,该函数的功能是求出以下分数序列的前n项之和。和值通过函数值返回到main函数。1) #include2) #include3) _1_

7、 fun(int n)4) int a,b,c,k;5) double s;6) s=0.0;7) a=2;8) b=1;9) for(k=1;k=n;k+)10) 11) s=s+(_2_)a/(_3_)b;12) c=a;13) a=a+b;14) b=c;15) 16) return s;17) 第一处:double第二处:double第三处:double解析:从第11-14总结出数列的表达式。第1项是a/b=2/1;3/2 4/3故:s=2/1+3/2+4/3+ 和的初值是0。记住:两个整数进行算术运算结果也是整数,算术运算中只要有一个操作数是实数,运算结果就是实数。本题希望结果是实数

8、,故要进行强制类型转换,2,3只要有一个进行强制转换就可以了。最后,函数需要有一个返回值类型,当然也是双精度浮点数了。4. 给定程序的功能是计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值通过形参传入。1) double fun( double q )2) int n;3) double s;4) n = 2;5) s = 2.0;6) while (s _1_ q)7) 8) s=s+(double)(n+1)/n;9) _2_ ;10) 11) printf(n=%dn,n);12) _3_ ;13) 第一处:s = q第二处:n+第三处:return s解析:从第8行,从数

9、学的角度总结出数列的表达式。(n+1)/n n从2开始,每次增加1,故:SN=2+3/2+4/3+ 和的初值是2.0循环条件是“SN大于q为止” ,while是满足条件才循环,故填写s = q最后,函数需要有一个返回值。5. 给定程序功能是计算S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n)的值。float f( double x)if (x = 0.0 | x = 2.0)return _1_;else if (x 0.0)return (x -1)/(x-2);elsereturn (x +1)/(x-2);double fun( int n )int i; doub

10、le s=0.0, y;for (i= -n; i=_2_; i+) y=f(1.0*i); s += y; return _3_;main ( )printf(%fn, fun(5) );第一处:0.0第二处:n第三处:s解析:函数f ( double x) 求每个单项的值。 ifelse的条件是互斥的。fun( ) 是求和。1. 给定程序的功能是计算score中m个人的平均成绩aver,将低于aver的成绩放在below中,通过函数名返回人数。int fun(int score, int m, int below)int i, j = 0 ;float aver = 0.0 ;for(i

11、= 0 ; i m ; i+) aver += scorei ;aver /= (float) m ;for(i = 0 ; i m ; i+)if(scorei aver) belowj+ = _1_ ;return j ;main()int i, n, below9 ;int score9 = 10, 20, 30, 40, 50, 60, 70, 80, 90 ;n = fun(score, 9, _2_) ;printf( nBelow the average score are: ) ;for (i = 0 ; i n ; i+) printf(%d , _3_) ;第一处:scor

12、ei第二处:below第三处:belowi解析:求平均值,应先求和。此处,和 与平均值使用了同一个变量。Score 是原来的成绩,Below【 】存放低于平均分的分数,还有人数。Below的长度一定不大于score的长度。Below的长度必须通过计数才能得到,且是在比较的过程中得到的。Below数组的长度用j来计数,其初值当然为0。Fun函数中:先求总分,平均分;再比较,比平均分低,存于below,j+。J是后加,不能错了。函数fun的返回值赋值给n,n就是below数组的长度。2. 在主函数中从键盘输入若干个数放入数组x中,用0结束输入但不计入数组。下列给定程序中,函数fun功能是:输出数组

13、元素中小于平均值的元素。void fun(_1_,int n)double sum=0.0;double average=0.0;int i=0;for(i=0;iN;I+) _2_;average=_3_;for (i=0;iN;I+) if(xiAVERAGE) if(i%5=0)printf(n);printf(%d, ,xi);第一处:int x第二处:sum+=xi第三处:sum/n解析:算法思想同上题3. 请补全fun函数,该函数的功能是求不超过给定自然数的各个偶数之和。int fun(int x)int i,s;s=_1_;for(_2_)s+=i;return s; 第一处:0

14、第二处:i=2; i 解析:求和,和的初值s为0。最小的非负偶数是0,偶数间的大小关系是相差2。4. 请补全main函数,该函数的功能是:计算并输出下列多项式的值。S=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+50)#include _1_ fun(int n)int i,j;double sum=0.0,t;for(i=1;i=n;i+)t=0.0;for(j=1;j=i;j+)t+= _2_;sum+= _3_;return sum;第一处:double第二处:j第三处:1.0/t解析:S中的每一项的分母是1+2+3+i 需要用一个一重循环实现,把所有商相加,需要用一个循环

15、;组合起来整个就需要二重循环。内循环求每个单项的和,外循环求商的和。每单项的分子是1,应该用浮点数1.0;每单项的分母是求和,和的初值为0.0;函数的返回值是浮点数。5. 请补全main函数,该函数的功能是,计算两个自然数n和m(m10000)之间所有数的和。n和m从键盘输入。main()int n,m;long sum;_1_;clrscr();printf(nInput n,mn);scanf(%d,%d,&n,&m);while( nb)_1_;else_2_;if(maxC) _3_;printf(max=%dn,max);第一处:max=a第二处:max=b第三处:max=c解析:若

16、ab 则a较大,将其放入max中;否则将b存于max。此时,max中存放的就是前两个数中较大的,再将max与c比较。2. 函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。int fun(int a, int b, int c)int t;t = (ab) ? (bc? b :(ac?c:_1_) : (ac)?_2_ : (bc)?c:_3_);return t;第一处:a第二处:a第三处:b解析:条件表达式的理解。3. 请补全fun函数,该函数的功能是把从键盘输入的3个整数按从小到大输出。main()int x,y,z,t;clrscr();printf(Input x,y,zn);scanf(%d%d%d,&x,&y,&z);if (_1_)t=x;x=y;y=t; /*交换x,y的值*/if(_2_)t=z;z=x;x=t; /*交换x,z的值*/if(_3_)t=y;y=z;z=t; /*交换z,y的值*/第一处:xy第二处:xz第三处:yz解析:3个数排序,两两比较,小的放前,大者放后。交换。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2