1、二级 C+-215 及答案解析(总分:72.00,做题时间:90 分钟)一、选择题(总题数:40,分数:72.00)1.下面对静态数据成员的描述中,正确的是_。(分数:1.00)A.静态数据成员可以在类体内进行初始化B.静态数据成员不可,以被类的对象调用C.静态数据成员不能受 private 控制符的作用D.静态数据成员可以直接用类名调用2.有如下程序: #include iostream using namespace std; class AA int n; public: AA(int k):n(k) int get()return n; int get()constreturn n+1
2、; int main() AA a(5); const AA b(6); couta.get()b.get(); return 0; 执行后的输出结果是 _ 。(分数:2.00)A.55B.57C.75D.773.模板对类型的参数化提供了很好的支持,因此_。(分数:1.00)A.类模板的主要作用是生成抽象类B.类模板实例化时,编译器将根据给出的模板实参生成一个类C.在类模板中的数据成员都具有同样类型D.类模板中的成员函数都没有返回值4.有如下程序段: int i=1; int j=4; int main() int i=5; j+=i; coutijendl; 运行时的输出结果是(分数:1.0
3、0)A.14B.95C.59D.555.具有 3 个结点的二叉树有(分数:1.00)A.2 种形态B.4 种形态C.7 种形态D.5 种形态6.有下列程序: #include stdio.h #define N 4 void fun(int aN,int b) int i; for(i=0;iN,i+) bi=aii; void main() int xN=1,2,3,4,5,6,7,8,9.10, yN,i; fun(x,y); for(i=0;in;i+) printf(“%d,“,yi); printf(“/n“); 程序的运行结果是_。(分数:2.50)A.1,2,3,4,B.1,0,
4、7,0,C.1,4,5,9,D.3,4,8,10,7.将 E-R 图转换到关系模式时,实体与实体间的联系可以表示成_。(分数:1.00)A.属性B.关系C键D域8.有如下程序: #includeiostream using namespace std; void function2(int n); void function1(int n) if(n=0)return; function2(n-2); void function2(int n) if(n=0)return; function1(n-1); int main() function1(5); return 0; 下列关于程序运行情
5、况的描述中,正确的是_。(分数:2.00)A.function1 运行 1 次,function2 运行 2 次B.function1 运行 2 次,function2 运行 1 次C.function1 运行 2 次,function2 运行 3 次D.function1 运行 2 次,function2 运行 2 次9.程序中有如下语句 for(int i=0;i5;i+)cout*(p+i)“,“;能够依次输出 int 型一维数组 a的前 5 个元素。由此可知,变量 P 的定义及初始化语句是 _ 。(分数:2.00)A.int*p=a;B.int p=a;C.*p=a;D.p=a;10.
6、在深度为 7 的满二叉树中,叶子结点的个数为 _ 。(分数:2.00)A.32B.31C.64D.6311.若 MyClass 为一个类,执行“MyClass a4,*p5;”语句时会自动调用该类构造函数的次数是_。(分数:2.00)A.2B.5C.4D.912.C+中设置虚基类的目的是_。(分数:1.00)A.简化程序B.消除二义性C.提高运行效率D.实现数据的隐藏性13.有如下类声明: class SAMPLE int n; public: SAMPLE(int i=0):n(i) void setValue(int n0); ; 下列关于 getValue 成员函数的定义中,正确的是_。
7、(分数:1.00)A.SAMPLE: setValue(int n0) n=n0; B.void SAMPLE: setValue(int n0) n=n0;C.void setValue(int n0) n=n0;D.setValue(int n0) n=n0;14.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是(分数:2.00)A.int operator-(FunNumber);B.FunNumber operator-( );C.FunNumber operator-(int);D.int operator-(FunNumber,FunNumber);15.在数据库设
8、计中,将 E-R 图转换成关系数据模型的过程属于_。(分数:1.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段16.执行下列程序的结果是 main( ) float x=1,y; y=+x*+x; coutyendl; (分数:2.00)A.9.000000B.6.000000C.1.000000D.程序有错误17.下列关于赋值运算符“=”重载的叙述中,正确的是(分数:2.00)A.赋值运算符只能作为类的成员函数重载B.默认的赋值运算符实现了“深层复制”功能C.重载的赋值运算符函数有两个本类对象作为形参D.如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符18.下
9、列选项中属于 float 类型字面常量的是_。(分数:2.50)A.3.14B.3.14fC.3.14LD.0.0314E219.有如下程序: #includeiostream using namespace std; class Point int x,y; public: Point(int x1=0,int y1=0):x(x1),y(y1) int get()return x+y; ; class Circle Point center; int radius; public: Circle(int cx,int cy,int r):center(cx,cy),radius(r) in
10、t get()return center.get()+radius; ; int main() Circle c(3,4,5); coutc.get()endl; return 0; 运行时的输出结果是_。(分数:1.00)A.5B.7C.9D.1220.有如下类定义: class XX int xdata; public: XX(int n=0):xdata(n) ; class YY:public xx int ydata; public: YY(int m=0,int n=0):XX(m),ydata(n) ; YY 类的对象包含的数据成员的个数是_。(分数:2.50)A.1B.2C.3
11、D.421.关于静态数据成员的描述中正确的是(分数:1.00)A.类的静态数据成员不是类的所有对象共享的数据B.类的静态数据成员不能被类的成员函数调用C.类的静态数据成员不能被类的构造函数调用D.类的静态数据成员必须进行初始化22.下列关于运算符重载的叙述中,错误的是_。(分数:2.00)A.有的运算符可以作为非成员函数重载B.所有的运算符都可以通过重载而被赋予新的含义C.不得为重载的运算符函数的参数设置默认值D.有的运算符只能作为成员函数重载23.下列语句中,错误的是_。(分数:1.00)A.const int buffer=256;B.const double*point;C.int co
12、nst buffer=256;D.double*const point;24.有如下输出语句: coutsetw(5)fixedsetprecision(3)3.1415926; 此语句的输出结果是(分数:2.50)A.3.141B.3.142C.3.1415D.3.141625.下列关于类模板的模板参数的叙述中,错误的是 _ 。(分数:2.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型26.每个 C+程序都必须有且仅有一个 _ 。(分数:2.00)A.预处理命令B.函数C.语句D
13、.主函数27.下列叙述中错误的是_。(分数:2.50)A.在程序中凡是以“#”开始的语句行都是预处理命令行B.预处理命令行的最后不能以分号表示结束C.#define MAX 是合法的宏定义命令行D.C 程序中预处理命令行的处理是在程序执行的过程中进行的28.有如下程序: #includeiostream using namespace std; class MyClass putdic: MyClass(int i=0)cout1; MyClass(const MyClass MyClassreturn*this; MyClass()cout4; ; int main() MyClass ob
14、j1(1),obj2(2),obj3(obj1); return 0; 运行时的输出结果是_。(分数:2.50)A.112444B.11114444C.121444D.1131444429.下列关于模板的描述中,错误的是_。(分数:3.00)A.类模板的成员函数都是模板函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键字 typename 声明30.下列程序的运行结果为 #includeiostream.h void main( ) int a2; int ba1; cout a/b endl; ) 0.66667 ) 0 ) 0.7 ) 0.666
15、66666 (分数:2.00)A.B.C.D.31.以下选项中,不能正确赋值的是 _ 。(分数:2.00)A.char s110;s1=“Ctest“;B.char s2=“C“,“t“,“e“,“s“,“t“);C.char s320=“Ctest“;D.char* s4=“Ctest/n“;32.有如下程序: #includeiostream using namespace std; class A public: A(int i=0):r1(i) void print()cout“E“R1“-“; void print() constcout“C“R1*R1“-“; void print
16、(int x) cout“P“R1*R1*R1“-“; private: int r1; ; int main() A a1; const A a2(4); a1.print(2); a2.print(); return 0; 运行时的输出结果是_。(分数:2.50)A.P8-E4B.P8-C16-C.P0-E4-D.P0-C16-33.函数定义为 Fun(int B.fun(20+n);C.fun(n);D.funD( class AA int k; protected: int n; void setK(int k) this-k=k; public: void setN(int n) t
17、his-n=n; ; class BB: public AA /*类体略*/; int main() BB x; x. n=1:/1 x. setN(2);/2 x. k=3:/3 x. setK(4);/4 return 0; 在标注号码的四条语句中正确的是_。(分数:1.00)A.1B.2C.3D.436.在下列链表中,能够从任意一个结点出发直接访问到所有结点的是_。(分数:2.50)A.单链表B.循环链表C.双向链表D.二叉链表37.有如下程序: #includeiostream using namespace std; int main() cout.fill(“*“); cout.w
18、idth(6); cout.fill(“#“); cout888endl; return 0; 的执行结果是_。(分数:2.50)A.#888B.888#C.*888D.888*38.数据库设计的根本目标是要解决_。(分数:2.50)A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护39.设有 int x11;,则表达式(x+*2/3)的值是 _ 。(分数:2.00)A.7B.8C.11D.1240.下列叙述中正确的是(分数:1.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令
19、二级 C+-215 答案解析(总分:72.00,做题时间:90 分钟)一、选择题(总题数:40,分数:72.00)1.下面对静态数据成员的描述中,正确的是_。(分数:1.00)A.静态数据成员可以在类体内进行初始化B.静态数据成员不可,以被类的对象调用C.静态数据成员不能受 private 控制符的作用D.静态数据成员可以直接用类名调用 解析:解析 静态数据成员必须在类体外初始化,它是类的所有对象的共有成员,需要使用类名调用,静态数据成员的初始化与权隈控制无关。2.有如下程序: #include iostream using namespace std; class AA int n; pub
20、lic: AA(int k):n(k) int get()return n; int get()constreturn n+1; int main() AA a(5); const AA b(6); couta.get()b.get(); return 0; 执行后的输出结果是 _ 。(分数:2.00)A.55B.57 C.75D.77解析:3.模板对类型的参数化提供了很好的支持,因此_。(分数:1.00)A.类模板的主要作用是生成抽象类B.类模板实例化时,编译器将根据给出的模板实参生成一个类 C.在类模板中的数据成员都具有同样类型D.类模板中的成员函数都没有返回值解析:解析 此题考查了类模板
21、的概念。在定义对象的过程中,系统会自动地根据需要生成相应的类定义,这种依据类模板生成具体类的过程称为类模板的实例化。4.有如下程序段: int i=1; int j=4; int main() int i=5; j+=i; coutijendl; 运行时的输出结果是(分数:1.00)A.14B.95C.59 D.55解析:解析 main 函数中的局部变量 i 屏蔽了全局变量的 i,即在 main 函数中的 i 取值为 5,所以j=4+5=9,输出结果为 59,答案为 C 选项。5.具有 3 个结点的二叉树有(分数:1.00)A.2 种形态B.4 种形态C.7 种形态D.5 种形态 解析:解析
22、考查二叉树的基础知识。 解题要点 具有 3 个结点的二叉树具有以下的几种形态: 6.有下列程序: #include stdio.h #define N 4 void fun(int aN,int b) int i; for(i=0;iN,i+) bi=aii; void main() int xN=1,2,3,4,5,6,7,8,9.10, yN,i; fun(x,y); for(i=0;in;i+) printf(“%d,“,yi); printf(“/n“); 程序的运行结果是_。(分数:2.50)A.1,2,3,4,B.1,0,7,0, C.1,4,5,9,D.3,4,8,10,解析:解
23、析 本题考查数组的初始化,在对二维数组元素赋初值时,如果只对部分元素赋初值,那未赋初值的元素自动取 0。fun 函数是将二维数组 a 中主对角线上的元素赋给数组 b,所以 y4=1,0,7,0。7.将 E-R 图转换到关系模式时,实体与实体间的联系可以表示成_。(分数:1.00)A.属性B.关系 C键D域解析:解析 将 E-R 图转换成指定 RDBMS 中的关系模式是数据库逻辑设计的主要工作。从 E-R 图到关系模式的转换是比较直接的,实体和联系都可以表示成关系。8.有如下程序: #includeiostream using namespace std; void function2(int
24、n); void function1(int n) if(n=0)return; function2(n-2); void function2(int n) if(n=0)return; function1(n-1); int main() function1(5); return 0; 下列关于程序运行情况的描述中,正确的是_。(分数:2.00)A.function1 运行 1 次,function2 运行 2 次B.function1 运行 2 次,function2 运行 1 次C.function1 运行 2 次,function2 运行 3 次D.function1 运行 2 次,f
25、unction2 运行 2 次 解析:解析 在主函数中执行 function1(5)时,会调用 function2(3),function2(3)又会调用function1(2),function1(2)又会调用 function2(0),到此相互调用结束。所以 function1()和function2()各执行了 2 次。9.程序中有如下语句 for(int i=0;i5;i+)cout*(p+i)“,“;能够依次输出 int 型一维数组 a的前 5 个元素。由此可知,变量 P 的定义及初始化语句是 _ 。(分数:2.00)A.int*p=a; B.int p=a;C.*p=a;D.p=a
26、;解析:解析 从循环语句中可以看出,是在 04 的循环中输出数组 a 中的前,5 个元素,输出的值为*(p+i),即为指针 p 向后移动指向的元素。所以初始化要将指针 p 指向数组 a,即 int*P=a;。10.在深度为 7 的满二叉树中,叶子结点的个数为 _ 。(分数:2.00)A.32B.31C.64 D.63解析:11.若 MyClass 为一个类,执行“MyClass a4,*p5;”语句时会自动调用该类构造函数的次数是_。(分数:2.00)A.2B.5C.4 D.9解析:解析 语句 MyClass a4,*p5不仅定义了 4 个 MyClass 对象,分别为 a0,a1,a2,a3
27、,而且定义了 5 个指向 MyClass 对象的指针变量,分别为*p0,*p1,*p2,*p3,*p4,所以共调用MyClass 的构造函数 4 次。12.C+中设置虚基类的目的是_。(分数:1.00)A.简化程序B.消除二义性 C.提高运行效率D.实现数据的隐藏性解析:解析 多重继承的派生类有可能从两个或多个基类中继承同名成员,对该成员不加限定的访问就会造成二义性,虚基类就是为了解决这个二义性问题,无论该类在派生层次中作为虚基类出现多少次,都只继承一个共享的基类子对象,从而消除二义性。答案选 B 选项。13.有如下类声明: class SAMPLE int n; public: SAMPLE
28、(int i=0):n(i) void setValue(int n0); ; 下列关于 getValue 成员函数的定义中,正确的是_。(分数:1.00)A.SAMPLE: setValue(int n0) n=n0; B.void SAMPLE: setValue(int n0) n=n0; C.void setValue(int n0) n=n0;D.setValue(int n0) n=n0;解析:解析 本题考查在类外定义类的成员函数,需要使用作用域限定符“:”,属于基础知识,本题答案为 B。14.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是(分数:2.00)A.i
29、nt operator-(FunNumber);B.FunNumber operator-( );C.FunNumber operator-(int);D.int operator-(FunNumber,FunNumber); 解析:解析 运算符重载,“-”号是单目运算符,而 D 被重载为双目运算符,所以为错误的。15.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于_。(分数:1.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段 D.物理设计阶段解析:解析 E-R 图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。16.执行下列程序
30、的结果是 main( ) float x=1,y; y=+x*+x; coutyendl; (分数:2.00)A.9.000000 B.6.000000C.1.000000D.程序有错误解析:解析 本题比较简单,考查自增运算符的运算规则以及运算符优先级的知识点。自增运算符的优先级高于乘法运算符的优先级。17.下列关于赋值运算符“=”重载的叙述中,正确的是(分数:2.00)A.赋值运算符只能作为类的成员函数重载 B.默认的赋值运算符实现了“深层复制”功能C.重载的赋值运算符函数有两个本类对象作为形参D.如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符解析:18.下列选项中属于 float
31、 类型字面常量的是_。(分数:2.50)A.3.14B.3.14f C.3.14LD.0.0314E2解析:19.有如下程序: #includeiostream using namespace std; class Point int x,y; public: Point(int x1=0,int y1=0):x(x1),y(y1) int get()return x+y; ; class Circle Point center; int radius; public: Circle(int cx,int cy,int r):center(cx,cy),radius(r) int get()r
32、eturn center.get()+radius; ; int main() Circle c(3,4,5); coutc.get()endl; return 0; 运行时的输出结果是_。(分数:1.00)A.5B.7C.9D.12 解析:解析 简单类之间继承关系的调用,按照通常做法便可以得到答案。center.get()函数调用后,3 和 4 的和被返回,接着再调用 Circle 类的 radius 成员变量 5 相加后得到 12。20.有如下类定义: class XX int xdata; public: XX(int n=0):xdata(n) ; class YY:public xx
33、 int ydata; public: YY(int m=0,int n=0):XX(m),ydata(n) ; YY 类的对象包含的数据成员的个数是_。(分数:2.50)A.1B.2 C.3D.4解析:解析 派生类中的成员包括从基类继承过来的成员和自己增加的成员两大部分。其中,从基类继承的私有成员是不能直接访问的。题中,派生类 YY 除了增加的成员 ydata,还包含从基类继承的 xdata。故答案选 B。21.关于静态数据成员的描述中正确的是(分数:1.00)A.类的静态数据成员不是类的所有对象共享的数据B.类的静态数据成员不能被类的成员函数调用C.类的静态数据成员不能被类的构造函数调用D
34、.类的静态数据成员必须进行初始化 解析:解析 C+类中的静态成员变量是该类中所有对象所共有的,它能够被类中的任何函数调用,所以选项 A,选项 B,选项 C 是错误的。而类的静态数据成员是必须要进行初始化才能使用的。22.下列关于运算符重载的叙述中,错误的是_。(分数:2.00)A.有的运算符可以作为非成员函数重载B.所有的运算符都可以通过重载而被赋予新的含义 C.不得为重载的运算符函数的参数设置默认值D.有的运算符只能作为成员函数重载解析:解析 “运算符重载”是针对 C+中原有运算符进行的,不可能通过重载创造新的运算符。除了*,.*,-*,:,?:,这五个运算符以外,其他运算符都可以重载。23
35、.下列语句中,错误的是_。(分数:1.00)A.const int buffer=256;B.const double*point;C.int const buffer=256;D.double*const point; 解析:解析 const 是一个 C+关键字,用于限定不允许改变的变量。选项 B 是指向常量的指针,定义时可以不初始化;选项 D 是指针常量,定义时必须初始化。故答案为 D。24.有如下输出语句: coutsetw(5)fixedsetprecision(3)3.1415926; 此语句的输出结果是(分数:2.50)A.3.141B.3.142 C.3.1415D.3.1416
36、解析:25.下列关于类模板的模板参数的叙述中,错误的是 _ 。(分数:2.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型 解析:26.每个 C+程序都必须有且仅有一个 _ 。(分数:2.00)A.预处理命令B.函数C.语句D.主函数 解析:解析 一个 C+程序一般由预处理命令、输入输出、函数、语句、变量这几个基本部分组成。但是,每个 C+程序都必须有且仅有一个主程序。27.下列叙述中错误的是_。(分数:2.50)A.在程序中凡是以“#”开始的语句行都是预处理命令行B.预处理命令行的
37、最后不能以分号表示结束C.#define MAX 是合法的宏定义命令行D.C 程序中预处理命令行的处理是在程序执行的过程中进行的 解析:解析 预处理命令是以“#”开始的语句,每一条预处理命令必须单独占用一行,由于不是 C 语言的语句,并且命令行的最后不能以分号表示结束,定义格式为“#de-fine 标识符字符串”,预处理命令行是系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。28.有如下程序: #includeiostream using namespace std; class MyClass putdic: MyClass(int i=0)cout1; MyClass(cons
38、t MyClass MyClassreturn*this; MyClass()cout4; ; int main() MyClass obj1(1),obj2(2),obj3(obj1); return 0; 运行时的输出结果是_。(分数:2.50)A.112444 B.11114444C.121444D.11314444解析:解析 本题考查构造函数重载及析构函数调用。题中,生成的对象 obj1 和 obj2 调用第 1 个构造函数,输出两个 1;obj3 调用第 2 个构造函数,输出 2。撤消对象时,析构函数调用顺序与构造函数刚好相反。依次撤消对象 obj3、obj2 和 obj1,输出三个
39、 4。故最终的输出结果为:112444。29.下列关于模板的描述中,错误的是_。(分数:3.00)A.类模板的成员函数都是模板函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键字 typename 声明 解析:解析 同一模样的声明和定义中,模板形参的名字不必相同。每个模板类型形参前面必须带上关键字 typename/class,每个非类型形参前面必须带上类型名字。30.下列程序的运行结果为 #includeiostream.h void main( ) int a2; int ba1; cout a/b endl; ) 0.66667 ) 0 ) 0
40、.7 ) 0.66666666 (分数:2.00)A.B. C.D.解析:解析 表达式值的类型是由操作数的类型决定的,因为本题的两个数都是 int 型的,所以得出的结果也为 int 型,即去掉小数点后的部分,只取商的整数部分。31.以下选项中,不能正确赋值的是 _ 。(分数:2.00)A.char s110;s1=“Ctest“; B.char s2=“C“,“t“,“e“,“s“,“t“);C.char s320=“Ctest“;D.char* s4=“Ctest/n“;解析:32.有如下程序: #includeiostream using namespace std; class A pu
41、blic: A(int i=0):r1(i) void print()cout“E“R1“-“; void print() constcout“C“R1*R1“-“; void print(int x) cout“P“R1*R1*R1“-“; private: int r1; ; int main() A a1; const A a2(4); a1.print(2); a2.print(); return 0; 运行时的输出结果是_。(分数:2.50)A.P8-E4B.P8-C16-C.P0-E4-D.P0-C16- 解析:解析 创建 a1 对象时,调用无参构造函数,因为 A(int i=0)
42、的参数是默认的所以创建 a1 时调用此函数,i=0;创建常对象 a2 时,调用构造函数 i=4;执行 a1.print(2)调用含参构造函数,输出 P0-,执行 a2.print()语句,因为 a2 是常对象,只能凋用常成员函数输出 C16-,答案为 D。33.函数定义为 Fun(int B.fun(20+n);C.fun(n); D.funD( class AA int k; protected: int n; void setK(int k) this-k=k; public: void setN(int n) this-n=n; ; class BB: public AA /*类体略*/
43、; int main() BB x; x. n=1:/1 x. setN(2);/2 x. k=3:/3 x. setK(4);/4 return 0; 在标注号码的四条语句中正确的是_。(分数:1.00)A.1B.2 C.3D.4解析:解析 本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。所以本题中 n、k 和 setK 变为了派生类的保护成员,不能直接使用,即 1、3、4 错误,所以 B 选项正确。36.在下列链表中,能够从任意一个结点出发直接访问到所有结点的是_。(分数:2.50)A.单链表B.循环链表 C.
44、双向链表D.二叉链表解析:解析 由于线性单链表的每个结点只有一个指针域,由这个指针只能找到其后件结点,但不能找到其前件结点。也就是说,只能顺着之后向链尾方向进行扫描,因此必须从头指针开始,才能访问到所有的结点。循环链表的最后一个结点的指针域指向表头结点,所有结点的指针构成了一个环状链,只要指出表中任何一个结点的位置就可以从它出发访问到表中其他所有的结点。双向链表中的每个结点设置有两个指针,一个指向其前件,另一个指向其后件,这样从任意一个结点开始,既可以向前查找,也可以向后查找,在结点的访问过程中一、般从当前结点向链尾方向扫描,如果没有找到,则从链尾向头结点方向扫描,这样部分结点就要被遍历两次,
45、因此不符合题意。二叉链表是二叉树的一种链式存储结构,每个结点有两个指针域,分别指向左右子结点,可见,二叉链表只能由根结点向叶子结点的方向遍历。37.有如下程序: #includeiostream using namespace std; int main() cout.fill(“*“); cout.width(6); cout.fill(“#“); cout888endl; return 0; 的执行结果是_。(分数:2.50)A.#888 B.888#C.*888D.888*解析:解析 C+在流操作中,利用 cout 对象的 width 属性设置输出字符的宽度,用 fill 函数来设置需要
46、填充的字符。题目程序中,首先设置填充字符为*,输出宽度为 6,但在输出前又设置了填充字符为#,所以在输出时,其填充字符为#,由于 888 不足 6 个字符,所以在前面以三个“#”来填充。38.数据库设计的根本目标是要解决_。(分数:2.50)A.数据共享问题 B.数据安全问题C.大量数据存储问题D.简化数据维护解析:解析 从数据库的概念中可以看到,所谓数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。因此进行数据库设计的根本目标还是为了解决数据共享问题。39.设有 int x11;,则表达式(x+*2/3)的值是 _ 。(分数:2.00)A.7 B.8C.11D.12解析:解析 当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增 1,所以表达式(x+*2/3)相当于(11*2/3)取整后为 7。40.下列叙述中正确的是(分数:1.00)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:解析 软件生命周期分为软件定义、软件开发及软件运行维护 3 个阶段。维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大