机试练习4(31-40套含答案).docx

上传人:rrsccc 文档编号:10457852 上传时间:2021-05-17 格式:DOCX 页数:30 大小:40.22KB
返回 下载 相关 举报
机试练习4(31-40套含答案).docx_第1页
第1页 / 共30页
机试练习4(31-40套含答案).docx_第2页
第2页 / 共30页
机试练习4(31-40套含答案).docx_第3页
第3页 / 共30页
机试练习4(31-40套含答案).docx_第4页
第4页 / 共30页
机试练习4(31-40套含答案).docx_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《机试练习4(31-40套含答案).docx》由会员分享,可在线阅读,更多相关《机试练习4(31-40套含答案).docx(30页珍藏版)》请在三一文库上搜索。

1、第三十一套请补充 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) &n(2) i=1或 i=2(3) f*=i下

2、列给定程序中, 函数 fun 的功能是 : 求表达式s=aa aa- -aa-aa-a(此处 aaaa 表示 n 个 a,a 和 n 的值在 1 至 9 之间 ) 的值。例如 a=3,n=6, 则以上表达式为 : s=333333-33333-3333-333-33-3其值是 296298。 a 和 n 是函数 fun 的形参 , 表达式的值作为函数值传回main 函数。请改正程序中的错误, 使它能计算出正确的结果。注意 : 不要改动main 函数 , 不得增行或删行, 也不得更改程序的结构。试题程序 :#include #include long fun(int a,int n)int j;

3、/*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;return(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;

4、j+)(3)错误 :t=t%10;正确 :t=t/10;请编写函数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 fun(int n)void main()int n;double s;FILE *out;printf(nInput n: );scanf(%d,&n)

5、;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;第三十二套请补允函数fun, 该函数的功能是: 计算并输出下列多项式的值。例如 , 若主函数从键盘给n 输入 50 后 , 则输出为S=1.960784 。注意 : 部分源程序给出如下。请勿改动main 函数

6、和其他函数中的任何内容, 仅在函数fun 的横线上填若干表达式或语句。试题程序 :#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;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下列给定程序中, 函数 fun

7、的功能是 : 根据整型形参m,计算如下公式的值。例如 , 若 m的值为 5, 则应输出 :1.463611 。请改正程序中的错误, 使它能得出正确的结果。注意 : 不要改动main 函数 , 不得增行或删行, 也不得更改程序的结构。试题程序 :#include #include double fun (int m) 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);

8、【参考答案】(1) 错误 :for (i=2;im;i+)正确 :for(i=2;i=m;i+)(2) 错误 :y+=1/(i*i) ;正确 :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)v

9、oid main()FILE *wf;int 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;第三十三套程序的功能是计算。注意 : 部分源程序给出如下。请

10、勿改动main 函数和其他函数中的任何内容, 仅在横线上填入所编写的若干表达式或语句。试题程序 :#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)数列中, 第一项为3, 后一项都比前一项的值增5。下列给定程序中, 函数fun的功能是:计算前项

11、的累计和。在累加过程中把那些被4 除后余2 的当前累加值放入数组中, 符合此条件 的 累 加 值 的 个 数 作 为 函 数 值 返 回 主 函 数 里 。 如 当n的 值 为20 时 , 该 数 列 为3,8,13,18,23,28,93,98 。符合此条件的累加值应为42,126,366,570,1010。请改正程序中的错误, 使它能得出正确的结果。注意 : 不要改动main 函数 , 不得增行或删行, 也不得更改程序的结构。试题程序 :#include #define N 20int fun(int n, int *a)/*found*/ int I,j,k,sum; sum=0; fo

12、r(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 ,ai);printf(nn );【参考答案】(1)错误 :int i,j,k,sum;正确 :int i,j=0,k,sum;(2)错误 :if(sum%4=2)正确 :if(sum%4=

13、2)(3)错误 :return j;正确 :return j+;请编写一个函数fun, 它的功能是 : 计算并输出给定整数n 的所有因子 ( 不包括 1 与自身 )之和。规定n 的值不大于1000。例如 , 若主函数从键盘给n 输入的值为856, 则输出 m为注意 : 部分源程序给出如下。请勿改动main 函数和其他函数中的任何内容, 仅在函数sum=763。fun 的花括号中填入所编写的若干语句。试题程序 :#include int fun(int n)void main()int n,sum;FILE *out;printf(Input n:);scanf(%d, &n);sum=fun(

14、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);/*/【参考答案】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;第三十四套请补充 main 函数 , 该函数的功能是:

15、 求 1+2!+3!+ +N!的和。例如 ,1+2!+3!+ +5!+6!的和为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 (

16、3) s+t下列给定程序中, 函数 fun 的功能是 : 求 S 的值。设S=(22/(1*3)*(42/(3*5)*(62/(5*7)*(2k)2/(2k-1)*(2k+1)例如 , 当 k 为 10 时 , 函数的值应为1.533852 。请改正程序中的错误, 使它能得出正确的结果。注意 : 不要改动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

17、=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)(2) 错误 :return s正确 :double fun(int k)正确 :return s;请编写函数fun, 它的功能是 : 计算并输出n( 包括 n) 以内所有能被5 或 9 整除的自然数的倒数之和。例如 , 若主函数从键盘给n 输入 20 后 , 则输出为s= 0.583333 。注意 :n 的值要求不大于100。部分源程序给出如下。请勿改动ma

18、in 函数和其他函数中的任何内容, 仅在函数fun 的花括号中填入所编写的若干语句。试题程序 :#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)

19、sum+=1.0/i;return sum;第三十五套给定程序的功能是: 计算并输出下列级数的前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)

20、;【 3】 ;void main()printf(%fn ,fun(50);【参考答案】(1)=(2)n+ 或 n+=1 或 n=n+1(3)return s或 return(s)下列给定程序中, 函数fun的功能是: 给定n 个实数, 输出平均值, 并统计平均值以上( 含平均值)的实数个数。例如,n=8时,输入193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所 得 平 均 值 为195.838745,在平均值以上的实数个数应为5。请改正程序中的错误, 使它能得出正确的结果。注意 : 不要改动main 函数 , 不

21、得增行或删行, 也不得更改程序的结构。试题程序 :#include #include #include int fun(float x, int n)/*found*/int j, c=0; float xa=0.0;for (j=0; jn; j+)xa+=xj/n;printf(ave=%fn,xa);for (j=0; j=xa)c+;return c;void main() float x100= 193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763;system(CLS);printf(%dn,fun (x,8

22、);【参考答案】(1) 错误 : 缺正确 : 加 请编写函数fun, 它的功能是 : 求出 1 到 1000 之内能被7 或 11 整除但不能同时被7 和11 整除的所有整数, 并将它们放在a 所指的数组中 , 通过 n 返回这些数的个数。注意 : 部分源程序给出如下。请勿改动main 函数和其他函数中的任何内容, 仅在函数fun 的花括号中填入所编写的若干语句。试题程序 :#include #include #include void fun(int *a,int *n)void main( )FILE *wf;int aa1000, n, k;system(CLS);fun(aa,&n);

23、for(k=0;kn;k+)if(k+1)%10=0)printf(%5d ,aak);printf(n);/*一行写10 个数 */elseprintf(%5d ,aak);/*/wf=fopen(out.dat,w);for(k=0;kn;k+)if(k+1)%10=0)fprintf(wf,%5d ,aak);fprintf(wf,n);/*一行写10 个数 */elsefprintf(wf,%5d ,aak);fclose(wf);/*/【参考答案】void fun(int *a,int *n)int i,j=0;for(i=1;i=1000;i+)/* 求 1 到 1000 之内能被

24、7 或 11 整除但不能同时被7 和 11 整除的所有整数 , 并放入数组a 中*/if(i%7=0|i%11=0)&i%77!=0)aj+=i;*n=j; /*传回满足条件的数的个数*/第三十六套请在函数fun的横线上填写若干表达式, 使从键盘上输入一个整数n, 输出n 对应的斐波拉契数列。斐波拉契数列是一整数数列, 该数列自第三项开始, 每数等于前面两数之和, 即0,1,1,2,3,5,8,13,21,34,55,注意 : 部分源程序给出如下。请勿改动main 函数和其他函数中的任何内容, 仅在函数fun 的横线上填入所编写的若干表达式或语句。试题程序 :#include int fun(

25、int n);void main()int i,n=0;scanf(%d,&n);for(i=0;in;i+)printf(%d ,fun(i);int fun(int n)if(【 1】 )return 0;elseif(【 2】 )return 1;elsereturn【3】 ;【参考答案】(1) n=0 (2) n=1 (3) fun(n-1)+fun(n-2)下列给定程序中, 函数 fun 的功能是 : 根据整型形参n, 计算如下公式的值。A1=1,A2=1/(1+A1),A3=1/(1+A2),An=1/(1+A (n-1)例如 , 若 n=10, 则应输出0.617977 。请改正

26、程序中的错误, 使它能得出正确的结果。注意 : 不要改动main 函数 , 不得增行或删行, 也不得更改程序的结构。试题程序 :#include #include #include /*found*/int fun(int n) float A=1;int I; /*found*/for(I=2;In;I+)A=1.0/(1+A); return A;void main() int n;system(CLS);printf(nPlease enter n: );scanf(%d,&n);printf(A%d=%lfn,n,fun(n);【参考答案】(1) 错误 :int fun(int n)正

27、确 :float fun(int n)(2) 错误 :for(i=2;in;i+)正确 :for(i=2;i=n;i+)请编写函数fun, 其功能是 : 将两个两位数的正整数a、b 合并成一个整数放在c 中。合并的方式是 : 将 a 数的十位和个位依次放在c 数的千位和十位上,b 数的十位和个位依次放在c 数的个位和百位上。例如 , 当a=45,b=12,调用该函数后,c=4251。注意 : 部分源程序给出如下。请勿改动main函数和其他函数中的任何内容, 仅在函数fun的花括号中填入所编写的若干语句。试题程序 :#include #include void fun(int a ,int b,

28、long *c)void main()int a,b;long c;FILE *out;printf(Input a ,b: );scanf(%d%d,&a,&b);fun(a,b,&c);printf(The result is :%1dn,c);/*/out=fopen(out.dat,w);fun(44,55,&c);fprintf(out,%1dn,c);fclose(out);/*/【参考答案】void fun(int a,int b,long *c)*c=(a/10)*1000+(b%10)*100+(a%10)*10+b/10;第三十七套请补充函数fun, 该函数的功能是: 把从

29、键盘输入的3 个整数按从小到大输出。例如 , 输入 33 78 25,结果输出 25 33 78。注意 : 部分源程序给出如下。请勿改动main 函数和其他函数中的任何内容, 仅在函数fun 的横线上填入所编写的若干表达式或语句。试题程序 :#include #include #include void main()int x,y,z,t;system(CLS);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

30、】 )t=y;y=z;z=t;/*交换 z,y 的值 */printf(*the result*n);printf(from small to big:%d %d %dn,x,y,z);【参考答案】(1) xy(2) xz(3) yz下列给定程序中, 函数 fun 的功能是 : 找出 100 到 n( 不大于 1000) 之间三个位上的数字都相等的所有整数, 把这些整数放在s 所指的数组中, 个数作为函数值返回。请改正函数fun 中的错误 , 使它能得出正确的结果。注意 : 不要改动main 函数 , 不得增行或删行, 也不得更改程序的结构。试题程序 :#include #define N 100int fun(int *s, int n)int I,j,k,a,b,c;j=0;for(I=100; In; I+)/*found*/k=n;a=k%10;k/=10;/*found*/b=k/10;c=k/10;if(a=b & a=c)sj+=I;return j;void main()int aN, n,num=0, i;doprintf(nEnter n( 1000);num= fun(a,n);printf(nnThe result :n);for(i=0; inum; i+)printf(%5d,ai);printf(nn);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1