自考C++考试题库及答案.docx

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

自考C++考试题库及答案.docx

《自考C++考试题库及答案.docx》由会员分享,可在线阅读,更多相关《自考C++考试题库及答案.docx(76页珍藏版)》请在冰点文库上搜索。

自考C++考试题库及答案.docx

自考C++考试题库及答案

2020年自考C++考试题库及答案

一、单项选择题(本大题共10小题,每小题2分,共20分)

1.面向对象程序设计中的数据隐藏指的是(   )

A.输入数据必须输入保密口令B.数据经过加密处理

C.对象内部数据和代码合并在一起D.对象内部数据结构的不可访问性

2.在C++中,编写一个内联函数Fun,使用int类型的参数,求其平方并返回,返回值也为int类型,下列定义正确的是(   )

A.intFun(intx){returnx*x;}B.inlineintFun(intx){returnx*x;}

C.intinlineFun(intx){returnx*x;}D.intFun(intx){inlinereturnx*x;}

3.下面关于重载函数的叙述中正确的是(   )

A.重载函数必须具有不同的返回值类型B.重载函数的形参个数必须不同

C.重载函数必须有不同的形参列表D.重载函数的函数名可以不同

4.若有定义“intx=17;”,则语句“cout<

A.11B.0x11C.21D.021

5.下列关于析构函数的描述中正确的是(   )

A.析构函数可以重载B.析构函数可以是虚函数C.析构函数名与类名相同D.析构函数的返回类型为void

6.下列关于纯虚函数的描述中,正确的是(   )

A.纯虚函数是一种特殊的虚函数,它是个空函数B.具有纯虚函数的类称为虚基类

C.一个基类中说明有纯虚函数,其派生类一定要实现该纯虚函数

D.具有纯虚函数的类不能创建类对象

7.下列关于运算符重载的描述中,正确的是(   )

A.可以改变运算符的目数B.可以改变运算符的优先级C.可以改变运算符的结合性D.可以改变运算符的功能

8.要将类A说明是类B的虚基类,正确的描述是(   )

A.classvirtualB:

publicAB.classB:

virtualpublicAC.virtualclassB:

publicAD.classB:

publicAvirtual

9.下面关于静态成员的描述中,正确的是(   )

A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象访问

10.假设Sample是个类,则语句“Samplea[2],*p[3];”调用构造函数的次数为(   )

A.0B.2C.3D.5

二、填空题(本大题共10小题,每小题2分,共20分)

11.在面向对象的程序设计中,将一组对象的共同特性抽象出来形成________________。

12.在C++中要创建一个文件输入流对象fin,同时该对象打开文件“Test.txt”用于输入,则正确的声明语句是___________。

13.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句________________。

14.A是一个类,已有语句“A*p;p=newA[10];”。

要释放由p指向的动态空间,正确的语句应该是____________。

15.如果一个引用不是用作函数参数或返回值,则在说明该引用时必须对它进行________________。

16.如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是________________。

17.在C++中函数原型不但要标识一个函数的返回类型,同时还要标识该函数的________________。

18.类A的后置自增运算符++以成员函数的形式进行重载,其在类内的函数声明是________________。

19.动态联编是通过基类类型的指针或引用调用________________函数来完成。

20.基类的保护成员通过私有派生其在派生类中的访问权限是________________。

三、改错题(本大题共5小题,每小题2分,共10分)

21.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。

classSample

{private:

  intdata;

  Sample(){data=10;}

public:

  Sample(intd){data=d;}

  intoperatorint(){returndata;}

};

22.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。

#include

classPoint

{

  intX,Y;

public:

  Point(){X=0;Y=0;}

  Point(intx=0,inty=0){X=x;Y=y;}

  voiddisplay(){cout<

};

23.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因。

#include

template

voidSwap(T&a,T&b)

{Tt;

  t=a,a=b,b=t;

}

voidmain()

{

  inta=3,b=4;

  charstr1[5]=”abcd”,str2[5]=”hijk”;

  Swap(a,b);

  Swap(str1,str2);

  cout<<”a=”<

  cout<<”str1=”<

}

24.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因。

#include

classBase

{public:

  virtualvoidfun(){cout<<"Basefunction"<

};

classDerived:

publicBase

{

public:

  voidfun(){cout<<"Derivedfunction"<

};

voidmain()

{Baseb;

Derived*p=&b;

b.fun();

p->fun();

}

25.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因。

#include

classA

{intx;

protected:

  inty;

public:

A(intxx,intyy){x=xx;y=yy;}

};

classB:

publicA

{

public:

  B(inta,intb):

A(a,b){}

  voiddisplay(){cout<

};

voidmain()

{

  Bb(5,10);

  b.display();

}

四、完成程序题(本大题共5小题,每小题4分,共20分)

26.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

2,1

4,3

#include

classA

{

  inta;

public:

  A(inti=0){a=i;}

  intGeta(){returna;}

};

classB

{

  Aa;

  intb;

public:

  B(inti=0,intj=0):

①       }

  voiddisplay(){cout<

};

voidmain()

{

  Bb[2]={B(1,2),B(3,4)};

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

    ②       ;

}

27.下面程序中A是抽象类。

请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

   B1called

   B2called

#include

classA

{

public:

  ①           ;

};

classB1:

publicA

{

public:

  voiddisplay(){cout<<”B1called”<

};

classB2:

publicA

{

public:

  voiddisplay(){cout<<”B2called”<

};

voidshow(②       )

{

  p->display();

}

voidmain()

{

  B1b1;

  B2b2;

  A*p[2]={&b1,&b2};

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

    show(p[i]);

}

28.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

   Name:

王小明

   Grade:

90

#include

#include

classPerson

{

  charname[20];

public:

  Person(char*s){strcpy(name,s);}

  voiddisplay(){cout<<”Name:

”<

};

classStudent:

publicPerson

{

  intgrade;

public:

  Student(char*s,intg):

①       {grade=g;}

voiddisplay()

{

  ②       ;

  cout<<”Grade:

”<

}

};

voidmain()

{

  Students(“王小明”,90);

  s.display();

}

29.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为5。

#include

classInteger

{

  intx;

public:

  Integer(inta=0){x=a;}

  voiddisplay(){cout<

  ①            ;

};

IntegerMax(Integera,Integerb)

{

  if(②       )

    returna;

  returnb;

}

voidmain()

{

  Integera(3),b(5),c;

  c=Max(a,b);

  c.display();

}

30.请在下面的横线处填上适当内容,以使类的定义完整。

classArray

{

  int*ptr;

  intsize;

public:

  Array(){size=0;ptr=0;}

  Array(intn){size=n;ptr=newint[size];}

  Array(①       )   //复制初始化构造函数

  {

    size=a.size;

ptr=newint[size];

for(inti=0;i

  ②       ;   //将源对象的动态数组内容复制到目标对象

  }

};

五、程序分析题(本大题共6小题,每小题5分,共30分)

阅读下面的程序,写出程序运行的结果。

31.#include

classTest

{

private:

    intnum;

public:

    Test(intn=0){num=n;num++;}

    ~Test(){cout<<”Destructorisactive,number=”<

};

voidmain()

{

    Testx[2];

    cout<<”Exitingmain”<

}

32.#include

classA

{

public:

  virtualvoidfun(intdata){cout<<”classA:

”<

  voidfun(char*str){cout<<”classA:

”<

};

classB:

publicA

{

public:

  voidfun(){cout<<”classB”<

  voidfun(intdata){cout<<”classB:

”<

  voidfun(char*str){cout<<”classB:

”<

};

voidmain()

{

  A*pA;

  Bb;

  pA=&b;

  pA->fun

(1);

  pA->fun(“Hello”);

}

33.#include

voidmain()

{

  cout.fill('*');

cout.width(10);

cout<<"123.45"<

cout.width(8);

cout<<"123.45"<

cout.width(4);

cout<<"123.45"<

}

34.#include

classNum

{

  intX,Y;

public:

  Num(intx,inty=0){X=x;Y=y;}

voidvalue(intx,inty=0){X=x;Y=y;}

voidvalue(){

  cout<

if(Y!

=0)

cout<<(Y>0?

’+’:

’-’)<<(Y>0?

Y:

-Y)<<’i’;

cout<

}

};

voidmain()

{

  Numn

(1);

n.value();

n.value(2,3);

n.value();

Numm(3,-4);

m.value();

}

35.#include

classSample

{

private:

  inti;

  staticintcount;

public:

  Sample();

  voiddisplay();

};

Sample:

:

Sample()

{

  i=0;

  count++;

}

voidSample:

:

display()

{

  cout<<"i="<

}

intSample:

:

count=0;

voidmain()

{

  Samplea,b;

a.display();

b.display();

}

36.#include

classA

{

  inta;

public:

  A(intaa=0){a=aa;cout<<"a="<

};

classB

{

  intb;

public:

  B(intbb=0){b=bb;cout<<"b="<

};

classC:

publicB

{

  Aa;

public:

  C(){cout<<”Cdefaultconstructor”<

  C(inti,intj):

a(i),B(j){cout<<”Cconstructor”<

};

voidmain()

{

  Cc1,c2(5,6);

}

模拟试题二

一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将其代码填在题后的括号内。

错选或未选均无分。

1.在C++中,函数原型不能标识()

A.函数的返回类型B.函数参数的个数

C.函数参数类型D.函数的功能

2.在C++程序中,对象之间的相互通信通过()

A.继承实现B.调用成员函数实现

C.封装实现D.函数重载实现

3.对于任意一个类,析构函数的个数最多为()

A.0B.1C.2D.3

4.下面函数模板定义中不正确的是()

A.templateB.template

QF(Qx){QF(Qx){

returnQ+x;returnx+x;

}}

C.templateD.template

TF(Tx){TF(Tx){

returnx*x;returnx>1;

}}

5.友元关系不能()

A.继承

B.是类与类的关系

C.是一个类的成员函数与另一个类的关系

D.提高程序的运行效率

6.语句ofstreamf(″SALARY.DAT″,ios:

:

app|ios:

:

binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,并且()

A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件

B.若文件存在,将其置为空文件;若文件不存在,打开失败

C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件

D.若文件存在,打开失败;若文件不存在,建立一个新文件

7.下面说法正确的是()

A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方

B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方

C.类的内联函数必须在类体内定义

D.类的内联函数必须在类体外通过加关键字inline定义

8.可以用p.a的形式访问派生类对象p的基类成员a,其中a是()

A.私有继承的公有成员B.公有继承的私有成员

C.公有继承的保护成员D.公有继承的公有成员

9.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是()

A.派生类的对象可以赋给基类的对象

B.派生类的对象可以初始化基类的引用

C.派生类的对象可以直接访问基类中的成员

D.派生类的对象的地址可以赋给指向基类的指针

10.对于类定义

classA{

public:

virtualvoidfunc1(){}

voidfunc2(){}

};

classB:

publicA{

public:

voidfunc1(){cout<<″classBfunc1″<

virtualvoidfunc2(){cout<<″classBfunc2″<

};

下面正确的叙述是()

A.A:

:

func2()和B:

:

func1()都是虚函数

B.A:

:

func2()和B:

:

func1()都不是虚函数

C.B:

:

func1()是虚函数,而A:

:

func2()不是虚函数

D.B:

:

func1()不是虚函数,而A:

:

func2()是虚函数

第二部分非选择题(共80分)

二、填空题(本大题共10小题,每小题2分,共20分)不写解答过程,将正确的答案写在每小题的横线处。

错填或不填均无分。

11.定义类的动态对象数组时,系统只能够自动调用该类的_________构造函数对其进行初始化。

12.在C++程序设计中,建立继承关系倒挂的树应使用_________继承。

13.表达式cout<

14.基类的公有成员在派生类中的访问权限由_________决定。

15.C++支持的两种多态性分别是_________多态性和_________多态性。

16.C++中语句constchar*constp=″hello″;所定义的指针p和它所指的内容都不能被_________。

17.假定AB为一个类,则语句AB(AB&x);为该类_________构造函数的原型说明。

18.将关键字const写在成员函数的_________和_________之间时,所修饰的是this指针。

19.在C++中,访问一个对象的成员所用的运算符是_________,访问一个指针所指向的对象的成员所用的运算符是_________。

20.派生类从一个或多个以前定义的该类的_________继承数据和函数。

三、改错题(本大题共5小题,每小题2分,共10分)

21.指出下面程序段中的错误,并说明出错原因。

classA{

inta,b;

public:

A(intaa,intbb){a=aa;b=bb;}

};

Ax(2,3),y(4);

22.指出并改正下面利用类模板的对象定义中的错误。

template

classTany{

Tx,y;

public:

Tany(Ta,Tb){x=a,y=b;}

Tsum(){returnx+y;}

};

Tany(int)obj(10,100);

23.指出下面程序段中的错误,并说明出错原因。

classone{

private:

inta;

public:

voidfunc(two&);

};

classtwo{

private:

intb;

friendvoidone:

:

func(two&);

};

voidone:

:

func(two&r)

{

a=r.b;

}

24.指出下面程序段中的错误,并说明出错原因。

#include

classA{

public:

voidfun(){cout<<″a.fun″<

};

classB{

public:

voidfun(){cout<<″b.fun″<

voidgun(){cout<<″b.gun″<

};

classC:

publicA

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

当前位置:首页 > 教学研究 > 教学反思汇报

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

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