《2022年全国计算机二级C语言冲刺题 .pdf》由会员分享,可在线阅读,更多相关《2022年全国计算机二级C语言冲刺题 .pdf(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、选择题 ( 每小题 1 分,共 40 小题,共 40 分)1. 算法的空间复杂度是指( ) 。A.算法程序的长度B.算法程序中 =的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间2. 下列叙述中正确的是( ) 。A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率3. 简单的交换排序方法是( ) 。A.快速排序B.选择排序名师资料总结 - - -精品资料欢迎下载 - - - - - - -
2、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 34 页 - - - - - - - - - C.堆排序D.冒泡排序4. 关于结构化程序设计原则和方法的描述错误的是( ) 。A.选用的结构只准许有一个入口和一个出口B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C.不允许使用GOT0 语句D.语言中若没有控制结构,应该采用前后一致的方法来模拟5. 相对于数据库系统, 文件系统的主要缺陷有数据关联差、数据不一致性和 ( )。A.可重用性差B.安全性差C.非持久性D.冗余性6. 面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本
3、原理是( ) 。A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 34 页 - - - - - - - - - C.使用现实世界的概念抽象地思考问题从而自然地解决问题D.不强调模拟现实世界中的算法而强调概念7. 对如下二叉树进行后序遍历的结果为( ) 。8. 软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( ) 。A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结
4、构D.软件开发过程9. 两个或两个以上模块之间关联的紧密程度称为( ) 。A.耦合度B.内聚度C.复杂度D.数据传输特性10. 下列描述错误的是( ) 。A.继承分为多重继承和单继承名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 34 页 - - - - - - - - - B.对象之间的通信靠传递消息来实现C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征D.类是具有共同属性、共同方法的对象的集合11. 数据库 DB 、数据库系统DBS 、数据库管理系统
5、DBMS 之间的关系是 ( ) 。包含 DBS和 DBMS包含 DB和 DBS包含 DB和 DBMSD.没有任何关系12. 下列合法的声明语句是( ) 。=50; int=3+; do=1L : 3_asd=3e-3;13. 设 x、Y和 z 是 int型变量,且 x=4,y=6,z=8,则下列表达式中值为0 的是( ) 。&Y名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 34 页 - - - - - - - - - =Yy+z&y-zD.!(x 14. 若 ch 为
6、char 型变量, k 为 int型变量 (已知字符 a 的 ASCIl 码是 97) ,则执行下列语句后输出的结果为( ) 。ch=b;k=10:printf(%X,%o , ,ch,ch,k);printf(k=%dn,k);A.因变量类型与格式描述符的类型不匹配,输出无定值B.输出项与格式描述符个数不符,输出为0 值或不定值,142,k 一%d,142,k 一%l015. 有下列程序:、fun(int X,int y)return(x+y);)main() int a=1,b=2,c=3,sum;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
7、 - - - - - 名师精心整理 - - - - - - - 第 5 页,共 34 页 - - - - - - - - - sum=fun(a+ ,b+,a+b),c+);printf(%dn,sum);执行后的输出结果是( ) 。16. 假定 x 和 Y为 double 型,则表达式x=2,yx+3/2 的值是 ( ) 。17. 有如下程序:main()int x=1,a=0,b=0;switch(x)case 0 :b+;case l :a+;case 2 :a+;b+;)printf(a=%d,b=%dn,a,b);)名师资料总结 - - -精品资料欢迎下载 - - - - - - -
8、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 34 页 - - - - - - - - - 该程序的输出结果是( ) 。=2,b=1=1,b=1=1,b=0=2,b=218. 下列程序的输出结果是( ) 。main()int i=1,j=2 ,k=3;if(i+= =1&(+j= =3= =k+= =3)printf(%d%d%dn,i ,J,k);) 2 3 3 4 2 3 3 319. 下列程序的输出结果是( ) 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师
9、精心整理 - - - - - - - 第 7 页,共 34 页 - - - - - - - - - #includemain() int a=0,i;for(i=1;i5;i+) switch(i) case 0:case 3 :a+=1;case l :case 2 :a+=2;default:a+=3;)printf(%d,i);)20. 有以下程序:main()int X,i;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 34 页 - - - - - - - -
10、- for(i=1;i=50;i+)x=i;if(X%2=O)if(x%3=O)if(X%7=0) .printf(%d,i);)输出结果是 ( ) 。21. 以下程序的输出结果是( ) 。main()int a33=1,2,3,4) ,5 ,6 ,i ,j ,s=0;for(i=1;i3;i+)for(j=0;jnext=r-next;p-:next=r;rm :next=q;:next=r;q-next=r-next;r-next=q;:next=r-next;r-next=q;p-next=r;:next=q;p-next=r;q-next=r-next;26. 有下列程序:main()
11、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 34 页 - - - - - - - - - int i,j ,x=0;for(i=0,i2;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+:)x+:printf(x=%dnx);程序执行后的输出结果是( ) 。=4=8=6=12名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12
12、 页,共 34 页 - - - - - - - - - 27. 有下列程序:int funl(double a)return a*=a; 、int fun2(double x,double y)double a=0 ,b=0;a=funl(x);b=funl(y);return(int)(a+b);)main()double w;w=fun2, , 程序执行后变量w中的值是 ( ) 。 、28. 有下列程序:main()int i,s=0,t=1,2,3,4,5,6,7,8,9;for(i=0;i9;i+=2)s+=*(t+i);printf(%dn,s);程序执行后的输出结果是( ) 。名师
13、资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 34 页 - - - - - - - - - 29. 有下列程序:int fun(int n)if(n= =1)return l;elsereturn(n+fun(n-1):main() int x;seanf(%d ,&x);x=fun(x);printf(%dn,x);执行程序时,给变量x 输入 l0 ,程序的输出结果是( ) 。30. 有下列程序:int fun(int x,int n) static int sum=0
14、,i;for(i=0;i return sum;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 34 页 - - - - - - - - - main()int a3=1,2,3,4,5) ,b3=6 ,7,8,9),s=0;s=fun(a ,5)+fun(b ,4);printf(%dn,s);程序执行后的输出结果是( ) 。 、31. 有下列程序:main()f char*P=3697,2584);int i,j;long num=0;for(i=0;i2;i+)j
15、=0;while(pij!=0 )if(pij-t0)%2)num=10*num+pjj-0;j+=2;)printf(%dn,num);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 34 页 - - - - - - - - - )程序执行后的输出结果是( ) 。32. 以下程序的输出结果是( ) 。main()”;printf(%d%dn,strlen(st),sizeof(st); 9 20 20 2033. 若有下的定义: int t32;,能正确表示t 数组元
16、素地址的表达式是( ) 。A.&t323l名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 34 页 - - - - - - - - - 2234. 函数 fseek(pf,OL ,SEEK_END) 中的 SEEK_END 代表的起始点是 ( ) 。A.文件开始B.文件末尾C.文件当前位置D.以上都不对35. 下述程序的输出结果是( ) 。#includemain()int i;for(i=1;i=20)&(i*i=lOO)break;printf(%dn,i*i);)
17、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 34 页 - - - - - - - - - 36. 若有定义“ int b8,*p=b; ” ,则 p+6表示 ( ) 。A.数组元素 b6 的值B.数组元素 b6 的地址C.数组元素 b7 的地址D.数组元素 b0 的值加上 637. 设变量已正确定义,则以下能正确计算f=n! 的程序是 ( ) 。=0; for(i=1;i1;i+)f*=i;=1;for(i=n;i=2;i-)f*=i;38. 下述程序执行的输出结果
18、是( ) 。#includemain()char a24; ,strcpy(a。are);strcpy(a1,you);ao3=&;printf(%sn,a);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 34 页 - - - - - - - - - )&youD.&39. 设 x=011050,则 x=x&01252的值是 ( ) 。40. 在“文件包含,预处理语句的使用形式中,当#include后面的文件名用 (双引号 ) 括时,寻找被包含文件的方式是( ) 。A
19、.直接按系统设定的标准方式搜索目录B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索C.仅仅搜索源程序所在目录D.仅仅搜索当前目录二、基本操作题 ( 共 18 分)请补充函数 proc() ,该函数的功能是计算下面公式SN的值:SN=1+1/3十 4/5+.+2N-1/SN-1例如,当 N=20时, SN= 。注意:部分源程序给出如下。请勿改动 main() 函数和其他函数中的任何内容,仅在函数 proc() 的横线上填入名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
20、 19 页,共 34 页 - - - - - - - - - 所编写的若干表达式或语句。试题程序:#include#include#includedouble proc(int n)double s= ,sl=;int k;for( 【1】;k=n;k+)sl=S;【2】return 【3】 ;)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 34 页 - - - - - - - - - void main()int k=0:double sum;system(CLS)
21、;printf(nPlease input N=);scanf(%d ,&k);sum=proc(k);printf(nS=%If,sum);)三、程序改错题 (共 24 分)下列给定程序中,函数proc() 的功能是根据整型形参n,计算如下公式的值:Y=1-1/(22)+1/(33)-1/(44)+(-1)(n+1)/(nn)例如, n 中的值为 l0 ,则应输出。请修改程序中的错误,使它能得到正确结果。注意:不要改动main() 函数,不得增行或删行,也不得更改程序的结构。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师
22、精心整理 - - - - - - - 第 21 页,共 34 页 - - - - - - - - - 试题程序:#include#include#includedouble proc(int n)double y=;f|*found*int J=1; .int i;for(i=2;inext=q ,这时 r 指向的节点为q;p-next=r,这时 P指向的节点为r;q-next:r-next ,因为 r 节点已经指向q,所以执行这个语句后q 又指向 q,所以选项 D不正确。 【解析】在第 1 次外层 for 循环中, 首先 x+得到 x=1。进入到内层for 循环,只有循环 j 的值为奇数时,
23、 变量 x 的值才自加1, 所以在内层for 循环执行过程中,变量 x 的值自加两次,当退出内层for循环时, x=3,然后执行x+,得到 x=4。在进入执行第 2 次外层 for循环中,首先 x+得到 x=5。进入到内层 for 循环,只有循环变量 J 的值为奇数时,变量X 的值才自加1,所以在内层for 循环执行过程中,变量 X 的值自加 l 两次,当退出内层for循环时, x=7,然后执行 x+,得到 x=8,所以打印输出变量x 的值为 8。 【解析】 子函数 funl(double a) 的功能是返回a 的平方值的整数部分。子函数名师资料总结 - - -精品资料欢迎下载 - - - -
24、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 29 页,共 34 页 - - - - - - - - - fun2(double X, double y) 的功能是返回X 的平方值的整数部分与Y的平方值的整数部分的和。 又因为题中变量W的定义为 double 型,函数 fun(2) 的定义为 int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量 w的值为。 【解析】在 for 循环语句中自变量i 从 0 开始,每次自加2,执行 s+=*(t+i)语句,因为C 语言规定数组名做表达式相当于数组的首地址,也就
25、是第一个元素的地址。 因此, *(t+i)代表数组的第i+1 个元素。所以程序运行的结果是l+3+5+7+9=25,即变量 S的值等于 25。 【解析】本题在函数int fun(int n) 的定义中又出现了对函数fun 的调用,所以函数 fun 是递归函数。因而在主函数中调用x=fun(x) 时,当输入10 赋给变量 X时,递归调用的过程为fun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)=10+9+8+7+fun(6)=10+9+8+7+6+fun(6)=10+9+8+7+6+5+fun(4)=10+9+8+7+6+5+4+fun(3)=10+9+8+7
26、+6+5+4+3+fun(2)=10+9+8+7+6+5+4+3+2+fun(1)=10+9+8+7+6+5+4+3+2=55名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 30 页,共 34 页 - - - - - - - - - 。 【解析】在函数int fun(int x,int n)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数int fun(int x ,int n) 的功能是求出数组x 各个元素的
27、和,所以在主函数中,调用函数fun(a ,5) 后,变量 sum=1+2+3+4+5=15 ,当再次调用 fun(b ,4)后,变量 sum=15+6+7+8+9=45 ,所以 s=15+45=60。 【解析】执行第一次for 循环时,用表达式piJ!=o 来判断字符串数组指针 P是否到达字符串的结尾,如果没有到达,继续执行while 中的语句。 if语句表示 (pij-o ) 除 2 的余数不为 0 时,即字符串所有奇数,执行后面的语句。所以退出第1 次 for的循环体时,输出为397,执行第 2 次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。 【解析】从
28、题目中可知, O 、 t 、 分别为一个字符,而sizeof是求字节个数的函数, 其中包括O 占的字节,strlen函数是求数组长度的函数; 其以0 结束,因此strlen的值为 5,sizeof的值为 20。 【解析】数组的下标是从0 开始的, A 中越界,行下标和列下标都不能越界;B中,虽然是个地址,但是也同样越界了; 选项 c 中表示的是第一个的首地址; 选项 D表示的为其元素的值,并不是地址。 【解析 SEEK_SET 代表文件的开始, SEEK_END 代表文件末尾, SEEK_CUR 代表文件当前位置。【解析】 当 if 执行到第一个满足(i*i=20)&(i*i=100)这个条件
29、的 i 出现时,通过 break 语句跳出循环,执行下面的prinlf语句。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 31 页,共 34 页 - - - - - - - - - 。 【解析】指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中p+6 指的是将指针向后移动了 6 个存储单元,即指向b6 ,存放的是 b6 的地址。 【解析】由 n! 的数字定义可知n!=n*(n-1)*(n-2)*1。在选项 A中,由于 f
30、的初值为 0, 在 for 循环语句中, f 依次乘以 l , 2,3,n, 最后计算得到f=n!=0 ,所以选项 A不正确。 在选项 B中,f 的初值为 l ,在 for 循环语句中, f 依次乘以 l ,2,3, (n-1) ,最后计算得到f=(n-1)!,所以选项 B不正确。在选项C中,f 的初值为 l ,在 for 循环语句中, f 依次乘以 n,n+1,n+2,所以选项 C不正确。在选项 D中, f 的初值为 l ,在 for 循环语句中, f 依次乘以 n,n-1,n-2, 2,最后计算得到f=n! ,所以选项 D正确。 【解析 strcpy实现的功能是复制,该操作把are 复制到
31、 a 中, aE03 E33一& ,且 strcpy(aEl, you)把 you 复制到 al中,故输出 a 为“ are&you” 。 【解析】 本题主要考查按位与运算,x=Oll050 的二进制形式为0000,Ol252 的二进制形式为00000010,两者相与得00000000。 【解析】 #include ”文件名”,预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。二、基本操作题程序填空题【1】k=2【2】s+=(2*k 一 1)/sl【3】s【解析】 由题目中所给公式可知,多项武的第一项为1。变量 s 中存放多项式的名师资料总
32、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 32 页,共 34 页 - - - - - - - - - 和,其初始值为l 。因此,循环从第二项开始,因此,【1】处填“ k=2”; 变量 sl 中存放各项表达武的值,由公式可知,【2】处填“s+=(2*k-1)/sl”; 题目中要求将多项式的和返回到主函数当中,因此,【3】处填“ s” 。三、程序改错题(1) 错误: int j=1;正确: double j=;(2) 错误: y+=1/(i*i); 正确: y+=j/(i*i);【解析】由函
33、数proc() 可知,变量 j 的作用是控制每一项符号的变化,并且作为运算的分子,应改为double 型变量。因此, “int j=1;”应改为“ double j=;” 。变量 y 中存放多项式的值, 多项式中的每一项符号由变量j 决定。 因此,“y+=1/(i*i);”应改为“ y+=j/(i*i);” 。四、程序设计题char*proc(char(*a)81,int M)char*max;int i=0:max=aO:for(i=0;i if(strlen(max) max=ai;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 33 页,共 34 页 - - - - - - - - - return max; /返回最长字符串的地址【解析】本题首先要定义一个字符指针用于保存最长的字符串,并使其初始值指向第一个字符串; 再循环遍历字符串数组,通过if语句比较字符串的长度,并把最长的字符串地址赋给字符指针; 最后返回最长字符串的地址。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 34 页,共 34 页 - - - - - - - - -