二级C语言上机100题带解析.pdf





《二级C语言上机100题带解析.pdf》由会员分享,可在线阅读,更多相关《二级C语言上机100题带解析.pdf(387页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一套给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为在程序中定义的变量名要与公式的变量相同)。例如,输入圆的半径值:1 9.5 2 7,输出为:s=5 98.94 99910注意:部分源程序给出如下。请勿改动ma i n函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:tti nc lud e d oub le f un(d oub le r)(re turn 3.1 4 1 5 9*1 /2.0;voi d ma i n()d oub le x;pri ntf(Ente r x:);sc a nf 2 )
2、;pri ntf(s=%lf n”,f un(3 );)【参考答案】(Dr*r(2)&x(3)x【考点分析】本题考查:圆面积计算公式*r*r;sc a nf ()函数的形式,其一般形式为 sc a nf (格式控制字符串”,地址表列);,注意地址是由地址运算符后跟变量名组成的;pri ntf()函数的形式,其一般形式为 pri ntf (格式控制字符串,输出表列);函数实参调用,函数作为另一个函数调用的实际参数出现。【解题思路】填 空 1:计算圆的面积,公式为:*r。填空2:sc a nf ()函数一般形式为sc a nf (格式控制,地址表列),因此填入&x。填空3:函数的实际参数是圆的半径
3、xo下列给定程序中,函 数 f u n 的功能是:计算S=f (-n)+f (-n+1)+-+f (0)+f (1)+f (2)+f(n)的值。例如,当 n 为 5时,函数值应为1 0.4 07 1 4 3.f(x)函数定义如下:f(x)=请改正程序中的错误,使它能得出正确的结果。注意:不要改动ma i n函数,不得增行或删行,也不得更改程序的结构。试题程序:#i nc lud e#i nc lud e#i nc lud e#i nc lud e /*f ound*/f (d oub le x)i f(x=0.0 1|x=2.0)re turn 0.0;e lse i f (x0.0)re t
4、urn(x-1)/(x-2);e lsere turn(x+l)/(x-2);d oub le f un(i nt n)(i nt i;d oub le s=0.0,y;f or(i=-n;i=n;i+)y=f(1.0*i);s+=y;/*f ound*/re turn s)voi d ma i n()syste m(CL S);pri ntf(%fn,f un(5);)【参考答案】(1)错误:f (d oub le x)正确:d oub le f (d oub le x)(2)错误:re turn s 正确:re turn s;【考点分析】本题考查:函数的定义,其一般形式为类型标识符函数名(
5、形式参数表列),其中类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。【解题思路】该程序的流程是,f un()程序对f (n)项循环累加,并且采用条件选择语句计算函数f (x)的值。本题的错误在于未定义函数f (d oub le x)的返回值类型。C 语言规定,在未显式声明的情况下,函数返回值默认为i nt型。编写函数f un,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n 通过形参传入。S=l+l/(l+2)+1/(1+2+3)+1/(1+2+3+n)例如,若n 的值为1 1 时,函数的值为1.83 3 3 3 3。注意:部分源程序给出如下。请勿改动ma i n
6、函数和其他函数中的任何内容,仅在函数f un的花括号中填入所编写的若干语句。试题程序:#i nc lud e#i nc lud e#i nc lud e i nc lud e f loa t f un(i nt n)voi d ma i n()(F I L E*wf;i nt n;f loa t s;syste m(CL S);pri ntf (X nPle a se e nte r N:);sc a nf(%d,&n);s=f un(n);pri ntf(T h e r e s u l t i s:%f n ,s);w f=f o p e n(,o u t.d a t ,w);f p r i
7、 n t f (w f,f ,f u n(l l);f c l o s e(w f);)【参考答案】f l o a t f u n (i n t n)(i n t i,s l=0;/*定义整型变量s i,表示分母*/f l o a t s=0.0;/*定义单精度变量s,表示每一项*/f o r(i=l;i=n;i+)s l=s l+i;/*求每一项的分母*/s=s+l.O/s l;/*求多项式的值*/r e t u r n s;【考点分析】本题考查:计算给定表达式的值,根据题意判断表达式为1 到 n累加倒数之和。变量数据类型及强制转换操作。f o r 循环语句,一般情况需要确定循环变量的取值范
8、围。使用r e t u r n 语句完成函数值的返回。【解题思路】本题可以通过f o r 循环语句来实现第1 项到第n 项的变化,然后计算各项的累加和。方法是先根据题目要求定义变量(注意该变量的数据类型),然后对其进行初始化操作,因为该变量用作累加器,所以初始值应为0(或0.0,根据变量数据类型来确定),再通过f o r 循环语句来完成累加过程。本 题 中 s i 用来表示式中每一项的分母,它可以由前一项的分母加项数得到。注意:由 于 s i定义成一个整型,所以在s=s+l.0/s l 中不能把1.0 写 成 1。【解题宝典】此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得出通项,
9、然后再完成程序语句。第二套请补充m a i n 函数,该函数的功能是:计算两个自然数n和 m(m 1 0 0 0 0)之间所有数的和(n 和 m从键盘输入)。例如,当 n=l,m=1 0 0 时,s u m=5 0 5 0;当 n=1 0 0,m=1 0 0 0 时,s u m=4 95 5 5 0o注意:部分源程序给出如下。请勿改动m a i n 函数和其他函数中的任何内容,仅在m a i n 函数的横线上填入所编写的若干表达式或语句。试题程序:#i n c l u d e#i n c l u d e#i n c l u d e v o i d m a i n()i n t n,m;l o
10、n g s u m;1 ;s y s t e m(C L S );p r i n t f (,z n l n p u t n,m n );s c a n f (/z%d,%d ,&n,&m);w h i l e(n=m)(2 ;n+;)p r i n t f (,zs u m=%3 n ,s u m);)【参考答案】(1)s u m=O (2)s u m+=n (3)I d【考点分析】本题考查:变量初始化,需要注意该变量是累加器还是累乘器:p r i n t f ()函数,其一般形式为 p r i n t f (格式控制符”,输出表列),其中,格式控制符用于指定输出格式,可由格式字符串和非格式
11、字符串两种组成,格式字符串是以开头的字符串,在外后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等,如%I d”表示按十进制长整型输出,非格式字符串在输出时原样照印,在显示中起提示作用。【解题思路】填 空 1:变 量 sum 进行了类型声明,但没有进行初始化,而后面的程序用sum 来存放最后的结果,所以要在使用前将sum初始化为0。填空2:通过wh i le循环将自然数n 和 m之间的数进行累加,结果存于sum 中。填 空 3:由于sum 为长整型,所以标准输出函数p ri n tf ()中的格式控制符为%I d 。下列给定程序中,f un 函数的功能是:根据形参m,计算下列公
12、式的值:t=l+l/2+l/3+l/4+l/m例如,若输入5,则应输出2.2 83 3 3 3,请改正程序中的错误,使它能计算出正确的结果。注意:不要改动m a i n 函数,不得增行或删行,也不得更改程序的结构。试题程序:i n c lud e tti n c lud e tti n c lud e d o ub le f un(i n t m)(d o ub le t=l.0;i n t I;f o r(1=2;K=m;I+)/*f o un d*/t+=l.0/k;/*f o un d*/return I;vo i d m a i n()i n t m;sy stem(C L S );p
13、 ri n tf(n P lea se en ter 1 i n teg er n um b er:);sc a n f(%d ,&m);p ri n tf (,zn T h e result i s%lf n”,f un(m);【参考答案】(1)错误:t+=l.0/k;正确:t+=1.0/I;(2)错误:return I;正确:return t;【考点分析】本题考查:f o r循环语句的循环条件,这类题目的一般解法是根据题意确定循环变量的取值范围;函数返回值,其一般形式为 return表达式二 该语句的功能是计算表达式的值,并返回给主调函数。【解题思路】该 题 目 考 查 分 母 成 等 差
14、 数 列 递 增 的 一 个 数 学 公 式,我 们 先 看 循 环 条 件f o r(1=2;1 c m;I+),i从2开始递增到m,所以t的值应该是由1.0/i的值逐步循环叠加后的结果,而不是t+=L 0/k;。(2)return I;考查对程序的解读能力,当循环结束后(由输入m的值决定),函数返回当前t的值。请编写一个函数vo i d f un (c h a r*tt,i n t p p口),统计在tt字符串中 a 到 z 2 6个字母各自出现的次数,并依次放在p p所指数组中。例如,当输入字符串abcdefghabcdeabc后,程序的输出结果应该是:3 3 3 2 2 1 1 1 0
15、000000000000000000注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:ttinclude include ttinclude void fun(char*tt,int p p )void m a i n()F I L E *wf;char aa1 0 0 0;int bb2 6,k;system(,C L S,/);p rintf(,znPlease enter a char string:);scanf(%s,aa);fun(aa,bb);for(k=0 ;k 2 6;k+)p rintf(z,%d
16、z,,bb k);p rintf(,zn);wf=fop en(,zout.dat,w);fun(/abcdefgabcdeabc,,,b b);for(k=0 ;k 2 6;k+)fp rintf(wf,z%d”,b b k );fclose(wf);)【参考答案】void fun(char*tt,int p p)(int i;for(i=0;i 2 6;i+)Pp i=0;while(*tt)(switch(*tt)(case 匕:p p 0+;break;case 廿 :p p l+;break;case:p p 2+;break;case dp p 3+;break;case e,p
17、p 4+;break;case fp p 5+;break;case gp p 6+;break;case hp p 7+;break;case ip p 8+;break;case jp p 9+;break;case kp p 1 0+;break;case 1 p p l1+;break;case mp p 1 2+;break;case np p 1 2+;break;case op p 1 4+;break;case p,p p 1 5+;break;case q p p 1 6+;break;case rp p 1 7+;break;case sp p 1 8+;break;cas
18、e tp p 1 9+;break;case up p 2 0+;break;case v,p p 2 1+;break;case wp p 2 2+;break;case xp p 2 3+;break;case yp p 2 4+;break;case zp p 2 5+;break;tt+;)【考点分析】本题考查:统计小写字母在指定字符串中出现次数。for循环语句,需要注意循环变量的取值范围。if条件语句要注意条件表达式的判定。【解题思路】第 1个循环的作用是初始化数组PP,未经赋值变量的量为一个不确定数字。由于它要将a到z 2 6个字母的个数依次放到数组p p 中,即a的个数存于p p
19、 0 中,b的个数存于p p l中,c的个数存于p p 2 中,依此类推,而 a-a的值正好为0,b-a的值为a 的值为2,依此类推。任一个小写字母减去a后所得结果正好是它对应的下标,所以就有了 p p*tt-a+,但*tt必须是小写字母,即 if()不应省略。第三套给定程序的功能是:判断字符ch是否与串str中的某个字符相同,若相同什么也不做,若不同则插在串的最后。注意:部分源程序给出如下。请勿改动函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:ttinclude ttinclude void fun(char*str,char ch)(while(*s
20、tr&*str!=ch)str+;if(*str 1 ch)str0=ch;2 =0;)void main()char s81,c;system(Z,C L S,/);p rintf(nPlease enter a string:);gets(s);p rintf(z/n Please enter the character to search:);c=getchar();fun(3 );p rintf(wnThe result is%sn”,s);)【参考答案】!=(2)str 或*(str+l)(3)s,c【考点分析】本题考查:if语句,一般掌握条件表达式的判定。函数的调用,其一般形式为函
21、数名(实际参数表)”。【解题思路】填 空 1:根据题意 若相同什么也不做”,则 应 填 入!=。填空2:若不同则插在串的最后,那么0就在字符串的倒数第二了。填 空 3:函数传递的参数为输入的两个字符串,则填入s,c下列给定程序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s 输入:AaaaBBbl 2 3 CCccccd,则应输出结果:u p p er=5,l o w er=9。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动m ai n 函数,不得增行或删行,也不得更改程序的结构。试题程序:#i n cl u de#i n cl u de/*f o
22、 u r i d*/v o i d fu n (char *s,i n t a,i n t b)|w hi l e(*s)(/*f o u r i d*/i f(*s =A&*s =a&*s =z)b+;s+;)m ai n()(char s 1 0 0;i n t u p p er=0,l o w er=0;p r i n t f(,zn p l eas e a s t r i n g:);get s(s);fu n(s,&u p p er,fel o w er);p r i n t f(,zn u p p er=%d l o w er=%dn,/,u p p er,l o w er);)【
23、参考答案】(1)错误:v o i d fu n (char *s,i n t a,i n t b)正 确:v o i d fu n (char *s,i n t *a,i n t *b)错 误:a+;正确:(*a)+;错误:b+;正确:(*b)+;【考点分析】本题考查:函数的参数传递和指针变量,理解指针变量作为函数的参数,函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。【解 题 思 路】(1)根据题中程序可以看出,函 数fu n传递的是地址,那么,在函数中就应该出现指针,所以改为 v o i d fu n (char *s ,i n
24、 t i n t *b)。(2)和(3)很明显,这里是要累加数值,因 为a、b是指针变量,所以是错误的。请 编 写 函 数fu n,它 的 功 能 是:求 出s s所指字符串中指定字符的个数,并返回此值。例 如,若 输 入 字 符 串1 2 3 4 1 2 1 3 2,输 入 字 符1,则 输 出3。注意:部分源程序给出如下。请 勿 改 动m ai n函数和其他函数中的任何内容,仅 在 函 数fu n的花括号中填入所编写的若干语句。试 题 程 序:t t i n cl u de#i n cl u de#i n cl u de#defi n e M 8 1i n t fu n(char *s s
25、,char c)()v o i d m ai n()(F I L E *w f;char aM,ch;s y s t em(CL S);p r i n t f(,zn Pl eas e en t er a s t r i n g:);get s(a);p r i n t f(,zn Pl eas e en t er a char:);ch=get char ();p r i n t f(,zn The n u m ber o f t he char i s:%dn,z,fu n (a,ch);w f=fo p en(,zo u t.dat,w );fp r i n t f(w f,d,fu n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 上机 100 解析

限制150内