1、二级 C+笔试 35 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.有以下程序( )。 #includeiostream.h int f(int n) if(n=1)return 1; else return f(n-1)+1; void main() int i,j=-; for(i=1;i3;i+) j+=f(i); coutjendl; 程序运行后输出结果是( )。(分数:2.00)A.4B.3C.2D.12.( )是一个在百慕大类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。(分数:2.00)A
2、.虚析构函数B.虚构造函数C.纯虚函数D.静态成员函数3.在 int a=10,* p= void main() int i,j=0; for(i=1;i3;i+):j+=f(i); coutj; 程序运行后的输出结果是( )。(分数:2.00)A.4B.3C.2D.110.关于虚函数下面说的正确的是( )。(分数:2.00)A.若在重定义虚函数时使用了 virtual,则该重定义函数还是虚函数B.虚函数不能声明为友元C.子类必须重定义父类的虚函数D.虚函数不能是 static 的11.对虚函数的调用( )。(分数:2.00)A.一定使用动态联编B.必须使用动态联编C.一定使用静态联编D.不一
3、定使用动态联编12.关于纯虚函数和抽象类的描述中,( )是错误的。(分数:2.00)A.纯虚函数是一种特殊的虚函数,它没有具体的定义B.抽象类是指具有纯虚函数的类C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类D.抽象类只能作为基类来使用,其纯虚函数的定义由派生类给出13.结构化程序设计主要强调的是( )。(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性14.下面的描述中,正确的是( );(分数:2.00)A.virtual 可以用来声明虚函数B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C.即使基类的构造函数没有参数,派生类也必须建
4、立构造函数D.静态数据成员可以通过成员初始化列表来初始化15.一个类的友元函数或友元类能够通过成员操作符访问该类的( )。(分数:2.00)A.私有成员B.保护成员C.公有成员D.公用成员、保护成员和私有成员16.下列叙述中错误的是( )。(分数:2.00)A.一个函数中可以有多条 return 语句B.调用函数必须在一条独立的语句中完成C.函数中通过 return 语句传递函数值D.主函数名 main 也可以带有形参17.下列关于虚基类的描述中,错误的是( )。(分数:2.00)A.虚基类子对象的初始化由最派生类完成B.虚基类子对象的初始化次数与虚基类下面的派生类个数有关C.设置虚基类的目的
5、是消除二义性D.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数的调用18.当输入“Thank you”时下列程序的输出结果为( )。 #includeiostream.h #includeiomanip.h void main() char line80; cin.getline(line,sizeof(80),k); coutline; (分数:2.00)A.ThaB.Thank youC.ThankD.以上结果都不对19.如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须重复使用关键字( )。(分数:2.00)A.constB.stat
6、icC.voidD.class20.下面关于友元的描述中,错误的是( )。(分数:2.00)A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承21.C+中,由类 istream 和类 ostream 而派出的一个类( ),它提供双向 I/O 操作,(分数:2.00)A.iostreamB.fstreamC.strstreamD.istream22.下列程序的运行结果是( )。 #includeiostream.h class A inta; public: A( )a=0; A(int aa)
7、a=aa; couta+; ; void main() A x,y (2),z (3): coutendl; (分数:2.00)A.00B.23C.34D.2523.下列关于运算符重载的描述中,( )是正确的。(分数:2.00)A.运算符重载可以改变操作数的个数B.运算符重载可以改变化先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构24.结构化程序设计所规定的三种基本控制结构是 ( )。(分数:2.00)A.顺序结构、选择结构、循环结构B.输入、输出、处理C.for、while、switchD.主程序、子程序、函数25.以下哪个基类中的成员函数表示纯虚函数( )。(分数:2.0
8、0)A.virtual void vf (inB.void vf (in=0C.virtual void vf(=0)D.virtual void vf (in 26.关于 getline()函数的下列描述中,( )是错误的。(分数:2.00)A.该函数是用来从键盘上读取字符串的B.该函数读取的字符串长度是受限制的C.该函数读取字符串时,遇到终止符时便停止D.该函数中所使用的终止符只能是换行符27.C+语言中 while 循环和 dowhile 循环的主要区别是( )。(分数:2.00)A.dwhile 的循环体至少无条件执行一次B.while 的循环控制条件比 dwhile 的循环控制条件严
9、格C.dwhile 允许从外部转到循环体内D.dwhile 的循环体不能是复核语句28.下面关于对象概念的描述中,( )是错误的。(分数:2.00)A.对象就是 C 语言中的结构体变量B.对象代表着正在创建的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的29.C+语言中的基本数据类型是( )。(分数:2.00)A.整型、浮点型、逻辑型、无值型和类类型B.整型、字符型、浮点型、无值型和逻辑型C.整型、浮点型、字符型、逻辑型和枚举型D.整型、浮点型、逻辑型、无值型和指针型30.有如下定义语句:int a1,2,3,4,5;,则对语句 int * p
10、=a;正确的描述是( )。(分数:2.00)A.语句 int * p=a;定义不正确B.语句 int * p=a;初始化变量 p,使其指向数组对象 a 的第一个元素C.语句 int * p=a;是把 a0的值赋给变量 pD.语句 int * p=a;是把 a1的值赋给变量 p31.已知 f1(int)是类 A 的公有成员函数,p 是指向成员函数 f1()的指针,采用赋值,( )是正确的。(分数:2.00)A.p=f1B.P=A:f1C.P=A:f1()D.P=f1()32.线性表的顺序存储结构和线性表的链式存储结构分别是( )。(分数:2.00)A.顺序存取的存储结构、顺序存取的存储结构B.随
11、机存取的存储结构、顺序存取的存储结构C.随机存取的存储结构、随机存取的存储结构D.任意存取的存储结构、任意存取的存储结构33.通常的拷贝初始化构造函数的参数是( )。(分数:2.00)A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名34.下列关于动态联编的描述中,错误的是( )。(分数:2.00)A.动态联编是以虚函数为基础的B.动态联编是在运行时确定所调用的函数代码的C.动态联编调用函数操作是指向对象的指针或对象引用D.动态联编是在编译时确定操作函数的35.下列关于虚基类的描述,错误的是( )。(分数:2.00)A.设置虚基类的目的是为了消除二义性B.虚基类的构造函
12、数在非虚基类之后调用C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数二、B填空题/B(总题数:15,分数:30.00)36.以下程序的执行结果是 _。 #includeiostream.h void main() cout.filll(*); cout.width(10); cout123.45endl: cout.width(8); cout123.45endl; cout.width(4); cout123.45endl; (分数:2.00)填空项 1:_37.有如下的程序: #inclu
13、deiostream #includefstream using namespace std; int main() char s25=“Programming language“; ofstream f1(“DATA.TXT“); f1“C+Programming“; n.close(); ifstream f2(“DATA.TXT“); if(f2.good()f2s; f2.close(); couts; return 0; 执行上面的程序将输出 _。(分数:2.00)填空项 1:_38.大多数 C+程序都要包含 1 头文件。该文件中包含了所有输入/输出流操作所需要的基本信息。(分数:2
14、.00)填空项 1:_39.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 1。(分数:2.00)填空项 1:_40.若有: int i=1000; int * ip= void main() int i,j=0; for(i=1;i3;i+):j+=f(i); coutj; 程序运行后的输出结果是( )。(分数:2.00)A.4B.3 C.2D.1解析:10.关于虚函数下面说的正确的是( )。(分数:2.00)A.若在重定义虚函数时使用了 virtual,则该重定义函数还是虚函数B.虚函数不能声明为友元C.子类必须重定义父类的虚函数D.虚函数不能是 static
15、的 解析:11.对虚函数的调用( )。(分数:2.00)A.一定使用动态联编B.必须使用动态联编C.一定使用静态联编D.不一定使用动态联编 解析:12.关于纯虚函数和抽象类的描述中,( )是错误的。(分数:2.00)A.纯虚函数是一种特殊的虚函数,它没有具体的定义B.抽象类是指具有纯虚函数的类C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类 D.抽象类只能作为基类来使用,其纯虚函数的定义由派生类给出解析:13.结构化程序设计主要强调的是( )。(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性 解析:14.下面的描述中,正确的是( );(分数:2.
16、00)A.virtual 可以用来声明虚函数 B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C.即使基类的构造函数没有参数,派生类也必须建立构造函数D.静态数据成员可以通过成员初始化列表来初始化解析:15.一个类的友元函数或友元类能够通过成员操作符访问该类的( )。(分数:2.00)A.私有成员B.保护成员C.公有成员D.公用成员、保护成员和私有成员 解析:16.下列叙述中错误的是( )。(分数:2.00)A.一个函数中可以有多条 return 语句B.调用函数必须在一条独立的语句中完成C.函数中通过 return 语句传递函数值D.主函数名 main 也可以带有形参 解析:17.
17、下列关于虚基类的描述中,错误的是( )。(分数:2.00)A.虚基类子对象的初始化由最派生类完成B.虚基类子对象的初始化次数与虚基类下面的派生类个数有关 C.设置虚基类的目的是消除二义性D.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数的调用解析:18.当输入“Thank you”时下列程序的输出结果为( )。 #includeiostream.h #includeiomanip.h void main() char line80; cin.getline(line,sizeof(80),k); coutline; (分数:2.00)A.Tha B.Thank you
18、C.ThankD.以上结果都不对解析:19.如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须重复使用关键字( )。(分数:2.00)A.constB.staticC.voidD.class 解析:20.下面关于友元的描述中,错误的是( )。(分数:2.00)A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承 解析:21.C+中,由类 istream 和类 ostream 而派出的一个类( ),它提供双向 I/O 操作,(分数:2.00)A.iostream B.fs
19、treamC.strstreamD.istream解析:22.下列程序的运行结果是( )。 #includeiostream.h class A inta; public: A( )a=0; A(int aa) a=aa; couta+; ; void main() A x,y (2),z (3): coutendl; (分数:2.00)A.00B.23 C.34D.25解析:23.下列关于运算符重载的描述中,( )是正确的。(分数:2.00)A.运算符重载可以改变操作数的个数B.运算符重载可以改变化先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构 解析:24.结构化程序设计所
20、规定的三种基本控制结构是 ( )。(分数:2.00)A.顺序结构、选择结构、循环结构 B.输入、输出、处理C.for、while、switchD.主程序、子程序、函数解析:25.以下哪个基类中的成员函数表示纯虚函数( )。(分数:2.00)A.virtual void vf (inB.void vf (in=0 C.virtual void vf(=0)D.virtual void vf (in 解析:26.关于 getline()函数的下列描述中,( )是错误的。(分数:2.00)A.该函数是用来从键盘上读取字符串的B.该函数读取的字符串长度是受限制的C.该函数读取字符串时,遇到终止符时便停
21、止D.该函数中所使用的终止符只能是换行符 解析:27.C+语言中 while 循环和 dowhile 循环的主要区别是( )。(分数:2.00)A.dwhile 的循环体至少无条件执行一次 B.while 的循环控制条件比 dwhile 的循环控制条件严格C.dwhile 允许从外部转到循环体内D.dwhile 的循环体不能是复核语句解析:28.下面关于对象概念的描述中,( )是错误的。(分数:2.00)A.对象就是 C 语言中的结构体变量 B.对象代表着正在创建的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的解析:29.C+语言中的基本数据类
22、型是( )。(分数:2.00)A.整型、浮点型、逻辑型、无值型和类类型B.整型、字符型、浮点型、无值型和逻辑型 C.整型、浮点型、字符型、逻辑型和枚举型D.整型、浮点型、逻辑型、无值型和指针型解析:30.有如下定义语句:int a1,2,3,4,5;,则对语句 int * p=a;正确的描述是( )。(分数:2.00)A.语句 int * p=a;定义不正确B.语句 int * p=a;初始化变量 p,使其指向数组对象 a 的第一个元素 C.语句 int * p=a;是把 a0的值赋给变量 pD.语句 int * p=a;是把 a1的值赋给变量 p解析:31.已知 f1(int)是类 A 的公
23、有成员函数,p 是指向成员函数 f1()的指针,采用赋值,( )是正确的。(分数:2.00)A.p=f1B.P=A:f1 C.P=A:f1()D.P=f1()解析:32.线性表的顺序存储结构和线性表的链式存储结构分别是( )。(分数:2.00)A.顺序存取的存储结构、顺序存取的存储结构B.随机存取的存储结构、顺序存取的存储结构 C.随机存取的存储结构、随机存取的存储结构D.任意存取的存储结构、任意存取的存储结构解析:33.通常的拷贝初始化构造函数的参数是( )。(分数:2.00)A.某个对象名B.某个对象的成员名C.某个对象的引用名 D.某个对象的指针名解析:34.下列关于动态联编的描述中,错
24、误的是( )。(分数:2.00)A.动态联编是以虚函数为基础的B.动态联编是在运行时确定所调用的函数代码的 C.动态联编调用函数操作是指向对象的指针或对象引用D.动态联编是在编译时确定操作函数的解析:35.下列关于虚基类的描述,错误的是( )。(分数:2.00)A.设置虚基类的目的是为了消除二义性B.虚基类的构造函数在非虚基类之后调用 C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数解析:二、B填空题/B(总题数:15,分数:30.00)36.以下程序的执行结果是 _。 #includeios
25、tream.h void main() cout.filll(*); cout.width(10); cout123.45endl: cout.width(8); cout123.45endl; cout.width(4); cout123.45endl; (分数:2.00)填空项 1:_ (正确答案:*123.45)解析:* 123.45 123.4537.有如下的程序: #includeiostream #includefstream using namespace std; int main() char s25=“Programming language“; ofstream f1(“
26、DATA.TXT“); f1“C+Programming“; n.close(); ifstream f2(“DATA.TXT“); if(f2.good()f2s; f2.close(); couts; return 0; 执行上面的程序将输出 _。(分数:2.00)填空项 1:_ (正确答案:C+)解析:38.大多数 C+程序都要包含 1 头文件。该文件中包含了所有输入/输出流操作所需要的基本信息。(分数:2.00)填空项 1:_ (正确答案:iostream.h)解析:39.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 1。(分数:2.00)填空项 1:_
27、(正确答案:可重用性)解析:40.若有: int i=1000; int * ip=&i; void * VP; vp=ip; 其中,vp=ip 的含义是 _。(分数:2.00)填空项 1:_ (正确答案:把整型指针赋给通用指针)解析:41.switch 后面括号中的表达式只能是整型、 1 或枚举型表达式。(分数:2.00)填空项 1:_ (正确答案:字符型)解析:42.头文件 1 中包含了执行内部格式化所需的信息。(分数:2.00)填空项 1:_ (正确答案:strstrea.h)解析:43.长度为 n 的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平
28、均个数为 1。(分数:2.00)填空项 1:_ (正确答案:n/2)解析:44.类中数据成员和成员函数的默认类型为 1。(分数:2.00)填空项 1:_ (正确答案:私有或 private)解析:45.下面程序的运行结果是 _。 #includeiostream.h void main() char str=“SSSWLIA“,c; int k; for(k=2;(c=strk!=/0;k+) switch(c) caseI:+k;break; casel;continue; default;coutc;continue; cout*; (分数:2.00)填空项 1:_ (正确答案:SWL*)
29、解析:46.数组元素 ai是该数组中的第 1 个元素。(分数:2.00)填空项 1:_ (正确答案:i+1)解析:47.请定义一个函数名为 A,返回值为 int,没有参数的纯虚函数的定义是 1 。(分数:2.00)填空项 1:_ (正确答案:virtual int A-|_|-=0)解析:48.类的具体表现是通过 1 定义来操作的。(分数:2.00)填空项 1:_ (正确答案:对象)解析:49.指针变量所保存的不是一般的数据值,而是程序中另一个对象的 1。(分数:2.00)填空项 1:_ (正确答案:内存地址)解析:50.在一个 C+程序中,每个变量都必须遵循 1 的原则。(分数:2.00)填空项 1:_ (正确答案:选定义后使用)解析: