1、二级 C+笔试-395 及答案解析(总分:84.00,做题时间:90 分钟)一、选择题(总题数:35,分数:57.00)1.下面对对象概念描述正确的是( )。A任何对象都必须有继承性 B对象是属性和方法的封装体C对象间的通信靠文本传递 D操作是对象的静态属性(分数:2.00)A.B.C.D.2.结构化程序设计的核心和基础是( )。A) 结构化分析方法 B) 结构化设计方法C) 结构化设计理论 D) 结构化编程方法(分数:2.00)A.B.C.D.3.有下列程序:#includestdio.hvoid main()FILE *f;f=fopen(“filea.txt“,“w“);fprintf(
2、f,“abc“);fclose(f);若文本文件 filea.txt中原有内容 hello,则运行以上程序后,文件 filea.txt中的内容为( )。AheIioabc Babclo Cabc Dabchello(分数:2.00)A.B.C.D.4.下面关于对象概念的描述中,错误的是A) C+中的对象就是 C语言中的结构变量B) 对象代表着正在创建的系统中的一个实体C) 对象是一个状态和操作(或方法)的封装体D) 对象之间的信息传递是通过消息进行的(分数:2.00)A.B.C.D.5.下列叙述中,不属于软件需求规格说明书的作用的是A) 便于用户、开发入员进行理解和交流B) 反映出用户问题的结
3、构,可以作为软件开发工作的基础和依据C) 作为确认测试和验收的依据D) 便于开发入员进行需求分析(分数:1.00)A.B.C.D.6.下面程序的运行结果是 _。#includeiostream.hclass Apublicvirtual、() cout”call A: A()”end1;class B:public AB(int i)p=new chari:-B()delete)p;Cout”call B: B()”;;void main() A*a=new B(8);Delete a;A) call B: B() B) call B: B()C) call A:A() D) call A:A
4、()(分数:2.00)A.B.C.D.7.设 R是一个二元关系,S 是一个三元关系,则下列运算中正确的是( )。AR-S BRS CRS DRS(分数:2.00)A.B.C.D.8.下面程序的输出结果是 #includeiostream.h#includestring.hvoid main( )char p110,p210strcpy(p1,“abc“);strcpy(p2,“ABC“);char str50=“xyz“;strcpy(str+2,strcat(p1,p2);coutstr;A) xyzabcABC B) zabcABC C) xyabcABC D) yzabcABC(分数:1
5、.00)A.B.C.D.9.可行性研究要进行一次( )需求分析。A深入的 B详尽的C彻底的 D简化的、压缩的(分数:2.00)A.B.C.D.10.两个变量定义不能同名,是因为( )。A这两个变量定义在同一文件中B这两个变量定义在同一作用域中C一个定义在 main函数中,一个定义在子函数中D以上说法均不正确(分数:1.00)A.B.C.D.11.下列关于顺序存储结构叙述中错误的是( )。A存储密度大B逻辑上相邻的结点物理上不必相邻C可以通过计算直接确定第 i个结点的存储地址D插入、删除运算操作不方便(分数:2.00)A.B.C.D.12.不合法的 main函数命令行参数表示形式是A)main(
6、inta,char*c) B)main(int arc,char * * arv)C)main(int argc,char * argv) D)main(int argv,char * argc)(分数:1.00)A.B.C.D.13.树是结点的集合,它的根结点的数目是( )。A) 有且只有 1个 B) 1 或多于 1 C) 0或 1 D) 至少有 2个(分数:2.00)A.B.C.D.14.若有说明:int 34=0;则下面叙述正确的( )。A只有元素 s00可得到初值 0B此说明语句不正确C数组 s中各个元素都可得到初值,但其值不一定为 0D数组 s中每个元素均可得到初值 0(分数:1.0
7、0)A.B.C.D.15.在 C+中,打开一个文件,就是将这个文件与一个( )建立关联;关闭一个文件,就是取消这种关联。A类 B流 C对象 D结构(分数:1.00)A.B.C.D.16.若一棵二叉树具有 10个度为 2的结点,则该二叉树的度为 0的结点个数是 _。A) 9 B) 11C) 12 D) 不确定(分数:2.00)A.B.C.D.17.以下选项中合法的用户标识符是A) long B) _2 Test C) 3 Dmax D) A,dat(分数:2.00)A.B.C.D.18.下列程序的输出结果是#includeclass Myclass public:Myclass(int i=0,
8、intj=0)x=i;y=j;void show( ) cout “x=“ x “ “ “y=“ y end1;void show( )const cout “x=“ “ “ “y= y end1;privated:int x; int y;void main( )Myclass my1(3,4);const my2(7,8);my1show( );my2show( );A) x=4,y=3;x=7,y=8 B) x=3,y=4;x=7,y=8C) x=7,y=8;x=4,y=3 D) x=8,y=7;x=7,y=8(分数:1.00)A.B.C.D.19.进行文件操作时需要包含( )文件。Al
9、ostream.h Bfstream.hCstdio.h DstidliB.h(分数:1.00)A.B.C.D.20.C+源晚间中包含的输入/输出头文件为( )。Astdio.h Bstdafx.h Ciostream.h Dstream.h(分数:1.00)A.B.C.D.21.有如下程序:#include iostreamusing namespace std;class Basepublic:void fun()( cout“Base:fun“endl;class Derived: public Basepublic:void fun()_cout“Derived:fun“endl;in
10、t main()Derived d;Dfun();return 0;已知其执行后的输出结果为:Base:funDerived:fun则程序中下划线处应填入的语句是( )。ABase.fun(); BBase:fun();CBase-fun(); Dfun();(分数:2.00)A.B.C.D.22.下列数据结构中,属于非线性结构的是( )。A循环队列 B带链队列C二叉树 D带链栈(分数:2.00)A.B.C.D.23.下列语句不能够用于打开 C根目录下文件 testtxt 的语句是A) ifstream fin;finopen(“C:/testtxt“); B) ifstream fin(“C
11、:/testtxt“);C) )和)D) ifstream fin;fin(“C:/testtxt“);(分数:1.00)A.B.C.D.24.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指 A) 数据与程序独立存放 B) 不同的数据被存放在不同的文件中 C) 不同的数据只能被对应的应用程序所使用 D) 以上 3种说法都不对(分数:2.00)A.B.C.D.25.有下列程序,在横线添加;#includeiostreamusing namespace std;class TestClasspublic:TestClass(int n)number=n;_/拷贝构造函数TestClass
12、()private:int number;TestClass fun(TestClass p)TestClass temp(P);return temp;int main()TestClsss obj1(10),obj2(0);TestClass obj3(obj1);obj2=fun(obj3);return 0;A) TestClass(TestClass B) TestClass(TestClass other)number=other.number;C) TestClass(TestClass D) TestClass((分数:2.00)A.B.C.D.26.以下关于虚函数的叙述中不正
13、确的是A) 虚函数属于成员函数 B) 虚函数不允许说明成静态的C) 凡是虚函数必须用 virtual说明 D) 虚函数可以被继承(分数:2.00)A.B.C.D.27.下列对于软件测试的描述中正确的是( )。A软件测试的目的是证明程序是否正确B软件测试的目的是使程序运行结果正确C软件测试的目的是尽可能多地发现程序中的错误D软件测试的目的是使程序符合结构化原则(分数:2.00)A.B.C.D.28.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和( )。A编码设计 B测试阶段C运行阶段 D物理设计(分数:2.00)A.B.C.D.29.下列程序的执行结果为#includeiostream.
14、hvoid main( ) int a3,b0;int * pba;cout * p “,“ b endl;A) 3,4 B) 4,3 C) 3,4 D) 4,4(分数:2.00)A.B.C.D.30.语句 ofstream f(“SALARYDAT“,iosappiosbinary);的功能是建立流对象 f,试图打开文件SALARYDAT 并与之连接,并且A)若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B)若文件存在,将其置为空文件;若文件不存在,打开失败C)若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D)若文件存在,打开失败;若文件不存在,建立一
15、个新文件(分数:1.00)A.B.C.D.31.下列是模板声明的开始部分,其中正确的是A) templateT B) templateclassT1,T2C) templateclassT1,classT2 D) templateclassT1;classT2(分数:2.00)A.B.C.D.32.下列关于 this指针的叙述中,正确的是A) this指针是一个隐含指针,它隐含于类的成员函数中B) 只有在使用 this时,系统才会将对象的地址赋值给 thisC) 类的友元函数也有 this指针D) this指针表示了成员函数当前操作的数据所属的对象(分数:1.00)A.B.C.D.33.以下
16、for语句中不是死循环的是( )。Afor(int i=0;i1;+i); Bfor(int i=0;+i);Cfor(int i=1;i0;+i); Dfor(;);(分数:2.00)A.B.C.D.34.在深度为 7的满二叉树中,叶子结点的个数为( )。A32 B31C64 D63(分数:2.00)A.B.C.D.35.若执行下面的程序时,从键盘上输入 5和 2,则输出结果是#includeiostream.hvoid main( )int a,b,k;cin a b; k=a;if(ab) k=a%b;elsek=b%a;cout k endl;A) 5 B) 3 C) 2 D) 0(分
17、数:1.00)A.B.C.D.二、填空题(总题数:15,分数:27.00)36.在面向对象程序设计中,从外面只能看到对象的外部特征,而不知道无需知道数据的具体结构以及实现操作的算法,这称为对象的 1。(分数:2.00)填空项 1:_37.非成员函数必须声明为类的 1 才能访问这个类的 private成员。(分数:2.00)填空项 1:_38.C+中,设置虚基类的目的是 【11】 。(分数:1.00)填空项 1:_39.下面程序的运行结果是 【8】 和 【9】 。#includeiostreamh#define N 10#defines(x)X*X#define f(x)(X*X)void ma
18、in()int il,i2;i1=1000/s(N);i2=1000/f(N);cout i1 “ “ i2;(分数:1.00)填空项 1:_40.下面程序的结果为_。#includeiostream.hvoid main()int a=1,b=2;bool c=1;if(ab)|c)cout“true“end1;elsecout“false“end1;(分数:2.00)填空项 1:_41.虚函数必须是类的 1。(分数:2.00)填空项 1:_42.在面向对象的程序设计中,将数据和处理数据的操作封装成一个整体就定义了一种事物的类型,称作“类”。类是一种抽象的概念,属于该类的一个实例叫做“ 【6
19、】 ”。(分数:2.00)填空项 1:_43.下面程序的输出结果是 1。#define MIN(a,b) (a)(b)?a:b)#include iostream.hvoid main2int x= 3, y=5;cout MIN(x,y)end1;(分数:2.00)填空项 1:_44.有如下关系:学生(学号,姓名,性别,专业号,年龄),将属性年龄的取值范围定义在 0-120之间符合 5 。(分数:2.00)填空项 1:_45.数据的逻辑结构有线性结构和 两大类。(分数:2.00)填空项 1:_46.有如下的类模板定义:templatetypenameTYPEclassMyClassTYPE
20、n;public:MyClass(TYPE k);其中构造函数 MyClass用的值初始化数据成员 n。因此在模板类体外,构造函数 MyClass应定义_。(分数:1.00)填空项 1:_47.软件工程三要素包括方法、工具和过程,其中, 1 支持软件开发的各个环节的控制和管理。(分数:2.00)填空项 1:_48.表达式“c3=c1.operator+(c2)”或“c3=operator+(c1,c2)”还可以表示为 1。(分数:2.00)填空项 1:_49.设置虚基类的目的是解决二义性问题,通过用关键字 【9】 表示虚基类。(分数:2.00)填空项 1:_50.下列程序中需要清理动态分配的数
21、组,划线处应有的语句是_。#includeiostream, hclass personint age, tall;public:person() age= 0; tall= 40; cout“A baby is born. “end1;person(int i) age=i, tall=40, cout“A old person. “end1;person(int i, int i) age = i; tall = j; cout “ a old person with tall. “end1;person( ) cout“ person dead. “end 1;void show()co
22、ut“age= “age“ ,tall= “tallend1;void main()person * ptr;ptr = new person3;ptr0=person ( )ptr1=person(18);ptr2=person(20,120);for(int i=0;i3; i+)ptri. show( );_(分数:2.00)填空项 1:_二级 C+笔试-395 答案解析(总分:84.00,做题时间:90 分钟)一、选择题(总题数:35,分数:57.00)1.下面对对象概念描述正确的是( )。A任何对象都必须有继承性 B对象是属性和方法的封装体C对象间的通信靠文本传递 D操作是对象的静态
23、属性(分数:2.00)A.B. C.D.解析:2.结构化程序设计的核心和基础是( )。A) 结构化分析方法 B) 结构化设计方法C) 结构化设计理论 D) 结构化编程方法(分数:2.00)A.B.C. D.解析:解析 结构化程序设计的核心和基础是结构化设计理论,其中包括结构化分析方法、结构化设计方法和结构化编程方法。3.有下列程序:#includestdio.hvoid main()FILE *f;f=fopen(“filea.txt“,“w“);fprintf(f,“abc“);fclose(f);若文本文件 filea.txt中原有内容 hello,则运行以上程序后,文件 filea.tx
24、t中的内容为( )。AheIioabc Babclo Cabc Dabchello(分数:2.00)A.B.C. D.解析:解析 把字符串 abc以只写的方式写入到文件 filea.txt中,覆盖掉原有的字符串 hello。4.下面关于对象概念的描述中,错误的是A) C+中的对象就是 C语言中的结构变量B) 对象代表着正在创建的系统中的一个实体C) 对象是一个状态和操作(或方法)的封装体D) 对象之间的信息传递是通过消息进行的(分数:2.00)A. B.C.D.解析:解析 本题考核对象的概念。 C+中的对象与 C语言中的结构变量是不一样的。对象是某一类类型的变量,而结构变量是结构类型的变量。同
25、时 C+对 C的结构有了扩展,结构可以和类一样使用。结构除了可以包含数据成员外,还可以包含成员函数;成员也可以加上 public、private 和 protected访问控制;结构之间也可以继承。两者惟一的不同之处是,结构中的成员默认是公有的,结构的继承默认是公有的,而类的继承默认是私有的,类的成员默认也是私有的5.下列叙述中,不属于软件需求规格说明书的作用的是A) 便于用户、开发入员进行理解和交流B) 反映出用户问题的结构,可以作为软件开发工作的基础和依据C) 作为确认测试和验收的依据D) 便于开发入员进行需求分析(分数:1.00)A.B.C.D. 解析:解析 软件需求规格说明书(SRS,
26、Soft ware Requirement Specification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用:便于用户、开发人员进行理解和交流;反映出用户伺题的结构,可以作为软件开发工作的基础和依据;作为确认测试和验收的依据。6.下面程序的运行结果是 _。#includeiostream.hclass Apublicvirtual、() cout”call A: A()”end1;class B:public AB(int i)p=new chari:-B()delete)p;Cout”call B: B()”;;void main() A*a=new
27、B(8);Delete a;A) call B: B() B) call B: B()C) call A:A() D) call A:A()(分数:2.00)A. B.C.D.解析:7.设 R是一个二元关系,S 是一个三元关系,则下列运算中正确的是( )。AR-S BRS CRS DRS(分数:2.00)A.B. C.D.解析:解析 关系的交()、并()和差(-)运算要求两个关系是周元的,显然作为二元的 R和三元 S只能做笛卡尔积运算。8.下面程序的输出结果是 #includeiostream.h#includestring.hvoid main( )char p110,p210strcpy(
28、p1,“abc“);strcpy(p2,“ABC“);char str50=“xyz“;strcpy(str+2,strcat(p1,p2);coutstr;A) xyzabcABC B) zabcABC C) xyabcABC D) yzabcABC(分数:1.00)A.B.C. D.解析:解析 该函数的调用方式是 strcpy(字符数组,字符串)其中“字符串”可以是串常量,也可以是字符数组。函数的功能是将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。使用该函数时注意:字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志/0一起复制。不能用赋值运算符“=
29、”将一个字符串直接赋值给一个字符数组,只能用 strcpy()函数来处理。strcat (字符数组,字符串)功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。连接前两个字符串都有结束标志/0,连接后“字符数组”中存储的字符串的结束标志/0被舍弃,只在目标串的最后保留一个/0。9.可行性研究要进行一次( )需求分析。A深入的 B详尽的C彻底的 D简
30、化的、压缩的(分数:2.00)A.B.C.D. 解析:10.两个变量定义不能同名,是因为( )。A这两个变量定义在同一文件中B这两个变量定义在同一作用域中C一个定义在 main函数中,一个定义在子函数中D以上说法均不正确(分数:1.00)A.B. C.D.解析:11.下列关于顺序存储结构叙述中错误的是( )。A存储密度大B逻辑上相邻的结点物理上不必相邻C可以通过计算直接确定第 i个结点的存储地址D插入、删除运算操作不方便(分数:2.00)A.B. C.D.解析:12.不合法的 main函数命令行参数表示形式是A)main(inta,char*c) B)main(int arc,char * *
31、 arv)C)main(int argc,char * argv) D)main(int argv,char * argc)(分数:1.00)A.B.C. D.解析:解析 在 C+语言里,main 函数也可以有参数,例如:main(int arvc,char*argv),argc:是指向字符串的指针数组,而选项 C)是第二个形参是指向字符变量的指针,是错误的。13.树是结点的集合,它的根结点的数目是( )。A) 有且只有 1个 B) 1 或多于 1 C) 0或 1 D) 至少有 2个(分数:2.00)A.B.C. D.解析:解析 树具有明显的层次关系,即树是一种层次结构。在树结构中,根结点在第
32、一层上。当树为非空时,树中有且只有一个根结点:当树为空时,树中根结点的数目为 0。14.若有说明:int 34=0;则下面叙述正确的( )。A只有元素 s00可得到初值 0B此说明语句不正确C数组 s中各个元素都可得到初值,但其值不一定为 0D数组 s中每个元素均可得到初值 0(分数:1.00)A.B.C.D. 解析:15.在 C+中,打开一个文件,就是将这个文件与一个( )建立关联;关闭一个文件,就是取消这种关联。A类 B流 C对象 D结构(分数:1.00)A.B. C.D.解析:16.若一棵二叉树具有 10个度为 2的结点,则该二叉树的度为 0的结点个数是 _。A) 9 B) 11C) 1
33、2 D) 不确定(分数:2.00)A.B. C.D.解析:17.以下选项中合法的用户标识符是A) long B) _2 Test C) 3 Dmax D) A,dat(分数:2.00)A.B. C.D.解析:解析 注意 A选项用了 C+的保留字 long,选项 C使用了数字开头,选项 D中存在空格,这些均是错误的标识。正确答案应为 B。18.下列程序的输出结果是#includeclass Myclass public:Myclass(int i=0,intj=0)x=i;y=j;void show( ) cout “x=“ x “ “ “y=“ y end1;void show( )const
34、 cout “x=“ “ “ “y= y end1;privated:int x; int y;void main( )Myclass my1(3,4);const my2(7,8);my1show( );my2show( );A) x=4,y=3;x=7,y=8 B) x=3,y=4;x=7,y=8C) x=7,y=8;x=4,y=3 D) x=8,y=7;x=7,y=8(分数:1.00)A. B.C.D.解析:解析:在 My class类中定义厂两个同名函数 show,其中一个是常成员函数。在 main函数中定义了两个对象 my1,my2,其中对象 my2是常对象。这两个对象调用成员函数
35、show时,通过对象 my1调用的是没有用 const修饰的一般成员函数,而通过对象 my2调用的是 const修饰的常成员函数。19.进行文件操作时需要包含( )文件。Alostream.h Bfstream.hCstdio.h DstidliB.h(分数:1.00)A.B. C.D.解析:20.C+源晚间中包含的输入/输出头文件为( )。Astdio.h Bstdafx.h Ciostream.h Dstream.h(分数:1.00)A.B.C. D.解析:21.有如下程序:#include iostreamusing namespace std;class Basepublic:void
36、 fun()( cout“Base:fun“endl;class Derived: public Basepublic:void fun()_cout“Derived:fun“endl;int main()Derived d;Dfun();return 0;已知其执行后的输出结果为:Base:funDerived:fun则程序中下划线处应填入的语句是( )。ABase.fun(); BBase:fun();CBase-fun(); Dfun();(分数:2.00)A.B. C.D.解析:22.下列数据结构中,属于非线性结构的是( )。A循环队列 B带链队列C二叉树 D带链栈(分数:2.00)A
37、.B.C. D.解析:23.下列语句不能够用于打开 C根目录下文件 testtxt 的语句是A) ifstream fin;finopen(“C:/testtxt“); B) ifstream fin(“C:/testtxt“);C) )和)D) ifstream fin;fin(“C:/testtxt“);(分数:1.00)A.B.C.D. 解析:解析:C+语言中打开文件有两种方式ifstream fin(“testdar“,)if stream fin;finopen(“testdat“,);。24.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指 A) 数据与程序独立存放 B)
38、不同的数据被存放在不同的文件中 C) 不同的数据只能被对应的应用程序所使用 D) 以上 3种说法都不对(分数:2.00)A.B.C.D. 解析:解析 数据独立性是指建立在数据的逻辑结构和物理结构分离的基础上,用户以简单的逻辑结构操作数据而无须考虑数据的物理结构,转换工作由数据库管理系统实现。数据独立性分为数据的物理独立和数据的逻辑独立。25.有下列程序,在横线添加;#includeiostreamusing namespace std;class TestClasspublic:TestClass(int n)number=n;_/拷贝构造函数TestClass()private:int nu
39、mber;TestClass fun(TestClass p)TestClass temp(P);return temp;int main()TestClsss obj1(10),obj2(0);TestClass obj3(obj1);obj2=fun(obj3);return 0;A) TestClass(TestClass B) TestClass(TestClass other)number=other.number;C) TestClass(TestClass D) TestClass((分数:2.00)A. B.C.D.解析:解析 拷贝构造函数中的赋值构造函数也是构造函数,但它只有
40、一个参数,这个参数是本类的对象,即 other,所以赋值操作将本类的参数 other,number赋值给 number;而且采用对象的引用的形式,也就是int * pba;cout * p “,“ b endl;A) 3,4 B) 4,3 C) 3,4 D) 4,4(分数:2.00)A.B. C.D.解析:解析 * p 为所指对象 a的值,语句“ba;”等价于“bba; aa1;”。30.语句 ofstream f(“SALARYDAT“,iosappiosbinary);的功能是建立流对象 f,试图打开文件SALARYDAT 并与之连接,并且A)若文件存在,将文件写指针定位于文件尾;若文件不
41、存在,建立一个新文件B)若文件存在,将其置为空文件;若文件不存在,打开失败C)若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D)若文件存在,打开失败;若文件不存在,建立一个新文件(分数:1.00)A. B.C.D.解析:解析 本题考查的是文件流的操作, app 表示追加方式打开文件(即将指针移至文件尾),bi- naw表示以二进制方式打开文件。31.下列是模板声明的开始部分,其中正确的是A) templateT B) templateclassT1,T2C) templateclassT1,classT2 D) templateclassT1;classT2(分数:2.00
42、)A.B.C. D.解析:解析 本题考核模板的声明。模板声明的开始部分为:template类型形参表。其中,类型形参表可以包含基本数据类型,也可以包含类类型。类型形参需要加前缀 class。如果类型形参多于一个,则每个类型形参都要使用 class。形参表中的参数是惟一的,而且至少在函数定义体中出现一次。形参表中至少有一个形参的类型必须用类型形参表中的形参来定义。所以只有 C选项的声明是正确的。32.下列关于 this指针的叙述中,正确的是A) this指针是一个隐含指针,它隐含于类的成员函数中B) 只有在使用 this时,系统才会将对象的地址赋值给 thisC) 类的友元函数也有 this指针
43、D) this指针表示了成员函数当前操作的数据所属的对象(分数:1.00)A.B.C.D. 解析:解析 本题考核 this。类的每一个成员函数都有一个隐含定义的常量指针,称为 this指针。它是成员函数所属对象的指针,它指向类对象的地址。成员函数可以通过这个指针知道自己属于哪一个对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋值给 this指针,然后调用成员函数,每次成员函数存取数据时,则隐含使用 this指针。但是在使用 this指针时需要注意的是:this 指针只能在类的成员函数中使用,它指向该成员函数被调用的对象。this 指针一般用于返回当前对象自身;静态成员函数没有 thi
44、s指针。因为类只有一个静态成员函数实例,所以使用 this指针没有什么意义。在静态成员函数中使用 this指针会引起编译错误。33.以下 for语句中不是死循环的是( )。Afor(int i=0;i1;+i); Bfor(int i=0;+i);Cfor(int i=1;i0;+i); Dfor(;);(分数:2.00)A. B.C.D.解析:解析 本题考查循环语句 for的使用。for 循环开始时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。在 for语句中,如果省略了终止条件判断部分,并且在语句中没有
45、break,或终止条件判断部分始终没有终止,都将出现死循环。34.在深度为 7的满二叉树中,叶子结点的个数为( )。A32 B31C64 D63(分数:2.00)A.B.C. D.解析:35.若执行下面的程序时,从键盘上输入 5和 2,则输出结果是#includeiostream.hvoid main( )int a,b,k;cin a b; k=a;if(ab) k=a%b;elsek=b%a;cout k endl;A) 5 B) 3 C) 2 D) 0(分数:1.00)A.B.C. D.解析:解析 本题考查简单的 ifelse语句。先执行条件 if(aB,显然不成立,则执行 else语句
46、。二、填空题(总题数:15,分数:27.00)36.在面向对象程序设计中,从外面只能看到对象的外部特征,而不知道无需知道数据的具体结构以及实现操作的算法,这称为对象的 1。(分数:2.00)填空项 1:_ (正确答案:封装性。)解析:解析 对象具有下列 5个基本特点:(1) 标识惟一性,(2) 分类性,(3) 多态性:(4) 封装性,(5) 模块独立性好。其中,封装性是指从外面看只能看到对象的外部特征,对象的内部特征即处理能力的实行和内部状态,对外是不可见的,对象的内部状态只能由其自身改变。37.非成员函数必须声明为类的 1 才能访问这个类的 private成员。(分数:2.00)填空项 1:_ (正确答案:友元函数)解析:解析 C+的友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间数据共享的机制。一个类可以利用 friend将一般函数、其他类成员函数或者其他类声明为友元。友元的声明可以放在类的任何一个区域。定义须在类外声明在公有私有部分均可。38.C+中,设置