二级C语言上机题库2.pdf
《二级C语言上机题库2.pdf》由会员分享,可在线阅读,更多相关《二级C语言上机题库2.pdf(128页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、科益题库*说明:本题库是根据教育部考试中心制定修改计划进行修改后的计算机等级考试二级C语言机试题库。对于题库的解答来自考试中心的答题系统。第0 1套:给定程序中,函数f u n的功能是:将形参n所指变量中,个位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数:2 7 6 3 8 4 9 6,新的数:为7 3 9。请在程序的下划线处填入正确的内容并把下划线删除,便程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKLC中。不得增行或删行,也不得更改程序的结构!给定源程序:#include void fun(unsigned
2、 long*n)unsigned long x=0,i;int t;i=I;while(*n)/*found*/t=*n%_ 1 _;/*found*/if(t%2!=_2 _)x=x+t*i;i=i*10;*n=*n 710;)/*found*/*n=_ 3 _;)请编写一个函数f u n,它的功能是:将一个数字字符串转换为一个整数(不 得 调 用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串-12 3 4,则 函数把它转换为整数值-12 3 4。函数f u n中给出的语句仅供参考。注意:部分源程序存在文件P R O G 1.C文件中。请勿改动主函数m a i n和其它函数中的任
3、何内容,仅在函数fu n的花括号中填入你编写的若干语句。给定源程序:#i n cl u de#i n cl u de l o n g fu n (ch ar *p)/*以下代码仅供参考*/i n t i,l en,t;/*l en为串长,t为正负标识/l o n g x=0;l en=s t r l en(p);i f(p O =-*)t=-l;l en-;p+;el s e t=1;/*以下完成数字字符串转换为一个数字*/r et u r n x*t;)m ai n()/*主函数*/ch ar s 6 ;l o n g n;p r i n t f(E n t er a s t r i n g
4、:n);get s(s);n =fi i n(s);p r i n t f(%Id n,n);main()unsigned long n=-l;while(n9 9 9 9 9 9 9 9 lln0)printfCTIease input(0n100000000):);scanf(”kr,&n);fun(&n);printf(MnThe result is:%ldn*,n);NONO();)NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/F IL E *w f;i n t i ;)解题思路:第一处:t是通过取模的方式来得到*n的个位数字,所以应填:ch ar s
5、 2 0:l o n g n :fp =fo p en(c:t es t i n.dat,r);10。第二处:判断是否是奇数,所以应填:0o第三处:最后通形参n来返回新数X,所以应填:X。*w f=fo p en C ci W t es t W o u t.dat/w);fo r(i =0;i 10;i+)fs can f(i p.%s,s);n =fu n(s);fp r i n t f(w f,%l d n n);给定程序MODI LC中 函 数f u n的功能 是:计算n!0例 如,给n输入5,则输出12 0.000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动m a
6、 i n函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include f c l o s e(f p);f c l o s e(w f);解题思路:本题是将一个数字字符串转换为一个整数。double fun(int n)double result=1.0;/*found*率*/if n=0return 1.0;while(n 1&n 170)/*4:*found*/result*=n-return result;)main()int n;printfCInput N:);scanf(H%dn,&n);第0 2套:给定程序中,函 数f u n的功能是将形参给定的字符串、整数、浮点数写
7、到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK LC中。不得增行或删行,也不得更改程序的结构!给定源程序:/i n c l u d e printf(,nn%d!=%lfnn*,n,fun(n);iv o i d f u n(c h a r *s,i n t a,d o u b l e f)i/解题思路:i/*f o u n(j */第一处:条件语句招写格式错误,应改为:i f(n=O)。第二处:语句后缺少分号。_l_fp;c h a r c h:f p =f
8、o p e n(f i l e l.t xt,w1);c h =f g e t c(f p);f p r i n t f(f p,%s%d%f n ,s,a,f);f c l o s e(f p);f p =f o p e n(,f i l e l.t xt ,r );p r i n t f CA n T h e r e s u l t :n i i );v o i d f u n(c h a r s N ,c h a r *b)(i n t i,j.n=O;f o r(i=0;i N;i+)Z*请填写相应语句完成其功能*/p r i n t f(n n T h e s t r i n g o
9、 f c h a n g i n g i s :%s n ,i t e m );/*f o u n d*/w h i l e (!f e o f(_ 2 _)/*f o u n d*/p u t c h a r(_ 3 );c h =f g e t c(i p);p u t c h a r CX n*);f c l o s e(f p):)b n =V);m a i n()c h a r a 1 00tw M N =W,W,;W,W),CS V S,S/S M H;H;H V H);i n t i,j;p r i n t f(T h e m a t r i x:n );m a i n()c h
10、 a r a 1 0=H e l l o!;i n t b=1 2 3 4 5;d o u b l e c=9 8.7 6;f o r(i=0;i M;i+)f o r(j=0;j N;j+)p r i n t f(%3 c ,w i j );p r i n t f(n );f u n(a,b,c);f u n(w,a);*解题思路:本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。第一处:定义文本文件类型变量,所以应填:F I L E *o第二处:判断文件是否结束,所以应填:f pe第三处:显示读出的字符,所以应填:c h。*给定程序MOD I 1.C中函数f u n的
11、功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正函数f t i n中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:p r i n t f(T h e A s t r i n g:n ):p u t s(a);p r i n t f Cn i T);N O N O():)N O N O()/*请在此函数内打开文件,输入测试数据,调 用fun函数,输出数据,关闭文件。*/F I L E *r f,*wf;i n t i j,k :c h a r a(1 001,w(M N ,b;r f =f o p
12、e n(c:t e s t i n.d a t ,r);w f =f o p e n(c:t e s(o u t.d a t ,w );f o r(k =0 ;k 1 0:k-H-)f o r(i =0 ;i M;i+)f o r(j =0;jN:j+)f s c a n f(r f.%c ,&w i j );f s c a n f(r f,%c .&b);)#i n c l u d e v o i d f u n(c h a r *s)皿 i,j;f o r(i=0,j=0;s i !=0;i+)i f(s i =0,&s i =9)f u n(w,a);f p r i n t f(w f,
13、%s n ,a);)f c l o s e(r f);f c l o s e(w f);/*f o u n d*/s j =s i ;/*f o u n d*/s j =W;解题思路:本题是把二维数组中的字符数据按列存放到一个字符串中。1.计算存放到维数组中的位置。2,取出二维数组中的字符存放到一维数组(已计算出的位置)中。参考答案:m a i n()c h a r i t e m 8 0;p r i n t f(n E n t e r a s t r i n g :);g e t s(i t e m);#i n c l u d e#d e f i n e M 3#d e f i n e N
14、4p r i n t f(n n T h e s t r i n g i s :V%s n ,i t e m);f u n(i t e m);v o i d f u n(c h a r c h a r *b)(解题思路:i n t i,j,n=O;第一处:要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j来控制新字符串的位置,所以应改为:s|j+=s i L第二处:置新字符串的结束符,所以应改为:s j =O;*f o r(i=0;i v N:i+)/*请填写相应语句完成其功能*/f o r(j =0 ;j M;j+)b n =s O i ;n =i *M+j +1;请编写
15、函数f u n,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,二维数组中的数据为:W W W WSSSSH H H H则字符串中的内容应是:WSHWSHWSHo注意:部分源程序在文件PR O G 1 .C中。请勿改动主函数m a i n和其它函数中的任何内容,仅在函数f un的花括号中填入你编写的若干语句。给定源程序:#i n c l ud e#d e f i n e M 3#d e f i n e N 4)bn l=0 ;m ai n()c h ara1 0 0 tw M N =,W,W;W,W 4 SVS,S,S h,H,H.H;,H,);i n t
16、 i,j;p ri n tf(Th e m atri x:n );f o r(i=0;i vM;i+)f o r(j=0;j N;j+)p ri n tf(,%3c ,wi j);p ri n tf(n );)f un(w,a);p ri n tf(Th e A stri n g:n );p uts(a);p ri n tf CVVn。;N O N O();N O N O O/*请在此函数内打开文件,输入测试数据,调 用f u n函数,输出数据,关闭文件。*/FILE*rf,*wf;i n ti j,k;c h ar a 1 0 0,wMNJ,b;rf =f o p e n(c:te sti
17、n.d at,r,r);wf =f o p e n(c:te sto ut.d at,w);f o r(k =0 ;k 1 0 :k+)f o r(i =0 ;i M ;i+)f o r(j =0 ;j N ;j+)f sc an f(rf,%c ,&wi j);f sc an f(rf,r%c ,&b);f un(w,a);f p ri n tf(wf,%sn ,a);)f c l o se(rf):f c l o se(wf);)第03套:程序通过定义学生结构体变量,存储了学生的学号、姓 名 和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数f un的功能是重写形参f i l e
18、 n am e所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的B L A N K 1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#i n c l ud e#d e f i n e N 5(y p e d c f struc t stud e n t l o n g sn o;c h ar n am e 1 0;f l o at sc o re 3;STU;vo i d f un(c h ar f i l e n am e,S T U n)F
19、ILE*f p;/*f o un d*/f p =f o p e n(_1 ,rb+);/*f o un d*/f se e k(_2-l L*si z e o f(STU),SEEK_END);/*f o un d */f wri te(&n,si z e o f(STU),1,_ 3_);f c l o se(f p);m ai n()S T U tN=1 0 0 0 1,MaCh ao ,91,92,77,1 0 0 0 2;Cao Kai,75,60,88),1 0 0 0 3,Li Si ,85,70,78,1 0 0 0 4,Fan g Fan g ,90,82.87),1 0 0
20、 0 5JZh an g San”,95,80,88);S T U n=1 0 0 0 6,Zh ao Si ,55,70.68),ssN;i n t i j;FILE*f p;f p =f o p e n C si ud e n t.d at,wb);f wri(e(t,si z e o f(STU),N,f p);f c l o se(f p);f p =f o p e n(stud e n t.d at,rb);f re ad(ss,si z e o f(STU),N,f p);f c l o se(f p);p ri n tf CAn Th e o ri g i n al d ata:
21、n n );f o r(j=0;j N;j+)p ri n tf(n No:%l d Nam e:%-8s Sc o re s:,ssj.sn o,ssf j j.n an i e);f o r(i=0;i 3;i+)p ri n tf(%6.2 f ,ssj.sc o re i);p ri n tf CAn );)f un(stud e n t.d at,n):p ri n tf(,rn Th e d ata af te r m o d i f i n g :n n );f p =f o p e n(stud e n(.d at,rb):f re ad(ss,si z e o f(STU),
22、N,i p);f c l o se(f p);f o r(j=0;j N;j+)p ri n tf(n No:%l d Nam e:%-8s Sc o re s:,ssj.sn o,ssj.n am e);f o r(i=0;i 3;i+)p ri n tf(%6.2 f ,ssj.sc o re i j);p ri n tf(n );解题思路:本题是考察如何从文件中读出数据,再把结构中的数据写入文件中。第一处:从指定的文件中读出数据,所以应填:f i l e n am e。第二处:读取文件f p的最后一条记录,所以应填:f p。第三处:再把读出的记录,写入文件f p指定的位置上,所以应填:f
23、 p。*给定程序M O D .C中的函数Cre ai l i n k的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。请改正函数Cre atl i n k中指定部位的错误,使它能得出正确的结果。注意:不要改动m a i n函数,不得增行或删行,也不得更改程序的结构!给定源程序:#i n c l ud e#i n c l ud e ty p e d e f struc t aa i n t d ata;struc t aa*n e x t;N O D E;N O D E *Cre atl i n k(i n t n.i n t m)N O D E *h=NU LL,*p,*s;i
24、 n t i;/*f o un d*/p=(N O D E )m al l o c(si z e o f(NODE);h=p;p-n e x t=NU LL;f d r(i=l;i d ata=ran d()%m:s-n e x(=p-n e x t;p-n e x t=s;p=p-n e x t;/*f o un d*/re turn p;o utl i n k(NODE*h)N O D E *p;p=h-n e x t;p ri n tf(n n THE LIST:n n H E A D );wh i l e(p)p ri n tf(-%d ,p-d ata);p=p-n e x t;)p
25、 ri n tf CAn );)m ai n()N O D E *h e ad;h c ad=Cre atl i n k(8,2 2);o utl i n k(h e ad);)解题思路:第 一 处:指 向 刚 分 配 的 结 构 指 针,所 以 应 改 为:p=(N O D E*)m al l o c(si z e o f(NODE);第二处:在动态分配内存的下一行语句是,使用临时结构指针变量h保存p指针的初始位置,最后返回不能使用p,是因为p的位置已经发生了变化,所以应改为返回h.*请编写函数fu n,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 上机 题库
限制150内