2018年10月自考04737C++程序设计试题及答案含解析_第1页
2018年10月自考04737C++程序设计试题及答案含解析_第2页
2018年10月自考04737C++程序设计试题及答案含解析_第3页
2018年10月自考04737C++程序设计试题及答案含解析_第4页
2018年10月自考04737C++程序设计试题及答案含解析_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

++程序设计年月真题

04737C201810

1、【单选题】若有以下类型标识符定义:charc='c';inta=4;floatf=3.14;double

d=1.212则表达式c+a/(int)d+f的结果类型是

float

char

A:

int

B:

double

C:

答D:案:D

2、【单选题】设x和y均为bool量,则x&&y值为真的条件是

它们均为真

其中一个为真

A:

它们均为假

B:

其中一个为假

C:

答D:案:A

解析:x&&y为真的条件是它们均为真。

3、【单选题】拷贝构造函数应该是

不带参数的构造函数

带有一个参数的构造函数

A:

带有两个参数的构造函数

B:

缺省构造函数

C:

答D:案:B

解析:拷贝构造函数应该是带有一个参数的构造函数。

4、【单选题】以下说法中正确的是

C++程序总是从第一个定义的函数开始执行

C++程序总是从main函数开始执行

A:

C++中函数必须有返回值

B:

C++中函数名必须唯一

C:

答D:案:B

解析:C++程序总是从main函数开始执行并在main函数结束。

5、【单选题】下列虚基类的声明中,正确的是

classvirtualB:publicA

classB:virtualpublicA

A:

classB:publicAvirtual

B:

virtualclassB:publicA

C:

答D:案:B

解析:声明虚基类的一般形式为:class派生类名:virtual继承方式基类名

6、【单选题】下列哪个类型函数不适合声明为内联函数

函数体语句较多

函数体语句较少

A:

函数执行时间较短

B:

函数被频繁调用

C:

答D:案:A

解析:使用内联函数可以提高程序执行速度,但如果函数体语句多,则会增加程序代码的

大小,不适合声明为内联函数。

7、【单选题】以下类模板定义正确的为

<imgsrc="/img/topic/1571034280MHWH9629481.png"/>

A

B

A:

C

B:

D

C:

答D:案:A

8、【单选题】C++中要实现动态联编,调用虚函数时必须使用

基类指针

类名

A:

派生类指针

B:

对象名

C:

答D:案:A

解析:动态联编所支持的多态性称为运行时的多态性,由虚函数实现。调用虚函数时必须

使用基类指针。

9、【单选题】下列对静态成员的描述中,不正确的是

静态成员不属于对象,是类的共享成员

静态数据成员要在类外定义和初始化

A:

调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针

B:

非静态成员函数也可以操作静态数据成员

C:

答D:案:C

解析:静态成员不属于对象,是类的共享成员;静态数据成员要在类外定义和初始化静态

成员函数没有this指针,只能通过对象名或指向对象的指针访问类的数据成员;静态成

员函数不能被说明为虚函数;静态成员函数不能直接访问非静态函数,非静态成员函数也

可以操作静态数据成员。

10、【单选题】下列对派生类的描述中,错误的是

一个派生类可以作为另一个派生类的基类

派生类至少有一个基类

A:

派生类的成员除了它自己的成员外,还包含了它的基类的成员

B:

派生类中继承的基类成员的访问权限到派生类保持不变

C:

答D:案:D

解析:派生类继承了基类所有的数据成员和成员函数。相对基类,派生类可以有以下变

化:增加新的成员;重新定义已有的成员函数;改变基类成员的访问权限。一个基类可以

有多个派生类,一个派生类可以有多个基类。派生类的主要用途是可以定义其基类中不具

有的成员。

11、【单选题】下列函数原型声明语句中,错误的是

intf(void);

voidf(int);

A:

intf(a);

B:

voidf(doublea);

C:

答D:案:C

解析:函数原型声明语句中形式参数的数据类型不能省略,所以选项C错误。

12、【单选题】如果有int型变量a,则定义指向变量a的指针p正确的写法是

intp=&a

A:

int*p=&a

int&p=*a

B:

int*p=a

C:

答D:案:B

解析:定义指向整型变量a的指针p正确的写法int*p=&v,显然其他都是错误的。

13、【单选题】假定指针变量p定义为“int*p=newint[100];”,要释放p所指向的动

态内存,应使用语句

deletep;

delete*p;

A:

delete&p;

B:

delete[]p;

C:

答D:案:D

14、【单选题】假定A为一个类,则执行“Aa[3],b(3);”语句时调用该类构造函数的

次数为

3

4

A:

5

B:

9

C:

答D:案:B

解析:数组a调用3次,变量b调用1次。

15、【单选题】C++中定义标准输入输出的库为

stdio

math

A:

iostream

B:

stdlib

C:

答D:案:A

解析:stdio是C和C++标准库里面的标准输入输出函数库,iostream是C++的输入输出

流函数,在C++编程的时候用iostream,不用或少用stdio。math是数学函数库,stdlib

头文件即standardlibrary标准库头文件。

16、【单选题】允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返

函值能取任意类型,这是1个

类模板

模板类

A:

函数模板

B:

模板函数

C:

答D:案:A

解析:一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某

些数据成员、默认成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统

预定义的和用户自定义的)。

17、【单选题】下列关于运算符重载的叙述中,正确的是

通过运算符重载,可以定义新的运算符

有的运算符只能作为成员函数重载

A:

若重载运算符+,则相应的运算符函数名是+

B:

重载一个二元运算符时,必须声明两个形参

C:

答D:案:B

解析:运算符重载就是函数重载,这就是运算符重载的实质。重载运算符限制在C++语言

中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。

18、【单选题】当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含

打开方式为

ios::out|ios::binary

ios::in|ios::binary

A:

ios::out

B:

ios::in

C:

答D:案:C

解析:ios::out打开文件进行写操作,这是默认方式

19、【单选题】有关函数模板和模板函数说法错误的是

函数模板只是对函数的描述,编译器不为其产生任何执行代码,所以它不是一个实实在在

的函数

A:

模板函数是实实在在的函数,它由编译系统在遇到具体函数调用时所生成,并调用执行

函数模板需要实例化为模板函数后才能执行

B:

当函数模板和一般函数同名时,系统先去匹配函数模板,将其实例化后进行调用

C:

D:

答案:D

解析:函数模板只是对函数的描述,函数模板可以用来创建一个通用的函数,以支持多种

不同的形参,避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作

为参数。模板函数的生成就是将函数模板的类型形参实例化的过程,模板函数是实实在在

的函数。对于一般函数和函数模板同名,在调动时会优先调动一般函数而不会从该模板产

生出一个实例。

20、【单选题】对类的构造函数和析构函数描述正确的是

构造函数可以重载,析构函数不能重载

构造函数不能重载,析构函数可以重载

A:

构造函数可以重载,析构函数也可以重载

B:

构造函数不能重载,析构函数也不能重载

C:

答D:案:A

解析:构造函数,在创建对象的时候自动执行,一般不需要显式调用同时构造函数没有返

回值。析构函数,对象销毁时自动执行,一样不需要直接调用,无返回值。比构造函数还

有一处不同的,就是析构函数不能重载。还有构造函数不能是虚函数,而析构函数可以

是。

21、【问答题】将int类型指针p转换为char类型指针,则强制转换语句为

____________。

答案:(char*)p

解析:强制转换格式:(强制转换类型)(表达式);其中表达式如果是单个变量,其外

面的圆括号可以省略。

22、【问答题】当一个成员函数被调用时,该成员函数的____________指向调用它的对象。

答案:this指针

解析:C++规定,当一个成员函数被调用时,系统将自动向它传递一个隐含的参数,该

参数是一个指向调用该函数的对象的指针,名为this指针,从而使成员函数知道该对哪

个对象进行操作。

23、【问答题】在____________继承的情况下,基类数据成员在派生类中的访问权限保持不

变。

答案:公有

解析:本题考核基类与派生类的关系。

24、【问答题】Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是

____________。

答案:obj

解析:编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程,C++源程序文

件编译而成的目标文件的扩展名是obj。链接是把目标文件、操作系统的启动代码和用到

的库文件进行组织,形成最终生成可执行代码的过程,可执行代码的文件扩展名为exe。

25、【问答题】具有至少一个纯虚函数的类是____________。

答案:抽象类

解析:一个类可说明多个纯虚函数,包含有纯虚函数的类称为抽象类。

26、【问答题】C++中字符串是通过字符数组来表示的,每一个字符串都有一个结尾字符

____________.

答案:\0

解析:\0是C++中字符串的结束标志

27、【问答题】C++中定义重载函数时,应至少使重载函数的参数个数或____________不

同。

答案:参数类型

解析:函数重载就是为同一个函数定义几个版本,从而使一个函数名具有多种功能,也称

函数多态性。这些函数的多种版本之间的区别有两个,一是参数类型不同,二是参数个数

不同。

28、【问答题】假定x=15,则表达式x<=10?20:30的值为____________。

答案:30

解析:表达式的意思是当x<=10时,值为20;当x>10时,值为30因此,当x=15时,值为

30

29、【问答题】不同对象可以调用相同名称的函数,但执行完全不同行为的现象称为

____________。

答案:多态性

解析:多态性:不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象。

多态性包含编译时的多态性、运行时的多态性两大类。即:多态性也分静态多态性和动态

多态性两种。

30、【问答题】假设类F的对象f是类A的成员对象,则“Aa”语句执行时,先调用类

____________的构造函数。

答案:F

解析:构造函数是用来实现对象初始化的特殊成员函数。

31、【问答题】设"inta=3,b=4,c=5;",表达式“(a+b)>c&&b==c”的值是

____________。

答案:0

解析:(a+b)>c成立,逻辑值是1;b==c不成立,逻辑值是0;1&&0的值是0

32、【问答题】描述命题“A小于B或小于C”的表达式为____________。

答案:A<B||A<C

解析:简单的关系运算与逻辑运算

33、【问答题】C++中字符串"a+b=12\n\t"的长度为____________。

答案:8

解析:a+b=12共6个字符,\n是1个字符,\t是1个字符,一共8个字符。

34、【问答题】C++类中构造函数的个数最多是无限个,析构函数的个数最多是

____________个。

答案:1

解析:一个类至少有一个系统默认的构造函数,用户可以定义多个构造函数来为类进行初

始化。类中构造函数的个数最多是无限个,析构函数的个数最多是1个。

35、【问答题】C++的静态数据成员需要在____________进行初始化,可以被该类的所有对

象共享。

答案:类外

解析:在没有建立对象之前,静态成员就已存在;静态成员是类的成员,不是对象的成

员;静态成员为该类的所有对象共享,它们被存储于一个公用内存中;

36、【问答题】C++中一般的程序都要有两条语句,包含头文件“#include<iostream>”语

句和使用命名空间“____________”语句。

答案:usingnamespacestd;

解析:#include<iostream>和usingnamespacestd;是C++中一般的程序都要有两条语

句,注意第一条语句后面没有分号。

37、【问答题】用new申请某一个类的动态对象数组时,在该类中必须能够匹配到没有形参

的或缺省参数的____________,否则应用程序会产生一个编译错误。

答案:构造函数

解析:New和构造函数一同起作用,当使用new建立一个动态对象时,new首先分配足以

保存该类的一个对象所需要的内存,然后自动调用构造函数来初始化这块内存,再返回这

个动态对象的地址。

38、【问答题】C++中解决命名冲突的机制是____________。

答案:函数重载

解析:函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函

数,这组函数被称为重载函数。函数重载减少了函数名的数量解决了命名冲突,避免了名

字空间的污染,对于程序的可读性有很大的好处。

39、【问答题】拷贝构造函数使____________作为参数初始化创建中的对象。

答案:引用

解析:拷贝构造函数其原形为:类名::类名(类名&)或类名::类名(const类名

&)为了提高程序的效率和安全性,都必须使用对象的引用作为形参,推荐使用const限

制。

40、【问答题】假如一个类的名称为F,使用这个类的一个对象初始化该类的另一个对象

时,可以调用____________构造函数来完成此功能。

答案:复制(拷贝)

解析:复制构造函数的作用:通过拷贝方式使用一个类已有的对象来建立该类的一个新对

象。

41、【问答题】

答案:setzero(&x1)改为setzero(x1)

解析:C++提供了传递变量的引用。形参是引用变量,实参是一个变量,调用函数时,形

参(引用变量)指向实参变量单元。这种通过形参引用可以改变实参的值。

42、【问答题】

答案:if(i%3==2)错误,改为:if(i%3!=2)

解析:题目程序的功能是将1~15之间的数除以3的余数等于2的打印输出。

43、【问答题】

答案:Point::init()错误,改为:P.init()

解析:类名::成员函数名这种格式只能是当成员函数是公有静态函数才可以这样访问,比

如P.output改成Point::output()是合法的。P.init()对象P对成员函数init()的访

问。

44、【问答题】

答案:cout<<a.x<<a.y<<a.sum()<<endl错误,改为:cout<<a.getx()<<

a.gety()<<a.sum()<<endl

解析:x和y是对象a的私有数据成员,不能再类外直接使用它们,a.x和a.y就是错误

的。

45、【问答题】

答案:deletep错误,改为:delete[]p

解析:使用delete释放动态p所指数组时,使用的语句是delete[]p;,注意不可写成

deleteptr[];。

46、【问答题】

答案:第一空:!fout第二空:fout.close()

解析:if语句用来判断文件是否成功打开,所以第一空填!fout;最后是关闭打开的文

件,所以第二空填fout.close()。

47、【问答题】

答案:第一空:template<typenameT>第二空:Tfun(Tx,Ty)

解析:C++中规定函数模板以关键字template和一个形参表开头,形参表中以class表示

“用户定义的或固有的类型”,一般选用T作为标识符来标识类型参数。关键字typename

仅用于模板中,其用途之一就是代替类模板template参数列表中的关键字class。

48、【问答题】

答案:第一空:ints1,s2第二空:(s2<*p)s2=*p

解析:程序实现的是变量s1存放数组的最小值,s2存放数组的最大值,最后输出最大值

与最小值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论