2020年度全国计算机等级考试C语言上机考试题库4160套.pdf
《2020年度全国计算机等级考试C语言上机考试题库4160套.pdf》由会员分享,可在线阅读,更多相关《2020年度全国计算机等级考试C语言上机考试题库4160套.pdf(143页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、全国计算机等级考试C语言上机考试题库4160 套资料仅供参考全国计算机等级考试C语言上机考试题库学生练习用第41套至第60套第四十一套1、程序填空下列给定程序中,函数f u n的功能是:将 形 参s所指字符串中的所有字母字符顺序前移,其它字符顺序后移,处理后将新字符串的首地址作为函数值返回。例如,若s所指字符串为:a s d l 2 3 f g h 5 4 3 d f”,处理后新字符串为:a s d f g h d f 1 2 3 5 4 3”。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序在文件B L A N K 1.C中。不得增行或删行,也不得更改程
2、序的结构!t t i n c l u d et t i n c l u d e#i n c l u d ec h a r *f u n(c h a r *s)i n t i,j,k,n;c h a r *p,*t;n=s t r l e n(s)+l;t=(c h a r*)m a l l o c(n*s i ze o f(c h a r);p=(c h a r*)m a l l o c(n*s i ze o f(c h a r);j=0;k=0;f o r(i=0;i=a)&(si=A)&(si=Z)/*found*/j+;else pk=si;k+;)/*found*/for(i=0;i_
3、 2;i+)tj+i=pi;/*found*/tj+k=_ 3 _;return t;main()char s 80;printf(Please input:);scanf(%s,s);printf(nThe result is:%s n”,fun(s);资料仅供参考【参考答案】s i (2)k (3)0 或 0【考点分析】本题考查:数组元素赋值操作;f o r 循环语句中循环变量的取值范围;字符串结束标识 0 。【解题思路】填空1:将字符串s中所有字母元素赋给数组t o填空2:字符串中所有非字母元素放到字母元素后面,因此取值范围是。k。填空3:最后给字符串加入结束标识 0 。2、程序修改下列
4、给定程序中函数f u n 的功能是:将 s 所指字符串中最后一次出现的与t l 所指字符串相同的子串替换成t 2 所指字符串,所形成的新串放在w 所指的数组中。要求t l 和 t 2 所指字符串的长度相同。例如,当 s 所指字符串中的内容为:a b c d a b f a b c”,t l 所指串中的内容为 a b”,t 2 所指子串中的内容为 9 9 时,结果在w 所指的数组中的内容应为 a b c d a b f 9 9 c”。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M 0 D I 1.C 中,不得增行或删行,也不得更改的程序的结构!#i n c l u d e#i
5、 n c l u d e v o i d f u n (c h a r *s,c h a r *t l,c h a r *t 2 ,c h a r *w)(c h a r *p ,*r,*a;s t r c p y(w,s );/*f o i i n d*/资料仅供参考wh i l e (w)p =w;r =t l;wh i l e (*r )/*f o u r i d*/I F (*r =*p )r+;p+;e l s e b r e a k;i f (*r =0 )a =w;w+;)r =t 2;wh i l e (*r )*a =*r;a+;r+;m a i n()(c h a r s
6、1 0 0,t l 1 0 0,t 2 1 0 0,w1 0 0;p r i n t f(n P l e a s e e n t e r s t r i n g S:);s c a n f(%s”,s);p r i n t f(n P l e a s e e n t e r s u b s t r i n g t l:);s c a n f (,z%s,z,t l);资料仅供参考p r i n t f(Xn P l e a s e e n t e r s u b s t r i n gs c a n f (%s”,t 2);i f (s t r l e n(t l)=s t r l e n(t
7、 2)f u n(s,t l,t 2,w);p r i n t f (n Th e r e s u l t i s :%s n”,w);)e l s e p r i n t f(n E r r o r :s t r l e n(t l)!=s t r l e n (t 2)n,z);【参考答案】(l)wh i l e(*w)(2)i f(*r=*p)【考点分析】本题考查:wh i l e 循环语句,C 语言中的关键字。【解题思路】(1)这藕判断的是值的真假,而不是地址,因此改为wh i l e (*w)o(2)C 语言中关键字区分大小写,只需运行程序,就能够根据错误提示找到。3、程序设计编写函
8、数f u n,其功能是:将 s 所指字符串中AS CH值为奇数的字符删除,剩余字符形成的新串放在t 所指数组中。例如,若 s 所指字符串中的内容为:ABCDEFG1 2 3 4 5”,其中字符A 的AS CII码值为奇数,字符1 的AS CII码值也为奇数,都应当删除,其它依此类推。最后t所指的数组中的内容应是:BDF2 4 。注意:部分源程序在文件P R 0 G1.C中。请勿改动主函数m ain 和其它函数中的任何内容,仅在函数f u n 的花括号中填入你编写的若干语句。资料仅供参考ttinclude ttinclude void fun(char*s,char t )()main()(ch
9、ar s100,t100;void NONO();printf(XnPlease enter string S:);scanf s);fun(s,t);printf(nThe result is:%s n”,t);NONO();资料仅供参考void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/char s100,t 100;FILE*rf,*wf;int i;rf=fopen(in.dat,r);wf=fopen(outdat,w);for(i=0;i 10;i+)fscanf(rf,%s,s);fun(s,t);fprintf(wf,%s n,t);)fc
10、lose(rf);fclose(wf);)include ttinclude void fun(char*s,char t )资料仅供参考m ain()(c har s 1 0 0 ,t 1 0 0 ;v o id N O N O ();p r in t f(X n P l e as e e n t e r s t r in g S:);s c an f(%s ,s);f u n(s,t);p r in t f(n T he r e s u l t is:%s n,t);N O N O ();v o id N O N O ()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
11、c har s 1 0 0 ,t 1 0 0 ;FIL E*r f,*w f ;in t i;资料仅供参考rf=fopen(in.dat,r);wf=fopen(outdat,w);for(i=0;i 10;i+)fscanf(rf,%s,s);fun(s,t);fprintf(wf,%s n,t);)fclose(rf);fclose(wf);)【参考答案】v o id f u n (c har *s,c har t )(in t i,j=0,n;n=s t r l e n(s);f o r(i=0;i n;i+)/*找出AS CII码值为偶数的字符依次存入数组中*/if(s i%2=0)(
12、t j=s i;j+;资料仅供参考t j=0*;)【考点分析】本题考查:A S C H码值为奇数或偶数的判定方法,同时掌握删除字符的思想,即重新保留非删除字符。【解题思路】要删除AS CH码值为奇数的字符,也就是要保留AS CII码值为偶数的字符,由于最终是要求出剩余字符形成的新串,因此本题的算法是对原字符串从头到尾扫描,并找出AS CH码值为偶数的字符依次存入数组中。第四十二套1、程序填空给定程序中,函 数f u n的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数at o i和at o f将字符串转换成相应的整数、浮点数,然后将其显示
13、在屏幕上。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:部分源程序在文件BL AN KL C中。请勿改动m ain函数和其它函数中的任何内容,仅 在m ain函数的横线上填入所编写的若干表示式或语句。t t in c l u d e in c l u d e v o id f u n (c har *s,in t a,d o u bl e f)/*f o u n d*/1 f p;c har s t r 1 0 0 ,s t r l 1 0 0 ,s t r 2 1 0 0 ;in t al;d o u bl e f l;资料仅供参考fp=fopen(filel.
14、txt,w);fprintf(fp,%s%d%f nz,,s,a,f);/*found*/2;fp=fopen(filel,txt,r);/*found*/fscanf(_3,,%s%s%s,z,str,strl,str2);fclose(fp);al=atoi(strl);fl=atof(str2);printf(z,nThe result:n n%s%d%f nz,,str,al,fl);main()char a10=Hello!”;int b=12345;double c=98.76;fun(a,b,c);)【参考答案】(1)FIL E*(2)f c l o s e(f p)(3)f p
15、【解题思路】填空1:从使用f p=f o p e n(f il e l.t xt,w )可知f p 应该是文件类型指针,因资料仅供参考此本空因该填写FIL E*0填空2:当对f p 作打开操作的时候,并进行不同的操作前,应该对其关闭,因为在第一次打开时是对f p 进行写操作,而在第二次打开后进行的是读操作,因此应该先对f p 进行关闭,本空填f c l o s e (f p)o填空3:f s c an f()是把文本文件输出,因此本空只能填写f p。2、程序修改下列给定程序中,函数f u n 的功能是:对 N名学生的学习成绩,按从高到低的顺序找出前m(m W 1 0)名学生来,并将这些学生的数
16、据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M O D I L C 中,不得增行或删行,也不得更改程序的结构。i n c l u d et t i n c l u d et t i n c l u d e#i n c l u d et t i n c l u d et t d e f i n e N1 0t y p e d e f s t r u c t s s c h a r n u m 1 0 ;i n t s;S T U;S T U *f u n(S T U a ,i n t m)S T U b N
17、,*t;资料仅供参考i n t i,j,k;/*f o u n d*/*t=c a l l o c(m,s i z e o f(S T U);f o r(i=0;i N;i+)b i =a i ;f o r (k=0;k b j .s)j=i;/*f o u n d*/t k .n u m=b j .n u m;t k .s=b j .s;b j .s=0;r e t u r n t;o u t r e s u l t(S T U a ,F I L E*p f)i n t i;f o r(i=0;i 10)printf(nG ive the number of thestudents who
18、have better score:);scanf&m);)pOrder=fun(a,m);printf(*THE RESULT*n);printf(The top:n);for(i=0;im;i+)资料仅供参考p r i n t f(%sp O r d e r i ,s);f r e e(p O r d e r);)%d n”,p O r d e r i .n u m,【参考答案】(l)t=c a l l o c(m,s i z e o f(S T U);t k =b j ;【解题思路】(1)c l l o c应用于分配内存空间。调用形式为(类型说明符*)c a l l o c(n,s i
19、z e),功能:在内存动态存储区中分配n块长度为s i z e 字节的连续区域,函数的返回值为该区域的首地址,(类型说明符*)用于强制类型转换。c a l l o c函数与m a l l o c函数的区别在于c a l l o c函数一次能够分配n块区域。例如,p s=(s t r u c t s t u*)c a l l o c(2,s i z e o f (s t r u c t s t u);,其中的s i z e o f (s t r u c t s t u)是 求s t u的结构长度。该语句的意思是:按s t u的长度分配两块连续区域,强制转换为s t u类型,并把其首地址赋予指针变
20、量p s。在本题中不用考虑那么复杂,根据定义类型S T U 就能够看出*t=c a l l o c (m,s i z e o f (S T U)中的错误。(2)t k .n u m=b j .n u m的错误旨在考查对结构体概念的掌握和灵活应用程度。3、程序设计请编写函数f u n,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:2 2 2 3 4 4 5 666677899 1 0 1 0 1 0删除后,数组中的内容应该是:2 3 4 5 6789 1 0注意:部分源程序在文件P R 0
21、G 1.C中。请勿改动m a i n函数和其它函数中的任何内容,仅在函数f u n的花括号中填入所编写的若干语句。资料仅供参考ttinclude ttdefine N 80int fun(int a,int n)void main()FILE*wf;intaN =2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10,i,n=20;printf(The original data:n);for(i=0;in;i+)printf(%3d,ai);n=fun(a,n);printf(n nThe data after deleted:n);for(i=0;in;i+
22、)printf(%3d”,ai);printf(n n);/wf=fopen(/zout.dat,w);资料仅供参考f o r(i=0;i n;i+)f p r i n t f (w f,,z%3 d,z,a i );f c l o s e(w f);/【参考答案】int fun(int a,int n)int i,j=l;for(i=l;in;i+)if(aj-l!=ai)/*若该数与前一个数不相同,则要保留*/aj+=ai;return j;/*返回不相同数的个数*/)【解题思路】该程序的流程是:定义变量i 和 j,其中j 用于控制删除后剩下的数在数组中的下标,i 用于搜索原数组中的元素。
23、j 始终是新数组中最后一个元素的下一个元素的下标,因此i f 语句中的条件是aj-l!=ai,其中aj-L就是新数组中的最后一个元素,若条件成立,则表示出现了不同的值,因此a i要保留到新数组中。注意本题中i 和 j 的初值都要从1 开始,该算法只能用于数组已排序的题目中。第四十三套1、程序填空下列给定程序中,函数fun的功能是:计算NXN矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。要求先累加主对角线元素中的值,再累加资料仅供参考反向对角线元素中的值。例如,若 N=3,有下列矩阵:1 2 34 5 67 8 9首先累加1、5、9,然后累加3、5、7,函数返回值为30。请在程序的下
24、画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!ttinc lud e ttd efine N 4fun(int t N ,int n)int i,sum;/*found*/1 ;for(i=0;i n;i+)/*found*/s u m+=2 _ _ _ ;for(i=0;i n;i+)/*found*/sum+=t i n-i-3;return sum;ma in()资料仅供参考 intt N =2 1,2,1 3,2 4,2 5,1 6,4 7,3 8,2 9,1 1,3 2,54,4 2,2 1,
25、3,1 0,i,j;printf(,z nT he origina l d a ta:X n);for(i=0;i N;i+)for(j=0;j N;j+)printf(%4 d”,t i j);printf(n);)printf(T he result is:%d”,fun(t,N);)【参考答案】(1)sum=0 (2)(3)1【考点分析】本题考查:变量初始化;N X N 矩阵对角线下标如何表示;累加操作。【解题思路】填空1:变量sum用来储存和 结果,因此将其初始化为0。填空2:从题目中我们能够了解到,主对角线元素的行和列下标是相同的,因此应填入填空3:对于反向对角线元素的行和列的下标,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2020 年度 全国 计算机等级考试 语言 上机 考试 题库 4160
限制150内