全国计算机二级C选择题试题库第34套
- 格式:doc
- 大小:109.00 KB
- 文档页数:32
全国计算机二级C选择题题库第34套1、下列叙述中错误的是A) 数据结构中的数据元素不能是另一数据结构B) 数据结构中的数据元素可以是另一数据结构C) 空数据结构可以是线性结构也可以是非线性结构D) 非空数据结构可以没有根结点参考答案:A数据元素是一个含义很广泛的概念,它是数据的"基本单位",在计算机中通常作为一个整体进行考虑和处理。
数据元素可以是一个数据也可以是被抽象出的具有一定结构数据集合,所以数据结构中的数据元素可以是另一数据结构。
满足有且只有一个根结点并且每一个结点最多有一个前件,也最多有一个后件的非空的数据结构认为是线性结构,不满足条件的结构为非线性结构。
空数据结构可以是线性结构也可以是非线性结构。
非空数据结构可以没有根结点,如非性线结构"图"就没有根结点。
故选A选项。
2、为了降低算法的空间复杂度,要求算法尽量采用原地工作(in place)。
所谓原地工作是指A) 执行算法时所使用的额外空间固定(即不随算法所处理的数据空间大小的变化而变化)B) 执行算法时所使用的额外空间随算法所处理的数据空间大小的变化而变化C) 执行算法时不使用额外空间D) 执行算法时不使用任何存储空间参考答案:A算法的空间复杂度是指执行这个算法所需要的内存空间,包括输入数据所占的存储空间、程序本身所占的存储空间、算法执行过程中所需要的额外空间。
如果额外空间量相对于问题规模(即输入数据所占的存储空间)来说是常数,即额外空间量不随问题规模的变化而变化,则称该算法是原地工作的。
故选A选项3、某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。
现经过一系列的入队操作和退队操作后,front=m,rear=m-1,则该循环队列中的元素个数为A) m-1B) mC) 1D) 0参考答案:A循环队列长度为m,由初始状态为front=rear=m,可知此时循环队列为空。
入队运算时,首先队尾指针进1(即rear+1),然后在rear指针指向的位置插入新元素。
特别的,当队尾指针rear=m+1时,置rear=1。
退队运算时,排头指针进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=m+1时,置front=1。
从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。
如果rear-front>0,则队列中的元素个数为rear-front个;如果rear-front<0,则队列中的元素个数为rear-front+m 。
该题中m-1<m,即rear-front<0,则该循环队列中的元素个数为(m-1)-m+m=m-1。
故选A选项。
4、某棵树只有度为3的结点和叶子结点,其中度为3的结点有8个,则该树中的叶子结点数为A) 15B) 16C) 17D) 不存在这样的树参考答案:C树是一种简单的非线性结构,直观地来看,树是以分支关系定义的层次结构。
在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。
由于只有度为3的结点和叶子结点,可知最后一层都为叶子结点,倒数第二层一部分结点度为3,一部分为叶子结点,其余的结点的度均为3,计算度为3的结点总数(33-1-1)/2<8<(34-1-1)/2可知,树共有4层,前两层有度为3的结点(33-1-1)/2=4个,第三层有33=9个结点,其中4个是度为3的结点,5个是叶子结点,所以该树中的叶子结点数为4×3+5=17。
故选C选项。
5、某二叉树共有530个结点,其中度为2的结点有250个,则度为1的结点数为A) 29B) 30C) 249D) 251参考答案:A在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。
对任何一棵二叉树,度为0的结点总是比度为2的结点多一个。
二叉树结点总数为530,度为2的结点有250个,则度为0的结点有251个,那么度为1的结点个数为530-250-251=29。
故选A选项。
6、若某二叉树中的所有结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,则该二叉树遍历序列中有序的是A) 前序序列B) 中序序列C) 后序序列D) 以上说法均可以参考答案:B二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。
由于结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,那么只要遍历时访问根结点在访问左子树和右子树之间,遍历序列有序,即中序序列有序。
故选B选项。
7、将C语言的整数设为整数类I,则下面属于类I实例的是A) -103B) 10E3C) 10.3D) "0103"参考答案:A整数类实例包括:十进制常量用0~9表示,不能以0开头;八进制常量用0~7表示,必须用0开头;十六进制常量用0~9和A~F(a~f)表示,必须以0x或0X开头。
本题中B选项是科学计数法表示的浮点数实例,C选项是浮点数实例,D选项是字符串实例。
故选A选项。
8、下列叙述中正确的是A) 软件是程序、数据和文档B) 软件是程序和数据C) 软件是算法和数据结构D) 软件是算法和程序参考答案:A计算机软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
故选A选项。
9、软件生命周期是指A) 软件的定义和开发阶段B) 软件的需求分析、设计与实现阶段C) 软件的开发阶段D) 软件产品从提出、实现、使用维护到停止使用退役的过程参考答案:D通常把软件产品从提出、实现、使用、维护到停止使用、退役的过程称为软件生命周期。
选项A、B、C选项均为生命周期的一部分。
故选D选项。
10、下列叙述中正确的是A) 数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能B) 数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件C) 数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少D) 数据库系统独立性较差,而文件系统独立性较好参考答案:A数据管理技术的发展经历了3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。
三者各自的特点如下表所示。
特点人工管理阶段文件系统阶段数据库系统阶段管理者人文件系统数据库管理系统面向对象某个应用程序某个应用程序现实世界共享程度无共享,冗余度大共享性差,冗余度大共享性大,冗余度小独立性不独立,完全依赖于程序独立性差具有高度的物理独立性和一定的逻辑独立性结构化无结构记录内有结构,整体无结构整体结构化,用数据模型描述控制能力由应用程序控制由应用程序控制由DBMS提供数据安全性、完整性、并发控制和恢复数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能。
数据库系统和文件系统的区别不仅在于管理的文件类型与数据量的多少。
数据库系统具有高度的物理独立性和一定的逻辑独立性,而文件系统独立性较好。
故本题选A选项。
11、关于程序模块化,以下叙述错误的是A) 程序模块化可以提高程序运行的效率B) 程序模块化可以提高程序编制的效率C) 程序模块化可以提高程序代码复用率D) 程序模块化可以提高调试程序的效率参考答案:A模块化程序的优点:1、易于维护和复用,可以提高程序编制的效率,2、易于分工合作,3、易于模块化调试测试。
模块化程序的副作用:1、可能会降低程序运行效率,2、设计的前期工作需要多花费时间。
可知选项B,C,D正确。
12、以下是正确C语言标识符的A) &3B) #3C) _3D) -3参考答案:CC语言合法标识名的命名规则是:(1)标识符由字母、数字和下划线组成,(2)第一个字符不能是数字只能是字母或下划线。
选项A的第一个字符为&,非法,选项B,第一个字符为#,非法,选项D,第一个字符为-,非法。
答案为选项C。
13、若有定义:int a,b,c; 以下程序段的输出结果是a=11; b=3; c=0;printf("%d\n",c=(a/b,a%b));A) 2B) 0C) 3D) 1参考答案:AC 语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。
逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。
也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。
因此c的值为a%b即11%3=2,故答案为A选项。
14、以下选项中合法的C语言常量是A) 'C-STR'B) 2014.1C) "\1.0D) 2EK参考答案:B所谓常量是指在程序运行的过程中,其值不能被改变的量。
在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。
选项A是字符串,但使用单引号,错误,选项C,D,为实型常量中指数形式,但指数形式e(E)之前必须是数字,之后必须为整数,错误。
故答案为B选项。
15、设有定义:int x,y,z;,且各变量已赋正整数值,则以下能正确表示代数式""的C语言表达式是()。
A) 1.0/x/y/zB) 1/x*y*zC) 1/(x*y*z)D) 1/x/y/(double)z参考答案:A代数表达式1/()x y z⋅⋅是小数,转为c语言的表达式必须是小数A选项由于1.0为浮点数,计算结果自动转换为浮点数,故A正确。
选项B,C,D的表达式均为0,因此只有选项A正确。
答案为A选项。
16、有以下程序#include <stdio.h>main(){ char a,b,c,d;scanf("%c%c",&a, &b);c=getchar();d=getchar();printf("%c%c%c%c\n",a,b,c,d);}当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是一个字符)12<CR>34<CR>则输出结果是A) 123B) 12C) 1234D) 1234参考答案:Ascanf()函数从标准输入输出中读入两个字符'1''2'分别赋给变量a、b,遇到回车自动结束,但回车符已经存入缓冲区,函数getchar()将从中接受这个字符,故c赋值为回车符,然后第二个getchar()读入字符'3',因此a='1',b='2',c=<CR>,d='3',故答案为A 选项。