ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:46.31KB ,
资源ID:27527003      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27527003.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(全国计算机二级C语言模拟测试含详细解析 2.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

全国计算机二级C语言模拟测试含详细解析 2.docx

1、全国计算机二级C语言模拟测试含详细解析 21.在最坏情况下A. 快速排序的时间复杂度比冒泡排序的时间复杂度要小 B. 快速排序的时间复杂度比希尔排序的时间复杂度要小 C. 希尔排序的时间复杂度比直接插入排序的时间复杂度要小 D. 快速排序的时间复杂度与希尔排序的时间复杂度是一样的 正确答案:C你的答案:解析:【解析】对长度为n的线性表排序,下表为常用排序方法时间复杂度:上表中未包括希尔排序,因为希尔排序的时间效率与所取的增量序列有关,如果增量序列为:d1=n/2, di+1=di/2,在最坏情况下,希尔排序所需要的比较次数为O(n1.5)。快速排序与冒泡排序的时间复杂度均为O(n2),A选项错

2、误。快速排序比希尔排序的时间复杂度要大(O(n2)O(n1.5),B选项错误。希尔排序的时间复杂度比直接插入排序的时间复杂度要小(O(n1.5)O(n1.5),D选项错误。 2.在深度为7的满二叉树中,度为2的结点个数为A. 64 B. 63 C. 32 D. 31 正确答案:B你的答案:解析:【解析】在树结构中,一个节点所拥有的后件个数称为该节点的度。深度,定义一棵树的根节点所在的层次为1,其他节点所在的层次等于它的父节点所在的层次加1,树的最大层次称为树的深度。满二叉树指除最后一层外,每一层上的所有节点都有两个子节点的二叉树。一棵深度为K的满二叉树,整棵二叉树共有2K-1个节点;满二叉树在

3、其第i层上有2(i-1)个节点。在满二叉树中,只有度为2和度为0的节点。深度为7的满二叉树,节点个数为27-1=127,第七层叶节点个数为2(7-1)=64,则127-64=63, B选项正确。 3.设栈的顺序存储空间为S(1: m),初始状态为top=m+1。现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为A. 30 B. 20 C. m-19 D. m-20 正确答案:C你的答案:解析:【解析】栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。入栈运算即在栈顶位置插入一个新元素,退栈运算即是取出栈顶元素赋予指定变量。栈为空时,栈顶指针top=0,经过入栈和退

4、栈运算,指针始终指向栈顶元素。初始状态为top=m+1,当top=20时,元素依次存储在单元20:m中,个数为m-19,C选项正确。 4.算法空间复杂度的度量方法是A. 算法程序的长度 B. 算法所处理的数据量 C. 执行算法所需要的工作单元 D. 执行算法所需要的存储空间 正确答案:D你的答案:解析:【解析】算法的空间复杂度是指执行这个算法所需要的内存空间,。算法执行期间所需的存储空间包括3个部分:输入数据所占的存储空间;程序本身所占的存储空间;算法执行过程中所需要的额外空间。D选项正确。 5.下面不属于软件开发阶段任务的是A. 测试 B. 可行性研究 C. 设计 D. 实现 正确答案:B你

5、的答案:解析:【解析】软件生命周期分为3个时期共8个阶段:软件定义期,包括问题定义、可行性研究、需求分析;软件开发期,包括概要设计、详细设计、实现、测试;运行维护期,即运行维护阶段。可行性研究属于软件定义期任务,B选项错误。 6.下面属于字符类的实例是A. 518 B. 5 C. nm D. n 正确答案:D你的答案:解析:【解析】字符实例的一般形式是用一对单引号括起来的一个字符。另外ASCII码中还有一些控制字符,C语言中用转义字符的形式来书写这些常,转义字符一反斜杠()开始,后面跟1个字符或字符序列。518单引号中有三个字符,A选项错误。5双引号为字符串,B选项错误。nm单引号中有两个字符

6、,C选项错误。n为换行符,属于字符类实例,D选项正确。 7.某系统结构图如下图所示该系统结构图的最大扇出数是A. n B. 1 C. 3 D. 4 正确答案:A你的答案:解析:【解析】扇出指的是由一个模块直接调用的其他模块数。题干中某系统为一个模块,其扇出数目为n(n3),功能1与功能n模块扇出数均为2,故A选项正确。 8.一个兴趣班可以招收多名学生,而一个学生可以参加多个兴趣班。则实体兴趣班和实体学生之间的联系是A. 1:1联系 B. 1:m联系 C. m:1联系 D. m:n联系 正确答案:D你的答案:解析:【解析】一般来说,实体集之间必须通过联系来建立联接关系,分为3类:一对一联系(1:

7、1)、一对多联系(1:m)、多对多联系(m:n)。多个兴趣班与多个学生的关系为m:n联系,D选项正确。 9.有三个关系表R、S和T如下,其中三个关系对应的关键字分别为A,B和复合关键字(A,B)。表T的记录项(b,q,4)违反了A. 实体完整性约束 B. 参照完整性约束 C. 用户定义的完整性约束 D. 关系完整性约束 正确答案:B你的答案:解析:【解析】关系模型中可以有3类完整性约束:实体完整性约束、参照完整性约束和用户定义的完整性约束。实体完整性约束是指,若属性是关系的主键,则属性中的属性值不能为空值。T中主键不为空,A选项错误。参照完整性约束是指,若属性(或属性组)A是关系M的外键,它与

8、关系M的主码相对应,则对于关系M中的每个元组在A上的值必须为:要么取空值;要么等于关系M中某个元组的主码值。属性B为关系S的外键,它与关系S的主键相对应,则T中元组在B上应该为空或者与S中主键值相等,题目中不相等,违反参照完整性约束,B选项正确。此题关系中无语义要求,C选项错误。 10.在数据库系统中,给出数据模型在计算机上物理结构表示的是A. 概念数据模型 B. 逻辑数据模型 C. 物理数据模型 D. 关系数据模型 正确答案:C你的答案:解析:【解析】数据模型按照不同的应用层次分为以下3种类型:概念数据模型,重于对客观世界复杂事物的描述及对它们内在联系的刻画;逻辑数据模型,是面向数据库系统的

9、模型,着重于在数据库系统一级的实现;物理数据模型,是面向计算机物理实现的模型,此模型给出了数据模型在计算机上物理结构的表示。C选项正确。 11.若有定义语句:int a=12;,则执行语句:a+= a-= a*a;后,a的值是A. -264 B. 552 C. 144 D. 264 正确答案:A你的答案:解析:【解析】赋值运算结合性为自右向左,a+=a-=a*a相当于a=a-a*a,a=a+a;自右向左计算过程为a=a-a*a=-132,a=a+a=-264,A选项正确。 12.若在程序中变量均已定义成int类型,且已赋大于1的值,则下列选项中能正确表示代数式的表达式是A. 1.0/a/b/c

10、 B. 1/(a*b*c) C. 1.0/a*b*c D. 1/a/b/(double)c 正确答案:A你的答案:解析:【解析】由于abc均大于1,所以表达式1/abc小于1,需要用浮点类型表示。若要计算表达式值,需要使其自动转化成浮点类型,所以A选项正确。B选项由于变量与常量均为整型,不会自动转换为浮点类型,B选项错误。C选项表示表达式bc/a,故错误。D选项,由于算数运算法结合性自左向右,先计算1/a,结果为0,之后的计算无论是否转换数据类型结果均为0,D选项错误。 13.有以下程序#include main() int x=010, y=10; printf(%d,%dn, +x, y-

11、);程序运行后的输出结果是A. 10,9B. 11,10 C. 010,9 D. 9,10正确答案:D你的答案:解析:【解析】整型常量有种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法,八进制整常量以O作为前缀。自增和自减运算符的两种用法:前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算;后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)。x=010=8,y=10,+x先自加后取值,输出9,y-先取值输出10,再自减y=9,D选项正确。 14.以下选项中叙述正确的是A. C语言的标识符可分为关键字

12、、预定义标识符和用户标识符三类 B. C语言的标识符可分为语句、变量和关键字三类 C. C语言的标识符可分为函数名、变量和预定义标识符三类 D. C语言的标识符可分为运算符、用户标识符和关键字三类 正确答案:A你的答案:解析:【解析】标识符就是一个名称,用来表示变量、常量、函数以及文件等名称。C语言的标识符可分为关键字、预定义标识符和用户标识符三类,A选项正确,B、C、D选项错误。合法的标识符由字母、数字和下划线组成,并且必须以字母或下划线开头。用户标识符为用户根据编程需求自定义的标识符。关键字是指被语言保留的,不能用作其他用途的一些标识符,它们在程序中都代表着固定的含义,用户不可重新定义。预

13、定义标识符是系统已经有过定义的标识符,用户可以重新定义。 15.以下选项中叙述正确的是A. 函数体必须由 开始 B. C程序必须由main语句开始 C. C程序中的注释可以嵌套 D. C程序中的注释必须在一行完成 正确答案:A你的答案:解析:【解析】函数体是函数首部下面的花括号内的部分,所以函数体必须由开始,A选项正确。一个源程序文件可以包括预处理命令、全局声明、函数定义,程序总是从main函数开始执行的,不是main语句,B选项错误。C程序中的允许两种注释,以/开头的单行注释;以/*开始,以*/结束的块式注释,D选项错误。函数可以嵌套,注释不能嵌套,C选项错误。 16.已知a=5,b=6,c

14、=7,d=8,m=2,n=2,执行(m=ab)&(n=cd)后n的值为A. 1B. 0 C. 2D. -1 正确答案:C你的答案:解析:【解析】=优先级低于。&逻辑与表达式:exp1&exp2,规则为:对exp1求值,若为0,则表达式为0,且不计算exp2;若exp1非0,则求exp2值,作为表达式值。本题计算过程为:先判断ab为假,m=0,整个逻辑表达式为假,不计算右表达式,n=2。C选项正确。 17.有以下程序#include main() int x=23; do printf(%2dn, x-); while( !x );程序的执行结果是A. 输出321B. 输出23 C. 不输出任何

15、内容 D. 陷入无限循环 正确答案:B你的答案:解析:【解析】 %2d表示输出的整型变量占2列。程序执行过程为:输出x为23,之后x自减得x=22,!x为假(0),while条件不成立,退出循环。B选项正确。 18.有以下程序#include main() char c; while( ( c=getchar() )!= n ) switch( c-2 ) case 0 : case 1 : putchar( c+4 ); case 2 : putchar( c+4 ); break; case 3 : putchar( c+3 ); default : putchar( c+2 ); bre

16、ak; printf( n );程序运行后从第一列开始输入以下数据2473程序的输出结果是A. 668977 B. 4444 C. 6677877 D. 68766 正确答案:A你的答案:解析:【解析】本题执行过程为:输入c=2,c-2=0,首先匹配case0,依次输出6,6,后执行break语句,跳出分支结构;输入c=4,c-2=2,匹配case2,输出8,执行break语句,跳出分支结构;输入c=7,c-2=5,匹配default,输出9,执行break语句,跳出分支结构;输入c=3,c-2=1,匹配case1,依次输出7,7,执行break语句,跳出分支结构。输入回车,结束循环。A选项正

17、确。 19.有以下程序#include main() int i=0, sum=1; do sum += i+ ; while( ib)printf(x=%d, x); else printf(y=%d, y); if(ab)printf(x=%d, x);j+;else printf(y=%d, y);i+; B. if(ab)printf(x=%d, x);i+;else printf(y=%d, y);j+; C. if(a=b)printf(x=%d, x);i+;else printf(y=%d, y);j+; 正确答案:A你的答案:解析:【解析】题目中程序段执行过程为:如果ab,输

18、出x,否则输出y;如果ab,输出x且j加1,否则输出y且i加1,与题目中功能相同,A选项正确。B选项为:如果ab,输出x且i加1,否则输出y且j加1,与题目中功能不相同,B选项错误。C选项为:如果a=b,多了a=b,故D选项错误。 21.以下程序的功能是判断输入的一个整数是否能被3或7整除,若能整除,输出YES,否则输出NO。在下划线处应填入的选项是#include main() int k; printf(Enter a int number : ); scanf(%d, &k ); if _ printf(YESn); else printf(NOn); printf(%dn,k%3);A

19、. ( (k%3=0) | (k%7=0) ) B. (k/3=0) | (k/7=0) C. ( (k%3=0) | (k%7=0) ) D. ( (k%3=0)& (k%7=0) ) 正确答案:A你的答案:解析:【解析】求余运算符为%,是否能被3或7整除表达式为 (k%3=0)|(k%7=0),A选项正确。B选项“/”为除号,错误。C选项中“=”为赋值运算符,不是逻辑运算符“=”,错误。D选项“&”为逻辑与,本题应该为逻辑或“|”,错误。 22.以下选项中,不能对主函数中变量i和j的值进行交换的程序是A. #include void swap( int *p,int *q) int *t;

20、 *t=*p; *p=*q; *q=*t; main() int i=10,j=20, *a=&i, *b=&j; swap(a,b); printf(i=%d j= %dn, i,j ); B. #include void swap( int *p,int *q) int t; t=*p; *p=*q; *q=t; main() int i=10,j=20, *a=&i, *b=&j; swap(a,b); printf(i=%d j= %dn, i,j ); C. #include #include void swap( int *p,int *q) int *t; t=(int *)ma

21、lloc(sizeof(int); *t=*p; *p=*q; *q=*t; free(t); main() int i=10,j=20; swap(&i,&j); printf(i=%d j= %dn, i,j ); D. #include void swap( int *p,int *q) int t; t=*p; *p=*q; *q=t; main() int i=10,j=20 , *x=&i, *y=&j; swap(x,y); printf(i=%d j= %dn, i,j ); 正确答案:A你的答案:解析:【解析】A选项函数内定义了指针,但并未给指针开辟空间,程序错误,故选择A选

22、项。B选项调用函数传入的是i与j地址,函数体内交换是地址内元素,临时变量为整型变量,能实现i与j值交换。C选项调用函数传入的是i与j地址,函数体内交换是地址内元素,临时变量为整型指针,且已正确开辟内存,能实现i与j值交换。D选项与B选项相同,能实现i与j值交换。 23.有以下程序#include main() int a10 = 1,3,5,7,11,13,17 , *p=a; printf(%d, *( p+ ); printf(%dn, *( +p ); 程序运行后的输出结果是A. 3,7B. 3,5 C. 1,5D. 1,3 正确答案:C你的答案:解析:【解析】程序执行过程:指针p指向数

23、组第一个元素;*(p+)先取p,输出p指向的元素1,之后p加1,指向数组第二个元素;*(+p),指针p加1指向数组第三个元素,之后输出所指元素5,C选项正确。 24.有以下程序#include main() int *p, x=100; p=&x; x=*p+10; printf(%dn, x); 程序运行后的输出结果是A. 110 B. 120 C. 100 D. 90 正确答案:A你的答案:解析:【解析】程序执行过程为:定义指针p,指向变量x,x=(*p)+10=110,输出110,A选项正确。 25.以下程序中给数组所有元素输入数据,请从选项中选择正确的答案填入下划线处#include

24、main() int a10, i=0; while( i10 ) scanf(%d, _ );A. a+(i+) B. &ai+1 C. a+i D. &a(i+) 正确答案:A你的答案:解析:【解析】A选项a为数组首地址,i+先取i值再加1,scanf读入的数据依次存放在数组中,A选项正确。B选项,第一个数据读入a1,最后一次循环引用a10,数组越界,B选项错误。C选项,控制变量i没有依次加1,无法结束循环,也无法对整个数组赋值,输入的数全是a0,C选项错误。D选项数组元素引用错误,数组元素引用为,不是(),D选项错误。 26.有以下程序#include void fun( int x,

25、int y, int *z ) *z = y-x; main() int a, b, c; fun(10,5,&a ); fun(7,a,&b ); fun(a,b,&c ); printf(%d,%d,%dn, a,b,c );程序运行后的输出结果是A. 5,2,3B. -5,-12,-7C. -5,-12,-17 D. 5,-2,-7 正确答案:B你的答案:解析:【解析】程序执行过程为:调用函数fun(10,5,&a ),将变量a地址传入函数,a=5-10=-5;调用函数fun(7,a,&b),将变量b地址传入函数,b=-5-7=-12;调用函数fun(a,b,&c),将变量c地址传入函数

26、,c=-12-(-5)=-7。输出-5,-12,-7,B选项正确。 27.有以下程序#include void fun( int *s, int n1, int n2 ) int i,j,t; i=n1; j=n2; while( ij ) t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; i+; j-; main() int a10 = 1,2,3,4,5,6,7,8,9,0 ,i, *p = a; fun( p,0,3 ); fun( p,4,9 ); fun( p,0,9 ); for( i=0; i10; i+ )printf(%d , *( a+i ) ); pr

27、intf(n );程序运行后的输出结果是A. 5 6 7 8 9 0 1 2 3 4 B. 0 9 8 7 6 5 4 3 2 1 C. 4 3 2 1 0 9 8 7 6 5 D. 0 9 8 7 6 5 1 2 3 4 正确答案:A你的答案:解析:【解析】程序执行过程为:调用函数fun(p,0,3),将数组a首地址传入函数,循环执行2次,将数组前4个元素前后倒置,数组a=4,3,2,1,5,6,7,8,9,0;调用函数fun(p,4,9),将数组a首地址传入函数,循环执行3次,将数组第5个到第10个元素前后倒置,数组a=4,3,2,1,0,9,8,7,6,5;调用函数fun(p,0,9),将数组a首地址传入函数,循环执行5次,将数组元素前后倒置,数组

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1