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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

上机100套题及答案3140.docx

1、上机100套题及答案31402009年4月上机100套题31-40第三十一套请补充main函数,该函数的功能是:求n!。 例如,7!=5040。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #include void main() int I,n; long f=1; system(CLS); printf(Input n: ); scanf(%d,【1】); for(【2】;I=n;I+) 【3】; printf(%d!=%ldn,n,f);【参考答案】 (1)

2、 &n (2) i=1或i=2 (3) f*=i 【考点分析】 本题考查:scanf( )函数;for循环语句,循环变量初始值;阶乘算法。 【解题思路】 填空1:本题考查对标准输入函数scanf( )的掌握程度,地址列表中都是地址值,所以在变量名前要加上取址运算符&。 填空2:n的阶乘是将1、2、3n累积相乘,所以for循环中i从1开始取数。因为1乘以任何数都等于这个数本身,所以i也可以从2开始取数。 填空3:掌握了阶乘的算法,这个问题就非常简单。 下列给定程序中,函数fun的功能是:求表达式s=aaaa-aa-aa-a(此处aaaa表示n个a,a和n的值在1至9之间)的值。例如a=3,n=6

3、,则以上表达式为: s=333333-33333-3333-333-33-3 其值是296298。a和n是函数fun的形参,表达式的值作为函数值传回main函数。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include long fun(int a,int n) int j;/*found*/ long s=0,t=1; /*found*/ for(j=0;j=n;j+) t=t*10+a; s=t; for(j=1;jn;j+) /*found*/ t=t%10; s=s-t; retu

4、rn(s);main() int a,n; printf(nPlease enter a and n: ); scanf(%d%d,&a,&n); printf(nThe value of function is %ldn, fun(a,n);【参考答案】 (1)错误:long s=0,t=1; 正确:long s=0, t=0; (2)错误:for (j=0;j=n;j+) 正确:for (j=0;jn;j+) (3)错误:t=t%10; 正确:t=t/10; 【考点分析】 本题考查:变量赋初值;for循环语句;区别求余运算和除法运算。 【解题思路】 (1)用代入法就可看出,结果是错误的,它

5、的个位出现了问题。 (2)从题中给出的例题就可以看出,当n=6,a=3时,得到的最大数为33333,这是一个五位数,所以这里只要从0开始循环6次就可以了。 (3)根据题意,这里不需要求余数,而是要去掉个位数,重新组合一个数。 请编写函数fun,其功能是计算并输出如下多项式的值: Sn=l+1/1!+1/2!+1/3!+1/4!+1/n! 例如,若主函数从键盘给n输入15,则输出为S=2.718282。 注意:n的值要求大于1但不大于100。部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include double

6、 fun(int n)void main() int n; double s; FILE *out; printf(nInput n: ); scanf(%d,&n); s=fun(n); printf(s=%fn,s); /*/ out=fopen(out.dat,w); fprintf(out,%fn,fun(n); fclose(out); /*/【参考答案】 double fun(int n) double t,sn=1.0; int i,j; for(i=1;i=n;i+) t=1.0; for(j=1;j=i;j+) t*=j; sn+=1.0/t; return sn; 【考点分

7、析】 本题考查:变量数据类型,数据类型强制转换;和、积变量如何初始化;for循环语句;通过return语句返回值。 【解题思路】 该程序的数学思路是:在程序中输入n后,以前n项的阶乘作为分母递加,由于t是浮点类数据,所以s+=1.0/t,for循环的作用是每一次循环,将1.0/t与sn相加,并将值存入sn中。 第三十二套请补允函数fun,该函数的功能是:计算并输出下列多项式的值。 例如,若主函数从键盘给n输入50后,则输出为S=1.960784。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填若干表达式或语句。 试题程序: #include 【

8、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;void main() int n; double s; printf(nInput n: ); scanf(%d,&n); s=fun(n); printf(nns=%fnn,s);【参考答案】 (1) double (2) j (3)1.0/t或(double)1/t【考点分析】 本题考查:有参函数的定义;变量累加;多项式求和,数据类型强制转换。 【解题思路】 填空1:根据主

9、函数可知,返回值是一个double型的数据,因此填入double。 填空2:由题中的公式可知,t表示分数分母的累加,那么应填入j。 填空3:计算整个公式的和,就是分母的倒数和,由于在计算过程中有小数存在,应把分子写为double型的数据,所以填入1.0/t或(double)1/t。 下列给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值。 例如,若m的值为5,则应输出:1.463611。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include double fun (int m

10、) double y=1.0; int i;/*found*/ for(i=2;im;i+) /*found*/ y+=1/(i*i); return (y);void main() int n=5; system(CLS); printf(nThe result is %1fn,fun(n);【参考答案】 (1)错误:for (i=2;im;i+) 正确:for(i=2;i=m;i+) (2)错误:y+=1/(i*i) ;正确:y+=1.0/(i*i) ;【考点分析】 本题考查:for循环语句的循环条件;数据类型的强制转换,由强制转换运算符完成转换。 【解题思路】 (1)for (i=2;i

11、m;i+)中是一个基础的分析错误,应该包括m。 (2)y是一个double型变量,题中得出的结果是一个整数,所以改为y+=1.0/(i*i)。 请编写函数fun,该函数的功能是:计算并输出 S=1+(1+20.5)+(1+20.5+30.5)+(1+20.5+30.5+n0.5) 例如,若主函数从键盘给n输入20后,则输出为S=534.188884。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include#includedouble fun(int n) void main() FILE *wf; i

12、nt n; double s; printf(nnInput n: ); scanf(%d,&n); s=fun(n); printf(nns=%fnn,s);/*/ wf=fopen(out.dat,w); fprintf(wf,%f,fun(20); fclose(wf);/*/【参考答案】 double fun(int n) int i; double s=0.0,s1=0.0; for(i=1;i=n;i+) s1=s1+pow(i,0.5); /*求每一项*/ s=s+s1; /*按公式求出s*/ return s; 【考点分析】 本题考查:变量数据类型及初始化;pow( )函数的使

13、用,其功能是计算x的y次方;for循环语句完成每一项的值以及累加计算。 【解题思路】 我们先用数学的思路读懂该程序,并用1个字符表示()内的值。在本程序中用s1来表示题中每个小括号内的值,第1项相当于有1个10.5 (它还是1),第2项相当于第1项的值加上20.5,第3项相当于第2项的值加上30.5,依此类推。函数pow(x,y)的功能是求出x的y次方,该函数已在库函数中定义(即可直接使用)。程序中用s来表示总的结果,每1次循环加1次s1,即加1项。 第三十三套程序的功能是计算。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。

14、试题程序: #include long fun(int n) int I; long s; s=【1】; for(I=1;I=n;I+) s=【2】; return s;void main() long s; int k,n; scanf(%d,&n); s=【3】; for(k=0;k=n;k+) s=【4】; printf(%ldn,s);【参考答案】 (1) 1 (2) s*i或i*s (3) 0 (4) s+fun(k) 【考点分析】 本题考查:累加(乘)操作时,变量如何初始化,如何实现累加(乘)。 【解题思路】 函数fun的功能是计算n的阶乘。首先,定义一个long型累计变量s,并初

15、始化为1,然后用一个for循环从1循环到n,累乘给s,循环结束时s的值即为n的阶乘。主函数中也定义了一个累计变量s,通过for循环,累加从0到n的所有数的阶乘。 数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数fun的功能是:计算前项的累计和。在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数里。如当n的值为20时,该数列为3,8,13,18,23,28,93,98。符合此条件的累加值应为42,126,366,570,1010。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程

16、序的结构。 试题程序: #include #define N 20int fun(int n, int *a)/*found*/ int I,j,k,sum; sum=0; for(k=3,I=0;In;I+,k+=5) sum=sum+k;/*found*/ if(sum%4=2) aj+=sum; /*found*/ return j;void main()int aN,d,n,i;printf(nEnter n(4=n=50): );scanf(%d,&n); d=fun(n,a); printf(nnThe result :n ); for(i=0;id;i+) printf(%6d

17、,ai);printf(nn );【参考答案】 (1)错误:int i,j,k,sum; 正确:int i,j=0,k,sum; (2)错误:if(sum%4=2) 正确:if(sum%4=2) (3)错误:return j; 正确:return j+; 【考点分析】 本题考查:变量初始化;if语句条件表达式,区别=和=;return语句完成函数值的返回。 【解题思路】 该题是一个公差为5的等差数列,要是用数学的办法解决也就是一个公式两个符号,问题迎刃而解,要是用C语言来求这样很有规律的等差数列前n项和,也相当简单,关键看细节。i,k,sum都分别定义了,那么j呢?所以,正确的应该是int i

18、,j=0,k,sum;,再往下看,if(sum%4=2)是在说明题干中在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数,那么余2的表示方法呢?应该是if(sum%4=2),后面的返回错误就不提了,看看aj+=sum;语句,难道还能返回给j吗? 请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。 例如,若主函数从键盘给n输入的值为856,则输出m为sum=763。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

19、试题程序: #include int fun(int n)void main() int n,sum; FILE *out; printf(Input n:); scanf(%d, &n); sum=fun(n); printf(sum=%dn, sum); /*/ out=fopen(out.dat,w); fprintf(out,%dn,fun(123); fprintf(out,%dn,fun(456); fprintf(out,%dn,fun(789); fprintf(out,%dn,fun(147); fprintf(out,%d,fun(258); fclose(out); /*

20、/【参考答案】 int fun(int n) int s=0,i; for(i=2;i=n-1;i+) /*将n减1累加*/ if(n%i=0) s+=i; return s; 【考点分析】 本题考查:变量数据类型,求和时变量如何初始化;所有因子的判定方法,if语句结合求余运算;return返回语句。 【解题思路】 函数fun的功能是计算输出给定整数n的所有因子之和。本题比较简单,(1)遍历从2到n-1的所有整数;(2)用条件语句找出能被n整除的所有整数,并累加求和;(3)返回值。 第三十四套请补充main函数,该函数的功能是:求1+2!+3!+N!的和。 例如,1+2!+3!+5!+6!的和

21、为873。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include #include void main() int I, n; long s=0, t=1; system(CLS); printf(nInput n:n); scanf(%d,【1】); for(I=1;I=n;I+) t=【2】; s=【3】; printf(1!+2!+3!.+%d!=%ldn,n,s);【参考答案】 (1) &n (2) t*i (3) s+t 【考点分析】 本题考查:scanf( )函数,其一般形式为s

22、canf(格式控制字符串,地址表列);,其中,需要注意地址是由地址运算符&后跟变量名组成的;累加以及累乘的实现方法。 【解题思路】 填空1:标准输入函数scanf( )的地址表列中,变量n前要加上取址运算符&。 填空2:变量t用来保存每个数的阶乘,因为i!=(i-1)!*i,所以此空应为t*i。 填空3:变量s用来保存从1到n的阶乘的总和。 下列给定程序中,函数fun的功能是:求S的值。设 S=(22/(1*3)*(42/(3*5)*(62/(5*7)*(2k)2/(2k-1)*(2k+1) 例如,当k为10时,函数的值应为1.533852。 请改正程序中的错误,使它能得出正确的结果。 注意:

23、不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include #include /*found*/fun(int k) int n; float s, w, p, q; n=1; s=1.0; while(n=k) w=2.0*n; p=w-1.0; q=w+1.0; s=s*w*w/p/q; n+; /*found*/ return svoid main() system(CLS); printf(%fn ,fun(10);【参考答案】 (1)错误:fun(int k) 正确:double fun(int k) (2)错误:r

24、eturn s 正确:return s; 【考点分析】 本题考查:函数定义,其形式为类型标识符 函数名(形式参数表列);return语句;C语言的书写规范。 【解题思路】 这是一道用C程序来实现的数学题,实现起来比较简单,但是就注意细节上的错误。该题有两处错误,一个是简单的函数调用的定义错误;另一个是语法错误。 请编写函数fun,它的功能是:计算并输出n(包括n)以内所有能被5或9整除的自然数的倒数之和。 例如,若主函数从键盘给n输入20后,则输出为s= 0.583333。注意:n的值要求不大于100。部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填

25、入所编写的若干语句。 试题程序: #include double fun(int n) main() int n; double s; FILE *out; printf(nInput n:); scanf(%d,&n); s=fun(n); printf(nns=%fn,s); /*/ out=fopen(out.dat,w); fprintf(out,%fn,fun(30); fclose(out); /*/【参考答案】 double fun(int n) int i; double sum=0.0; for(i=1;i=n;i+) if(i%5=0|i%9=0) sum+=1.0/i;

26、return sum; 【考点分析】 本题考查:变量数据类型及初始化;if语句,for循环语句。 【解题思路】 本题是一道简单的计算题,首先确定了n的范围,然后确定判断条件。只要判断条件正确,这道题就可以轻松解决。 第三十五套给定程序的功能是:计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值通过形参传入。 例如,若q的值为50.0,则函数值为50.416687。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include double fun(double q) int n; double s,t; n=2; s=2.0; while(s【1】q) s=s+(double)(n+1)/n; 【2】; printf(n=%dn ,n); 【3】;void main() printf(%fn ,fun(50);【参考答案】 (1)= (2)n+或n+=1或n=n+1 (

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1