全国二级c语言100套上机真题.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《全国二级c语言100套上机真题.docx》由会员分享,可在线阅读,更多相关《全国二级c语言100套上机真题.docx(278页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、001请补充函数fun,函数fun的功能是求n的阶乘。注意:部分源程序给出如卜。请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表 达式或语句。试题程序:#include long fun(int n)if( 1)retum(n*fun( 2);return 3;void main()printf( 10!=%ldnfun(l 0);1 nl 或 ll和n=l这两种情况的处理方法不同,需 要分开考虑。填空2:阶乘的算法是,当nl时,n! =n*(n-l)!,即:fun(n)=n*fun(n-l)。填空 3: n=l是递归的终止条件,返回值为E下列给定程序中,函
2、数fun的功能是:分别统计字符串中大写字母和小写字母的个数。例如, 给字符串 s 输入:AaaaBBb 123CCccccd,则应输出结果:upper=5, lower=9 请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include/*found*/ void fun(char *s,int a,ini b)while(*s)/* 亭 found */if(*s=A, & *s=a & *sv=z)b+;s+;)main()(chars100;int upper=0,lower=0;printf(np
3、iease a string :H);gets(s);fun(s,&upper,&lower);printf(n upper=%d lower=%dnH,upper,lower);(1)错误:void fun( char *s, int a, int b)正确:void fun(char *s, int *a, int *b)(2)错误:a+;正确:(*a)+;(3)错误:b+;正确:(*b)+;【解析】(1)根据题中程序可以看出,函数fun传递的是地址,那么在函数中就应该出现指 针,所以改为void fun (char *s ,int *a, int *b)。(2)和(3)很明显,这里是要累
4、加数值,因 为a、b是指针变量,所以是错误的。请编写一个函数void fun(charpp),统计在tt字符串中”a“到“ z26个字母各自出现的次数,并依次放在pp所指数组中。例如:当输入字符串abcdefghabcdeabc后,程序的输出结果应该是:333221 11000000 0000000000000注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干 语句。试题程序:#include #include #include void fun(char pp) void main()(FILE *wf;char aa1000;in
5、t bb26, k;system(MCLS);printf(nPlease enter a char string : ); scanf(n%sn,aa);fun(aa,bb);for (k=0 ;k26 ; k+)printf(H%d M,bbk);printf(Mn );wf=fopen(out.dat,wM);fun (nabcdefgabcdeabcM,bb);for (k=0 ;k26 ; k+)fprinlf(wf,d ”,bbk);fclose(wf); void fun(char*tt,int pp)(int i;for(i=0;i=,a,&*tt=,z,)pp*tt-a+;/
6、*将tt字符串中H到N26个字母各自出现的次数,依次放在pp数组中,任一个小写字母减去宜后所得结果正好是它对应的下标*/【解析】第1个循环的作用是初始化数组pp,未经赋值变量的量为一个不确定数字。由于 它要将a到Z 26个字母的个数依次放到数组pp中。即丁的个数存于pp0中,b,的个数存 于ppl中,的个数存于pp中,依次类推。而葭-0,的值正好为0,的值为1,ca,的值为2,,依此类推。即任一个小写字母减去T后所得结果正好是它对应的下标, 所以就有了 pp*tta+。但*tt必须是小写字母,即if()不应省略。002请补充函数fun,它的功能是:计算并输出n(包括n)以内所有能被3或7整除的
7、自然数的倒 数之和。例如,在主函数中从键盘给n输入30后,输出为:s= 1.226323。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表 达式或语句。试题程序:#includedouble fun(int n)int i;double sum=0.0;for (i= 1 1 ; i+) if(i%3=0_ 2 _i%7=0) sum+=_ 3 _/i;return sum;)main()(int n;double s;printf(HnInput n: ); scanf(d”,&n);s=fun(n);printf(nns=%fn
8、u, s);1 i=n 2 II 【3】1.0 或(double) 1【解析】填空1:本题要求找出n(包括n)以内满足条件的自然数,所以,i的取值范围是从 1到n,填空2: i能被3整除,也就是指,i除以3的余数为0,题中的条件是能被3或7 整除,所以使用逻辑或运算符11。填空3:需要注意,如果71运算符两边都是整型数,则结 果也是整型数。因为i为整型数,如果将i的倒数写为1/i,则结果为0,所以在求倒数时, 要使用1。,而不是1,或者将变量i强制类型转化为double型。下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值。t=l-l/(2x2)-l/(3x3)-.-
9、l/(mxm)请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include double fun(int m) double y=1.0;int I;/*found*/ for(I=2;Im;I+)/*found*/y-=l/(I*I);retum(y);void main() int n=5;system(CLS);printf(nThe result is %lfn, fun(n);(1)错误:for(I=2; Im; I+) 正确:for(I=2; I=m; I+)(2
10、)错误:y-=l/(l*I);正确:y-=1.0/(I*I);【解析】该题是一道简单的计算题,循环条件for(I=2;km;I+)中忽略了 i=m时的一种情况, 因为题目中I是从2到m的一个计算公式。y-=l/(l*);的错误很明显,是语法错误,由定义 double y= 1.0 可知,应该是 y-=L0/(I*I);,而非 y-=l/(I*I);。请编写一个函数void fun(int m, int k, int xx),该函数的功能是:将大于整数m且紧靠m的 k个素数存入所指的数组中。例如,若输入17, 5,则应输出19, 23, 29, 31, 37。注意:部分源程序给出如下。请勿改动m
11、ain函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干 语句。试题程序:#include #include #include void fun(int m, int k, int xx) void main()(int m,n,zz1000;system(,CLS,);printf(nPlease enter two integers:);scanf(,%d%dM,&m,&n);fun(m, n, zz);for(m=0;mn;m+)printf(M%d M,zzm);printf(Hn ); void fun(int m, int k, int xx)(int i,j,n
12、;for(i=m+1 ,n=0;nk;i+)/*找大于 m 的素数,循环 k 次,即找出紧靠m的k个素数*/for(j=2;j=i)/*如果是素数,放入数组xx中*/ xxn+=i;【解析】本题只要掌握了判断素数的算法就不难完成了,其实程序缺少部分也正是这部分。003给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一 的圆面积(注:圆面积公式为:S=nr2,在程序中定义的变量名要与公式的变量相同)。例如,输入圆的半径值:19.527,输出为:s=598.949991。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仪在横线上填入所编写的若干表
13、达式或语句。 试题程序:#include double fun(double r)(return 3.14159*_ 1 _/2.0;Imain()(double x;printf(Enter x:);scanf(%ir,_ 2 J;printf(S=%lfn,fun(_ 3 _);1 r*r 2 &x 3 x【解析】填空1:计算圆的面积,面积公式:S=FIr*r。填空2: scanf一般形式为scanf (格 式控制,地址表列),因此填入&x。填空3:送入函数的参数是圆的半径X。下列给定程序中,fun函数的功能是:根据形参m,计算下列公式的值。t=l + l/2+l/3+l/4+.+ l/m
14、例如,若输入5,则应输出2.283333。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include double fun(int m)double t=1.0;int I;for(I=2;I=m;I+)/* *found */ t+=l.O/k;/* * *fou nd */ return I;void main()int m;system(nCLSu);printf(HnPlease enter 1 integer number:);scanf(”d”,&m);printf(M
15、nThe result is %lfnu, fun(m);(1)错误:t+=LO/k;正确:t+=1.0/I;(2)错误:return I; 正确:return t;【解析】该题目考查分母成等差数列递增的一个数学公式,我们先看循环条件 for(I=2;I=m;I+), i从2开始递增到m,所以t的值应该是由1.0/1的值逐步循环叠加后的 结果,而不是t+=1.0/k;。return I;考查对程序的解读能力,当循环结束后(由输入m的值决 定),函数返回当前t的值。编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参 传入。S=l+l/(l+2)+l/(l+2+3
16、)+.+ l/(l+2+3+.+n)例如:若n的值为11时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干 语句。试题程序:#include #include #include #include float fun(int n) void main()(int n;float s;system(“CLS”);printf(MnPlease enter N: );scanf(H%dn,&n);s=fun(n);printf(The result is:%fn ,s);float fun(int n)(in
17、t i,sl=0;float s=0.0;fbr(i=l;i=n;i+)sl=sl+i;/*求每一一项的分母*/ s=s+1.0/sl;/*求多项式的值*/return s;【解析】本题中si用来表示式中每一项的分母,而每一项的分母都是由前一项分母加项数。注意:由于si定义成一个整型,所以在s=s+1.0/sl中不能把1.0写成1。004给定程序的功能是:计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值 通过形参传入。例如,若q的值为50.0,则函数值为50.416687。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干
18、表 达式或语句。试题程序:#includedouble fun(double q)(int n;double s;n=2;s=2.0;while (s 1 q)s = s + (double)(n+ l)/n;2;)printf(,n=%dn,n);【3】;main() printf(M%fnn,fun(50);1 = 2 n+或 n+=l 或 n=n+1 3 return s 或 return (s)【解析】填空1:根据题意,相加直到Sn大于q为止,因此为=。填空2:计算前N项的 和,增加n的值。填空3:计算完Sn的和后,返回函数的值,以便于输出。下列给定的程序中,函数fun的功能是:计算并
19、输出k以内最大的10个能被13或17整除 的自然数之和。K的值由主函数传入,若k的值为500,则函数的值为4622。请改正程序中的错误,使它能得出正确的结果。也不得更改程序的结构。注意:不要改动main函数,不得增行或删行, 试题程序:#include #include #include int fun(int k) int m=0,mc=0, j;while(k=2)&(mcn。P=m!/(n!(mn)!),例如:m=12, n=8 时,运行结果为 495.000000。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干 语句。试题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 二级 语言 100 上机
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内