C++程序设计自考题2.docx

上传人:b****1 文档编号:14543647 上传时间:2023-06-24 格式:DOCX 页数:24 大小:21.51KB
下载 相关 举报
C++程序设计自考题2.docx_第1页
第1页 / 共24页
C++程序设计自考题2.docx_第2页
第2页 / 共24页
C++程序设计自考题2.docx_第3页
第3页 / 共24页
C++程序设计自考题2.docx_第4页
第4页 / 共24页
C++程序设计自考题2.docx_第5页
第5页 / 共24页
C++程序设计自考题2.docx_第6页
第6页 / 共24页
C++程序设计自考题2.docx_第7页
第7页 / 共24页
C++程序设计自考题2.docx_第8页
第8页 / 共24页
C++程序设计自考题2.docx_第9页
第9页 / 共24页
C++程序设计自考题2.docx_第10页
第10页 / 共24页
C++程序设计自考题2.docx_第11页
第11页 / 共24页
C++程序设计自考题2.docx_第12页
第12页 / 共24页
C++程序设计自考题2.docx_第13页
第13页 / 共24页
C++程序设计自考题2.docx_第14页
第14页 / 共24页
C++程序设计自考题2.docx_第15页
第15页 / 共24页
C++程序设计自考题2.docx_第16页
第16页 / 共24页
C++程序设计自考题2.docx_第17页
第17页 / 共24页
C++程序设计自考题2.docx_第18页
第18页 / 共24页
C++程序设计自考题2.docx_第19页
第19页 / 共24页
C++程序设计自考题2.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++程序设计自考题2.docx

《C++程序设计自考题2.docx》由会员分享,可在线阅读,更多相关《C++程序设计自考题2.docx(24页珍藏版)》请在冰点文库上搜索。

C++程序设计自考题2.docx

C++程序设计自考题2

C++程序设计自考题-2

(总分:

100.00,做题时间:

90分钟)

一、单项选择题(总题数:

20,分数:

20.00)

1.在下列成对的表达式中,运算结果类型相同的一对是()

A.7.0/2.0和7.0/2B.5/2.0和5/2

C.7.0/2和7/2D.8/2和6.0/2.0

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

2.所谓数据封装就是将一组数据和与这组数据有关的操作组装在一起,形成一个实体,这实体也就是()

A.类B.对象

C.函数体D.数据块

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题主要考查的知识点为类的概念。

[要点透析]类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。

3.面向对象程序设计语言必须具备的关键要素是()

A.抽象和封装B.抽象和多态性

C.抽象、封装、继承和多态性D.抽象、封装和继承性

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题主要考查的知识点为面向对象程序设计的基本特征。

[要点透析]面向对象有四个基本特征。

抽象:

是对对象的特征的描述;封装:

数据的安全;继承:

类的扩充;多态性:

统一接口。

4.C++中分配动态存储空间,使用的关键字为()

A.freeB.create

C.deleteD.new

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

5.intFunc(int,int);不可与下列哪个函数构成重载()

A.intFunc(int,int,int);B.doubleFunc(int,int);

C.doubleFunc(double,double);D.doubleFunc(int,double);

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]主要考查的知识点为函数重载。

[要点透析]不能以形参名来区分函数;不能以函数返回值来区分函数。

必须是形参的个数或者类型不同才能构成函数重载。

6.C++允许在结构中定义函数,这些函数称为()

A.静态函数B.构造函数

C.析构函数D.成员函数

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

7.下列哪种默认参数的声明是不正确的()

A.intmax(inta,intb,intc,intd=0);B.intmax(inta,intb,intc=0,intd=0);

C.intmax(inta=0,intb,intc=0,intd=0);D.intmax(inta,intb=0,intc=0,intd=0);

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题主要考查的知识点为默认参数。

[要点透析]如果一个函数中有多个参数,则默认参数应从右至左逐个定义。

C项中参数a设置了默认值,则其右边的参数b、c、d都应设置默认值。

C项错误。

8.设函数voidsubone(int&)将形参减1,如有整型变量intk=10,则执行subone(k);后,k的值为()

A.9B.10

C.11D.未知

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]主要考查的知识点为引用作为函数参数。

[要点透析]引用作为函数参数时,形参与实参表示同一变量,所以改变形参的值时,实参的值也被改变。

9.设有函数模板

template<classQ>

QSum(Qx,Qy)

return(x)+(y);

则下列语句中对该函数模板的使用错误的是()

A.Sum(10,2);B.Sum(5.0,6.7);

C.Sum(15.2f,16.0f);D.Sum("AB","CD");

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]本题主要考查的知识点为函数模板。

[要点透析]由QSum(Qx,Qy)可知形参和函数返回值都是同一种数据类型。

A、B、C三项都正确。

而D项用字符串作为实参,字符串的操作与数值类型不同,要用特殊方法进行字符串的连接和运算。

10.下列说法中正确的是()

A.类定义中只能说明成员函数的函数头,不能定义函数体

B.类中的成员函数可以在类体中定义,也可以在类体之外定义

C.类中的成员函数在类体之外定义时必须要与类声明在同一文件中

D.在类体之外定义的成员函数不能操作该类的私有数据成员

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

11.假定一个类的构造函数为“A(inti=4,intj=0)a=i;b=j;”,则执行“Ax

(1);”语句后,x.a和x.b的值分别为()

A.1和0B.1和4

C.4和0D.4和1

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

12.类的构造函数被自动调用执行的情况是在定义该类的()

A.成员函数时B.数据成员时

C.对象时D.友元函数时

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题主要考查的知识点为构造函数的调用。

[要点透析]创建对象时,系统自动调用构造函数初始化对象。

而成员函数、友元函数需要用户直接调用。

本题选C。

13.一个类拥有多个构造函数,则这些构造函数间为()

A.重载关系B.重复关系

C.拷贝关系D.无关系

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

14.包含哪种语句的函数不能声明为内联函数()

A.变量定义B.if……else

C.位操作D.switch

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]主要考查的知识点为内联函数。

[要点透析]C++中,含有循环语句、switch语句的函数不能说明为内联函数。

15.若公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()

A.私有成员B.公有成员

C.保护成员D.保护成员或私有成员

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题主要考查的知识点为基类私有成员在派生类中的访问权限。

[要点透析]基类的私有成员在派生类中是隐藏的,只能在基类内部访问。

16.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A:

func()将()

A.调用类A中的函数func()

B.调用类B中的函数func()

C.根据p所指的对象类型而确定调用类A中或类B中的函数func()

D.既调用类A中函数,也调用类B中的函数

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

17.下列不具有访问权限属性的是()

A.非类成员B.类成员

C.数据成员D.成员函数

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题主要考查的知识点为访问权限。

[要点透析]类成员包括成员函数和数据成员,都可以使用访问权限public、private和protected来修饰,而普通的变量不能使用访问权限来说明。

18.在类定义中private、protected、public关键词出现的次数为()

A.任意多次B.至多一次

C.public至少出现一次D.至少一次

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题主要考查的知识点为类成员的访问权限。

[要点透析]访问权限可以反复使用,只不过经常把同一种访问权限的成员放在一起。

19.如果表达式y*x++中,“*”是作为成员函数重载的运算符,“++”是作为友元函数重载的运算符,采用运算符函数调用格式时,该表达式应表示为()

A.x.operator++(0).operator*(y)B.operator*(x.operator++(0),y)

C.y.operator*(operator++(x,0))D.operator*(operator++(x,0),y)

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

20.设类Test中存在成员staticintx;,则下列哪种初始化方式是正确的()

A.Test:

intx=25;B.intx=25;

C.intTest:

x=25;D.intTestx=25;

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

二、填空题(总题数:

20,分数:

20.00)

21.在C++语言的面向对象设计框架中,1是程序的基本组成单元。

(分数:

1.00)

填空项1:

__________________ (正确答案:

类)

解析:

22.表达式cout<<hex还可表示为1。

(分数:

1.00)

填空项1:

__________________ (正确答案:

cout<<setioflags(ios:

hex))

解析:

23.若要访问指针变量p所指向的数据,应使用表达式1。

(分数:

1.00)

填空项1:

__________________ (正确答案:

*p)

解析:

24.如果使用数组名作为函数参数,形实结合时,传递的是1。

(分数:

1.00)

填空项1:

__________________ (正确答案:

首地址)

解析:

25.在类中,1成员为类的所有对象所共享。

(分数:

1.00)

填空项1:

__________________ (正确答案:

类的静态)

解析:

26.假定用户没有给一个名为AB的类定义构造函数,则系统自动给出的缺省构造函数定义为1。

(分数:

1.00)

填空项1:

__________________ (正确答案:

AB---|||________|||---)

解析:

27.函数模板中紧随template之后尖括号内的类型参数都要冠以保留字1。

(分数:

1.00)

填空项1:

__________________ (正确答案:

class)

解析:

28.在用C++进行程序设计时,最好用1代替malloc。

(分数:

1.00)

填空项1:

__________________ (正确答案:

new)

解析:

29.在C++中,访问指针所指向的对象的成员使用1运算符。

(分数:

1.00)

填空项1:

__________________ (正确答案:

->)

解析:

30.友元函数可以存取类的私有成员、公有成员和1。

(分数:

1.00)

填空项1:

__________________ (正确答案:

保护成员)

解析:

31.由const修饰的对象称为1。

(分数:

1.00)

填空项1:

__________________ (正确答案:

常对象)

解析:

32.通过C++语言中的1机制,可以从现存类中构建其子类。

(分数:

1.00)

填空项1:

__________________ (正确答案:

继承)

解析:

33.在派生类中实现基类成员的初始化,需要由派生类的构造函数调用1来完成。

(分数:

1.00)

填空项1:

__________________ (正确答案:

初始化列表)

解析:

34.静态成员函数是1的成员,不是对象的成员。

(分数:

1.00)

填空项1:

__________________ (正确答案:

类)

解析:

35.类的私有成员只能被它的成员函数和1访问。

(分数:

1.00)

填空项1:

__________________ (正确答案:

友元)

解析:

36.与操作对象的数据类型相互独立的算法称为1。

(分数:

1.00)

填空项1:

__________________ (正确答案:

泛型算法)

解析:

37.C++重载“=”运算符的函数名是1。

(分数:

1.00)

填空项1:

__________________ (正确答案:

operator=)

解析:

38.1是istream类的对象,用于处理标准输入,即键盘输入。

(分数:

1.00)

填空项1:

__________________ (正确答案:

cin)

解析:

39.UML中实例连接反映对象之间的静态关系,消息连接描述对象之间的1关系。

(分数:

1.00)

填空项1:

__________________ (正确答案:

动态)

解析:

40.运算符“+”允许重载为类的成员函数,或者非成员函数。

若用operator+(c1,c2)这样的表达式来使用运算符“+”,应将“+”重载为1函数。

(分数:

1.00)

填空项1:

__________________ (正确答案:

非成员)

解析:

三、改错题(总题数:

5,分数:

20.00)

41.classABC

inta;

public:

ABC(intaa)a(aa)

(分数:

4.00)

填空项1:

__________________ (正确答案:

ABC(intaa)a(aa){}初始化列表格式错误。

应改为ABC(intaa):

a(aa){}。

解析:

42.下面程序通过调用函数模板实现计算两个正整数的最大公约数,把main函数中的错误找出并改正过来。

#include<iostream.h>

template<classT>

Tgcd(Tx,Ty)

while(x!

=y)

if(x>y)x-=y;

elsey-=x;

returnx;

voidmain()

inta;

doubled;

cin>>a>>d:

cout<<gcd(a,d)<<endl;

(分数:

4.00)

填空项1:

__________________ (正确答案:

gcd(a,d)因为a,d两个变量类型不同,而函数模板只有一个参数T,所以出错。

修改时一是修改函数模板,二是调用时使类型一致,可以使用强制转换。

应改为gcd((double)a,d)或gcd(a,(int)d)。

解析:

43.#include<iostream.h>

classA

public:

voidA()

constintf5()constreturn5;

intObj()return45;

intval;

intf8();

intA:

f8()returnval;

voidmain()

constAs;

inti=s.f5();

cout<<"Value="<<i<<endl:

(分数:

4.00)

填空项1:

__________________ (正确答案:

voidA(){}构造函数没有函数类型。

应改为A(){}。

解析:

44.#include<iostream.h>

classshape

public:

virtualintarea()return0;

classrectangle:

publicshape

public:

inta,b;

voidsetLength(intx,inty)a=x;b=y;

intarea()returna*b;

voidmain()

rectangler;

r.setLength(3,5);

shapes1,*s2=r;

cout<<r.area()<<endl;

s2=s1;

cout<<s2.area()<<endl;

(分数:

4.00)

填空项1:

__________________ (正确答案:

shapes1,*s2=r;指针,使用错误。

s是指针,使用它指向对象的成员有两种方法,有下面两行可知,使用的是引用。

应改为shapes1,&s2=r;。

解析:

45.#include<iostream.h>

classAton

intX,Y;

protected:

intzx,zy;

public:

voidinit(inti,intj)zx=i;zy=j;

Aton(inti,intj,intn=0,intm=0)

X=i,Y=j,zx=m,zy=n;

voidmain()

AtonA(25,20,3,5);

A.init(5,9);

cout<<A.X<<endl:

(分数:

4.00)

填空项1:

__________________ (正确答案:

intX,Y;因为X,Y都是私有的,在类外无法直接访问。

应改为public:

intX,Y;。

解析:

四、完成程序题(总题数:

5,分数:

20.00)

46.在下面程序的横线处填上适当内容,使程序执行结果为:

"hello,andylin"。

#include<iostream>

#include<string.h>

usingnamespacestd;

classmystring

public:

char*pdata;

mystring(intlen)

pdata=newchar[len+1];

~mystring()

deletepdata;

voidshow()cout<<pdata<<endl;

voidfun(mystring**array,intlen)

mystring*old=*array;

______

memcpy(*array,old,len);

voidmain()

mystringstr(20);

mystring*pstr=&str;

mystring**ppstr=&pstr;

strcpy(str.pdata,"hello,andylin");

fun(ppstr,20);

______

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

(*array=newmystring(len);

(**ppstr).show();或str.show();)

解析:

47.在下面程序横线处填上适当内容,使程序执行结果为:

200__100。

#include<iostream.h>

template<classT>

Tf(______)

if(______)

returnx+y;

else

returnx*y;

voidmain()

cout<<f(10,20)<<"__"<<f(45.5,54.5)<<endl;

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

(Tx,Ty

sizeof(T)==8)

解析:

48.在下面程序的横线处填上适当内容,使程序执行结果为:

S=2

S=5

S=9

#include<iostream.h>

voidsum(inti)

staticints;

cout<<"s="<<s<<endl:

voidmain(void)

inti;

for(i=0;______)

sum(i);

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

(s=s+i+2;

i<3;i++)

解析:

49.在下面程序的横线处填上适当内容,以使该程序执行结果为:

504342110

07.18.19.110.111.1

#include<iostream.h>

template<classT>

voidf(______)

______

for(inti=0;i<n/2;i++)

t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;

voidmain()

inta[5]=10,21,34,4,50;

doubled[6]=11.1,10.1,9.1,8.1,7.1;

f(a,5);f(d,6);

for(inti=0;i<5;i++)

cout<<a[i]<<…"";

cout<<endl;

for(i=0;i<6;i++)

cout<<d[i]<<"";

cout<<endl;

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

(Ta[],intn

Tt=0)

解析:

50.在下面程序的横线处填上适当内容,完成类的定义。

classline;

classbox

private:

intcolor;

intupx,upy;

intlowx,lowy;

public:

______

voidset_color(intc)color=c;

voiddefine_box(intx1,inty1,intx2,inty2)

upx=x1;upy=y1;lowx=x2;lowy=y2;

classline

private:

intcolor;

intstartx,starty;

intendx,endy;

public:

friendintsame_color(linel,boxb);

voidset_color(intc)color=c;

voiddefine_line(______)

startx=x1;starry=y1;endx=x2;endy=y2;

intsame_color(linel,boxb)

if(l.color==b.color)return1;

return0;

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

(friendintsame_color(linel,boxb);

intx1,inty1,intx2,inty2)

解析:

五、程序分析题(总题数:

2,分数:

10.00)

51.运行程序,写出程序执行的结果。

#include<io

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2