(1) 算法的空间复杂度是指______。
A. 算法程序的长度
B. 算法程序中的指令条数
C. 算法程序所占的存储空间
D. 算法执行过程中所需要的存储空间
[答案]D
[考点]程序设计基础
[评析]
时间复杂度:在运行算法时所耗费的时间为f(n)(即 n的函数)。
空间复杂度:实现算法所占用的空间为g(n)(也为n的函数)。
算法为什么会占用存储存空间?
主要是内存空间,因为算法中的变量、地址等等通常保存在内存中(如果在虚存、缓存,甚至已在CPU中运行,也算占用了存储空间)。
(2) 下列关于栈的叙述中正确的是______。
A. 在栈中只能插入数据
B. 在栈中只能删除数据
C. 栈是先进先出的线性表
D. 栈是先进后出的线性表
[答案]D
[考点]数据结构与算法
[评析]
此题为基本概念,必记,注意:队列是先进先出的线性表,结合起来记不要搞混。
(3) 在深度为5的满二叉树中,叶子结点的个数为______。
A. 1
B. 11
C. 16
D. 15
[答案]C
[考点]数据结构与算法
[评析]
首先搞清楚满二叉树与完全二叉树之间的区别,前面已解释过。
依次从上到下,可得出:
第1层结点数为1;
第层结点数为*1=;
第1层结点数为*=4;
第n层结点数为的n-1次幂,如图所示
(4) 对建立良好的程序设计风格,下面描述正确的是______。
A. 程序应简单、清晰、可读性好
B. 符号名的命名要符合语法
C. 充分考虑程序的执行效率
D. 程序的注释可有可无
[答案]A
[考点]程序设计基础
[评析]
结构化程序设计中力求程序的可读性(如代码清晰,结构明了,附加注释……),故D错;
如果程序写的都是错的,谈何风格?如果符号名的命名不符合语法,编译会报错,也是很基本的错误,B错;
追求程序的可读性要高于执行效率,C错。
(5) 下面对对象概念描述错误的是______。
A. 任何对象都必须有继承性
B. 对象是属性和方法的封装体
C. 对象间的通讯靠消息传递
D. 操作是对象的动态性属性
[答案]A
[考点]程序设计基础
[评析]
此题为基本概念,必记!这里举几个例子说明以助大家理解:
比如
VB:
Command按纽类是个类,在窗体上画一个名为Command1的按纽即是创建该类的一个实例,也可创建另外一个实例如Command,他们的属性可以调置为不同的,但是都是Command类的实例。Command1,Command都是对象,它们封装了属性和方法,都是封装体,比如Name属性,Caption属性……宏观上可说Command1的Move操作是动态属性,对象间的通读靠消息传递,比如在Command1的单击事件中写上:
Picture1.Print "消息传递"
Picture1是一个图片框对象,我们还可以调用Form_Load事件等等,都是通过消息传递的,即对象A向对象B发出消息,对象B执行怎样的操作。
C++:
class Base
{
Public:
Base(){}
~Base(){}
...
};
class Derive:Public Base
{
Public:
...
Print()
{
Cout<<"打印函数!"< }
};
void main()
{
Derive a;
Base *p;
...
}
Base为基类,Derive为基类上的派生类,它继承了基类的一些属性和方法等,a为创建的实例,即是一个对象,它封装了类Derive的所有性性和方法,特别是私有的属性和方法,直接调用它们会失败,这就是类的封装性。对象间的通讯是靠消息传递的,比如我们在内存中删除p所指的一个对象,用delete p语句,会调用类Base的析构函数~Base();我们也可用a.Print()语句来调用Derive类的Print()函数,对象a具有类Derive的属性和方法(在C++中一般用函数来实现,比如Print(),我们可以说这操作是对象a的动态属性)