计算机等级考试题库及答案_第1页
计算机等级考试题库及答案_第2页
计算机等级考试题库及答案_第3页
计算机等级考试题库及答案_第4页
计算机等级考试题库及答案_第5页
已阅读5页,还剩129页未读, 继续免费阅读

下载本文档

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

文档简介

计算机编程模拟试题及答案

单项选择题(每小题1分,共20分)

1.编写C++程序一般需经过地几个步骤依次是()。

A.编辑,调试,编译,连接B.编辑,编译,连接,运行

C.编译,调试,编辑,连接D.编译,编辑,连接,运行

2.决定C++语言中函数地返回值类型地是()»

A.return语句中地表达式类型B.调用该函数时系统随机产生地类型

C.调用该函数时地主调用函数类型I).在定义该函数时所指定地数据类型

3.下面叙述不正确地是()。

A.派生类一般都用公有派生

B.对基类成员地访问需要是无二义性地

C.赋值兼容规则也适用于多重继承地组合

D.基类地公有成员在派生类中仍然是公有地

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

就是()»

A.类B.对象C.函数体D.数据块

5.在公有派生类地成员函数不能直接访问基类中继承来地某个成员,则该成员一定是基类中

地()。

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

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

6.对基类与派生类地关系描述中,错误地是()。

A.派生类是基类地具体化B.基类继承了派生类地属性

C.派生类是基类定义地延续D.派生类是基类地特殊化

7.关于this指针使用说法正确地是()。

A.保证每个对象拥有自己地数据成员,但共享处理这些数据地代码

B.保证基类私有成员在子类中可以被访问

C.保证基类保护成员在子类中可以被访问

D.保证基类公有成员在子类中可以被访问

8.所谓多态性是指()。

A.不同地对象调用不同名称地函数B.不同地对象调用相同名称地函数

C.一个对象调用不同名称地函数D.一个对象调用不同名称地对象

9.一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()。

A.内联函数B.重载函数

C.递归函数D.嵌套函数

10.在C++语言中,数据封装要解决地问题是()。

A.数据地规范化B.便于数据转换

C.避免数据丢失D.防止不同模块之间数据地非法访问

11.假设ClassY:publicX,即类Y是类X地派生类,则说明一个Y类地对象时与删除Y类对象

时,调用构造函数与析构函数地次序分别为()。

A.X,Y;Y,XB.X,Y;X,Y

C.Y,X;X,YD.Y,X;Y,X

12.适宜采用inline定义函数情况是()。

A.函数体含有循环语句B.函数体含有递归语句

C.函数代码少,频繁调用D.函数代码多,不常调用

13.假定一个类地构造函数为A(intaa,intbb){a=aa-;b=a*bb++;},则执行Ax(4,5);语

句后,x.a与x.b地值分别为()。

A.3与15B.5与4C.4与20D.20与5

14.记录集类CRecordset有一个成员函数:DoFieldExchange。它地作用是()。

A.记录集与视图之间进行数据交换B.记录集与数据源之间进行数据交换

C.记录集与对话框之间进行数据交换D.数据源与视图之间进行数据交换。

15.下列不能作为类地成员地是()«

A.自身类对象地指针B.自身类对象

C.自身类对象地引用D.另一个类地对象

16.类模板地使用实际上是将类模板实例化成一个()。

A.函数B.对象C.类D.抽象类

17.下列程序地输出结果是()。

#include〈iostream.h>

voidmain(){

intn口[3]={10,20,30,40,50,60};int(*p)[3];

P=n;

cout<<p[0][0]<<","〈〈*(p[0]+1)(*p)[2]«endl;

}

A.10,30,50B.10,20,30

C.20,40,60D.10,30,60

18._RecordsetPtr接口对应于()。

A.连接对象B.命令对象C.记录集对象D.字段对象

19.假定AA为一个类,a()为该类公有地函数成员,x为该类地一个对象,则访问x对象中函数

成员a()地格式为()»

A.x.aB.x.a()C.x->aD.(*x).a()

20.在Windows环境下,为了方便绘图,系统定义了几种坐标映射模式,其中y轴正向垂直向下

地映射模式是()o

A.MMLOMETRICB.MMTEXTC.MMHIENGLISHD.MMTWIPS

二,填空题(每小题1分,共20分)

1.C++地流库预定义了4个流,它们是cin,cout,clog与。

2.每个对象都是所属类地一个。

3.在已经定义了整型指针ip后,为了得到一个包括10个整数地数组并由ip所指向,应使用

语句。

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

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

6.表达式cout〈<endl还可表示为。

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

8.假如一个类地名称为MyClass,使用这个类地一个对象初始化该类地另一个对象时,可以调

用构造函数来完成此功能。

9.对赋值运算符进行重载时,应声明为____函数。

10.如果要把A类成员函数f()且返回值为void声明为类B地友元函数,则应在类B地定义中

加入地语句。

11.下列程序段地输出结果是。

for(i=0,j=10,k=0;i<=j;i++,j-=3,k=i+j);cout«k;

12.String类地方法返回查找到地字符串在主串地位置。

13.intn=0;while(n=l)n++;while循环执行次数是。

14.控制格式输入输出地操作中,函数是用来设置填充字符。要求给出函数名与参数类

型。

15.C++语言支持地两种多态性分别是编译时地多态性与地多态性。

16.设函数sum是由函数模板实现地,并且sum(3,6)与sum(4.6,8)都是正确地函数调用,则函

数模板具有个类型参数。

17.执行下列代码:stringstr("HelloC++”);cout<<str.substr(5,3);程序地输出结果

是o

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

19.定义类动态对象数组时,元素只能靠自动调用该类地来进行初始化。

20.已知有20个元素int类型向量VI,若用VI初始化为V2向量,语句是。

三,改错题(每小题2分,共10分)

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

1.

#include<iostream.h>

classTest{

private:intx,y=20;

public:

Test(inti,intj){x=i,y=j;}

intgetx(){returnx;}

intgety(){returny;}

};

voidmain(){Testmt(10,20);cout«mt.getx()«endl;cout<<mt.gety()«endl;}

2.

#include<iostream.h>

classTest{

intx,y;

public:

fun(inti,intj){x=i;y=j;}

show(){

cout<<,zx=,/«x;

if(y)cout<<,z,y=/z<<y«endl;

cout<<endl;}

);

voidmain(){Testa;a.fun(l);a.show。;a.fun(2,4);a.show();}

3.

#include<iostream.h>

classA{

inti;

public:

virtualvoidfun()=0;

A(inta){i=a;}

);

classB:publicA{

intj;

public:

voidfunO{cout<<z?B::fun()\n〃;}

B(intm,intn=0):A(m),j(n){}

};

voidmainO{A*pa;Bb(7);pa=&b;}

4.

#include<iostream.h>

classX(

public:

intx;

public:

X(intx){cout<<this->x=x«endl;}

X(X&t){x=t.x;cout<<t.x«endl;}

voidfun(X);

);

voidfun(Xt){cout«t.x<<endl;}

voidmainO{fun(X(10));}

5.

#include<iostream.h>

#include<string.h>

classBas{

public:

Bas(char*s=〃\0〃){strcpy(name,s);}

voidshow();

protected:

charname[20];

);

Basb;

voidshow(){cout<<〃name:〃<<«endl;}

voidmainO{Basd2("hello");show();)

四,完成程序题(每小题4分,共20分)

1.在下面程序横线处填上适当字句,以使该程序执行结果为:

504342110

10.111.1

ttinclude<iostream.h>

template<classT>

voidf(){

__»

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

t=a[i],a[i]=a[n-l-i],a[n-l-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;

)

2.在下面程序地底画线处填上适当地字句,使该程序执行结果为40o

ftinclude<iostream.h>

classTest{

public:

Test(inti=0){x=i+x;}

intGetnum(){returnTest::x+7;}

);

_______»

voidmain(){

Testtest;cout<<test.GetnumO<<endl;

}

3.在下列程序地空格处填上适当地字句,使输出为:0,2,10。

#include<iostream.h>

#include<math.h>

classMagic{

doublex;

public:

Magic(doubled=0.00):x(fabs(d)){}

Magicoperator+(){returnMagic(sqrt(x*x+c.x*c.x));)

operator<<(ostream&stream,Magic&c){stream<<c.x;returnstream;}

);

voidmainO{

Magicma;cout<<ma<<z/,/z<<Magic(2)<<z,,,z<<ma+Magic(-6)+Magic(-8)<<endl;

)

4.下面是一个输入半径,输出其面积与周长地C++程序,在下划线处填上正确地语句。

#include<iostream.h>

voidmainO(

doublerad;cout〈〈〃rad=〃;cin>>rad;double1=2.0*pi*rad;doubles=pi*rad*rad;

cout<<z,\nThelongis:"z<<l<<endl;cout<<,,Theareais:^«s<<endl;}

5.程序实现大写字母转换成小写字母。

ttinclude<iostream.h>

voidmainO{

chara;______;cin»a;

if(_______)a=a+i;

cout«a«endl;

)

五,程序分析题(每小题4分,共16分)给出程序输出结果。

1.

#include<iostream.h>

classa(

public:

virtualvoidprint(){cout«”aprog…”<<endl;};

);

classb:publica{};

classc:publicb{

public:

voidprint(){cout〈〈“cprog...,z<<endl;}

);

voidshow(a*p){(*p).print();}

voidmain(){

aa;bb;cc;

show(&a);show(&b);show(ftc);

)

2.

#include<math.h>

#include<iostream.h>

#include<iomanip.h>

boolfun(longn);

voidmain(){

longa=10,b=30,1=0;

if(a%2==0)a++;

for(longm=a;m<=b;in+=2)

if(fun(m)){

if(l++%10==0)cout<<endl;

cout«setw(5)<<m;

)

)

boolfun(longn){

intsqrtm=(int)sqrt(n);

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

if(n%i==0)returnfalse;

returntrue;

)

3.

#include<iostream.h>

classTest{

intx,y;

public:

Test(inti,intj=0){x=i;y=j;}

intget(inti,intj){returni+j;}

);

voidmain(){

Testtl(2),t2(4,6);

int(Test::*p)(int,int=10);

p=Test::get;

cout«(tl.*p)(5)«endl;

Test*pl=&t2;

cout«(pl->*p)(7,20)«endl;

}

4.

#include<iostream.h>

#include<string.h>

#include<iomanip.h>

classstudent{

charname[8];

intdeg;

charlevel[7];

friendclassprocess;〃说明友元类

public:

student(charna[],intd){strcpy(name,na);deg=d;}

);

classprocess{

public:

voidtrans(student&s){

inti=s.deg/10;

switch(i){

case9:strcpy(s.level,“优〃);break;

case8:strcpy(s.level,,z良〃);break;

case7:strcpy(s.level,〃中〃);break;

case6:strcpy(s.level,〃及格〃);break;

default:strcpy(s.level,〃不及格”);

)

)

voidshow(student&s){

cout<<setw(10)<<<<setw(4)<<s.deg«setw(8)«s.level«endl;}

);

voidmain(){

studentst[]={student(,z张三〃,78),student(〃李四〃,92),student(〃王五

”,62),student(〃孙六“,88));

processp;

cout<〈”结果:〃<<"姓名"<<setw(6)成绩"<<setw(8)"等级〃<<endl;

for(inti=0;i<4;i++){

p.trans(st[i]);

p.show(st[i]);

)

)

六,程序设计题(每小题7分,共14分)

1.定义一个平面上点地类Point,该类包含平面坐标x,y与统计当前创建该对象个数地计数

器count,构造函数,析构函数,以及能够输出计数器count地函数。设计程序,实现在任意时候都

能够访问计数器。

2.已定义一个Shape抽象类,在此基础上派生出矩形Rectangle与圆形Circle类,二者都有

GetPerimO函数计算对象地周长,并编写测试main()函数。

模拟试题(二)参考答案

一,单项选择题(每小题1分,共20分)

1B2D3D4A5A

6B7A8B9A10D

11A12C13C14B15B

16C17B18C19B20B

二,填空题(每小题1分,共20分)

1.cerr2.实例3.int*ip=newint[10];4.class

5.无参6.'\n'7.->8.复制或拷贝9.类成员

10.friendvoidA::f();11.412.find13.无限次

14.setfill(char)15.运行时16.217.C++18.类

19.无参构造函数20.vector<int>V2(VI);

三,改错题(每小题2分,共10分)

1.答案:intx,y=20;在类内部不能对数据成员直接赋值。[修改]intx,y;

2.答案:inti,intJ调用时,既有一个参数,也有两个参数,且没有重载,所以参数需要带默

认值。所以inti,intj错误。[修改]inti,intj=0〃注j只要有一个int类型地数

据就行。

3.答案:B(intm,intn=0):A(m),j(n){}

因为基类是抽象类,不能被实例化,所以在派生类中不能调用初始化基类对象。所以

B(intm,intn=0):A(m),j(n){}错误,删去A(m)。[修改]B(intm,intn=0):j(n){)

4.答案:(^0111«1±1$->*=*<<0血1;要输出this->x=x表达式地值要加括号。

[修改]cout<<(this->x=x)<<endl;

5.答案:voidshow。;是普通函数不是成员函数,但是要访问类成员,需要定义为友元函数。

[修改]friendvoidshow();

四,完成程序题(每小题4分,共20分)

1.答案:Ta[],intn,Tt=0;

2.答案:staticintx;,intTest::x=30;

3.答案:operator+(Magic&c),friendostream&operator

4.答案:#definepi3.14159

5.答案:inti=32;»a>=A&&a<=Z

五,程序分析题(每小题4分,共16分),给出程序输出结果。

1.

aprog...

aprog...

cprog...

2.111317192329

3.1527

4.结果:姓名成绩等级

张三78中

李四92优

王五62及格

孙六88良

六,程序设计题(每小题7分,共14分)

1.

classShape{

public:

Shape(){}

#include<iostream.h>

classPoint(

public:

Point(intxx=0,intyy=0){X=xx;Y=yy;count++;}〃创建对象时计数器加1

"Point(){count—;}〃对象消失时计数器减1

intGetX(){returnX;}

intGetY(){returnY;}

staticvoidGetC(){cout<<”平面当前共有:"<<count<<〃个点"<<endl;}

private:

intX,Y;

staticintcount;

);

intPoint::count=0;〃注意静态变量地初始化位置

intmain(){

Point::GetC();〃直接通过类名访问静态函数

PointA(4,5);

cout«A.GetX()«A.GetY();

A.GetCO;

PointB(2,3);

cout«B.GetX()«B.GetY();

Point::GetC();

ruturn0;

)

2.

classRectangle:publicShape(

public:

Rectangle(floati,floatj):L(i),W(j){}

"Rectangle(){}

floatGetPerimO{return2*(L+W);}

private:

floatL,W;

);

classCircle:publicShape(

public:

Circle(floatr):R(r){)

floatGetPerimO(return3.14*2*R;}

private:

floatR;

};

voidmain(){

Shape*sp;

sp=newCircle(lO);

cout«sp->GetPerim()«endl;

sp=newRectangle(6,4);

cout<<sp->GetPerim()<<endl;

)

3.3模拟试题(三)

一,选择题(每小题2分,共20分)

1.说明虚函数地关键字是()。

A.inlineB.virtualC.defineD.static

2.在每个C++程序中都需要包含有这样一个函数,该函数地函数名为()o

A.mainB.MAINC.nameD.function

3.cout是某个类地标准对象地引用,该类是()。

A.ostreamB.istreamC.stdoutD.stdin

4.如果在类外有函数调用CPoint::func();则函数func()是类CPoint地(4

A.私有静态成员函数B.公有非静态成员函数

C.公有静态成员函数D.友元函数

5.如果class类中地所有成员在定义时都没有使用关键字public,private或protected,则

所有成员缺省定义为()。

A.publicB.protectedC.privateD.static

6.一个类地所有对象共享地是()o

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

C.保护数据成员D.静态数据成员

7.动态联编所支持地多态性称为().

A.虚函数B.继承C.编译时多态性D.运行时多态性

8.CRecordView类是()类地派生类。

A.CListViewB.CEditViewC.CFormViewD.CTreeView

9.所有GDI类均从一个GDI基类派生,这个基类是()。

A.CBrushB.CPaletteC.CRgnD.CGdiObject

10.类型转换函数()o

A.不能带有参数B.只能带一个参数

C.只能带2个参数D.只能带3个参数

判断正误题(每小题2分,共12分)判断正误,在题后地括号内,正确地划上“V”

错误地划上“x二

1.虚函数在基类与派生类之间定义,且要求函数原型完全一致。()

2.抽象类可以用来直接创建对象。()

3.内联函数中可以出现递归语句。()

4.模板类与类模板地意义完全相同。()

5.常对象只能调用常成员函数。()

6.重载函数要求函数有相同地函数名,但具有不同地参数序列。()

三,填空题(每小题2分,共12分)

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

2.函数模板中紧随template之后尖括号内地类型参数都要寇以保留字<

3.编译时多态性可以用函数实现。

4.拷贝构造函数用它所在类地作为参数。

5.用关键字static修饰地类地成员称为成员。

6.重载运算符“十”地函数名为____o

四,程序分析题(每小题5分,共20分)给出下面各程序地输出结果。

1.

#include<iostream>

usingnamespacestd;

classCArray{

public:

CArray(intiArray[],intiSize):m_pArray(iArray),miSize(iSize){}

intGetSizeO{returnm_iSize;}

intfeoperator[](intiIndex){returnm_pArray[iIndex-1];}

private:

int*m_pArray;〃指向一个数组空间

intm_iSize;〃数组元素个数

);

intmain(){

ints[>{3,7,2,1,5};

CArrayoArray(s,5);

oArray[1]=9;

for(inti=1;i<=5;i++)cout<<oArray[i]<<〃〃;

cout«endl;

return0;

)

执行结果是:

2.

#include<iostream>

usingnamespacestd;

template<classType>

voidPrint(Typea[],intn){

for(inti=0;i<n;i++)cout<<a[i]«"

)

intmain(){

inta[]={5,6,8};

doubleb[]={6.8,9.6);

Print(a,sizeof(a)/sizeof(int));

Print(b,2);

cout<<endl;

return0;

执行结果是:

3.

ftinclude<iostream>

usingnamespacestd;

classCTest{

public:

CTest(intiVar):m_iVar(iVar){m_iCount++;}

~CTest(){}

voidPrint()const;

staticintGetCount(){returnm_iCount;}

private:

intm_iVar;

staticintmiCount;

};

intCTest::m_iCount=0;

voidCTest::Print()const{cout<<this->m_iVar<<"<<this->m_iCount<<〃〃;}

intmain(){

CTestoTestl(6);

oTestl.Print();

CTestoTest2(8);

oTest2.Print();

cout<<CTest::GetCount();

cout«endl;

return0;

)

执行结果是:

4.

#include<iostream>

usingnamespacestd;

classCTest{

public:

CTest(intiX=0,intiY=0,intiZ=0):m_iZ(iZ){m_iX=iX;m_iY=iY;}

voidPrint(){cout«m_iX«endl;cout«m_iY<<endl;}

voidPrint()const{cout<<m_iZ<<endl;}

private:

intm_iX,m_iY;

constintm_iZ;

);

intmain(){

CTestoTestl;

oTestl.Print();

CTestoTest2(1,6,8);

oTest2.Print();

constCTestoTest3(6,0,18);

oTest3.Print();

cout«endl;

return0;

)

执行结果是:______

五,程序改错题(每小题5分,共20分)指出下面程序中地错误,说明错误原因,并

加以改正。

1.下面程序中类地定义有一处错误,请指出出错地行,说明错误原因,并加以改正。

#include<iostream>

usingnamespacestd;

classCTest(

public:

CTest(intiVar=0):miArr(iVar){cout«〃构造函数:"<<miArr«endl;}

void"CTest(){cout<<〃析造函数:〃<<m_iArr<〈endl;}

private:

intm_iArr;

};

intmain(){

CTestoTestl,oTest2(8);

cout<<endl;

return0;

)

2.下面程序中类地定义中有一处错误,请指出出错地行,说明错误原因,并加以改正。^include

<iostream>

usingnamespacestd;

classCTest{

public:

CTest(intiA=0,intiB):m_iA(iA),m_iB(iB){}

voidShow(){cout«m_iA<<〃,〃«m_iB«endl;}

private:

intm_iA,miB;

intmain(){

CTestoTest(12,16);

oTest.Show();

cout«endl;

return0;

)

3.下面程序中类地定义中有一处错误,请指出出错地行,说明错误原因,并加以改正。#include

<iostream>

usingnamespacestd;

classCTest{

public:

CTest(intiVar=0){m_iVar=iVar}

voidPrint()const{cout<<m_iVar«endl;}

private:

constintm_iVar;

};

intmain(){

constCTestoTest(16);

oTest.Print();

cout«endl;

return0;

)

4.下面程序中有一处错误,请指出出错地行,说明错误原因,并加以改正。

ttinclude<iostream>

usingnamespacestd;

classCBase{

public:

CBase(intiBase=0):m_iBase(iBase){}

virtualvoidShow()=0;

intGet()const{returnm_iBase;}

private:

intm_iBase;

);

classCDerive:publicCBase(

public:

CDerive(intiBase=0,intiDerive=0):CBase(iBase){m_iDerive=iDerive;}

voidShow(){cout<<CBase::Get()<<"J«miDerive«endl;}

private:

intHIiDerive;

intmain(){

CBaseobj(10);

obj.Show();

return0;

六,编程题(每小题8分,共16分)

1.设—个类Rect,要求如下:

⑴该类中地私有数据成员length,width存放它地长与宽,并且设置它们地默认值是0。

⑵通过成员函数设置其长与宽,并确保长与宽都在(0,50)范围之内。

⑶实现求周长函数GetPerimeter()。

2.定义一个复数类Cplex,定义带有2个参数(其中一个为缺省参数)地构造函数,显示复数

值地函数ShowO,重载“+”运算符(用成员函数实现),并编写测试程序进行测试。

模拟试题(三)参考答案

一,选择题(每小题2分,共20分)

1B2A3A4C5C

6D7D8C9D10A

二,判断正误题(每小题2分,共12分)

1.V2.X3.X4.X5.V6.V

三,填空题(每小题2分,共12分)

1.new2.classsKtypename3.重载

4.对象5.静态6.operator+

四,程序分析题(每小题5分,共20分)给出下面各程序地输出结果。

1.972152.5686.89.6

3.618224.001618

五,程序改错题(每小题5分,共20分)。

1.出错行:void~CTest()。原因:析造函数不能有返回值类型改正:去掉void

2.出错行:CTest(intiA=0,intiB):m_iA(iA),m_iB(iB)

原因:带缺省值地参数应放在参数表地尾部,其后不允许出现不带缺省值地参数改正:

CTest(intiA=0,intiB=0):m_iA(iA),m_iB(iB)或CTest(intiA,intiB

0):m_iA(iA),m_iB(iB)或CTest(intiA,intiB):m_iA(iA),m_iB(iB)

3.出错行:m_iVar=iVaro原因:常数据成员只能通过初始化表方式进行初始化。

改正:去掉m_iVar=iVar行,在函数头后加初始化表,即改为:CTest(intiVar

0):m_iVar(iVar)

4.出错行:主函数中CBaseobj(10);原因:抽象类不能用来直接创建对象。

改正:将此行改为:CDeriveobj(10);

六,编程题(每小题8分,共16分)

1.

#include<iostream.h>

classRect{

private:

doublelength,width;

public:

Rect(double1=0,doublew=0):length(1),width(w){}

voidSet(double1,doublew){

if(length<=0||length>=50||width<=0||width>=50)

throw〃数据不在指定范围(0,50)!〃;〃抛出异常

length=l;width=w;

)

doubleGetPerimeter(){return2*(length+width);}

);

intmainO{〃检查异常

try(

Rectobj(1,8);

cout<<“周长:〃<<obj.GetPerimeter()«endl;

}catch(char*str){〃捕捉异常,处理异常

cout«〃异常信息:〃<<str«endl;〃输出异常信息

}

return0;

)

2.

#include<iostream.h>

classCplex{

public:

Cplex(doubledReal,doubledImage=0){

m_dReal=dReal;

mdlmage=dlmage;

)

voidShow(){

cout<<m_dReal;

if(m_dImage>0)cout<<,/+/,«m_dlmage<<,/i,,«endl;

elseif(m_dImage<0)cout〈<"-"〈〈-m_dIniage<<〃i〃<<endl;

)

Cplexoperator+(constCplex&obj){

CplexobjTemp(mdReal+obj.mdReal,mdlmage+obj.mdimage);

returnobjTemp;

)

private:

doublemdReal,mdlmage;

);

intmain(){

Cplexobjl(2,6),obj2(3,8),obj3(0);

objl.Show();

obj2.Show();

obj3.Show();

obj3=objl+obj2;

obj3.Show();

return0;

)

3.4模拟试题(四)

单项选择题(每小题1分,共20分)

1.静态成员函数没有()。

A.返回值B.this指针C.指针参数D.返回类型

2.假定AB为一个类,则执行“ABa(2),b[3],*p⑷;”语句时调用该类构造函数地次

数为()。

A.3'B.4C.5D.9

3.有关多态性说法不正确地是()。

A.C++语言地多态性分为编译时地多态性与运行时地多态性

B.编译时地多态性可通过函数重载实现

C.运行时地多态性可通过模板与虚函数实现

D.实现运行时多态性地机制称为动态多态性

4.假定一个类地构造函数为"A(inti=4,intj=0){a=i;b=j;}”,则执行

“Ax(1);”语句后,x.a与x.b地值分别为()。

A.1与0B.1与4C.4与0I).4与1

5.类MyA地拷贝初始化构造函数是(

A.MyA()B.MyA(MyA*)C.MyA(MyA&)D.MyA(MyA)

6.STL中地双端队列为().

A.顺序容器B.容器适配器C.迭代器适配器D.泛函适配器

7.友元关系不能()o

A.提高程序地运行效率B.是类与类地关系

C.是一个类地成员函数与另一个类地关系D.继承

8.实现两个相同类型数加法地函数模板地声明是(

A.add(Tx,Ty)B.Tadd(x,y)

C.Tadd(Tx,y)D.Tadd(Tx,Ty)

9.已定义了一个类A并有语句A*pa=newA(5);那么以下说法正确地是()。

A.该语句会创建A类地一个对象,并将此对象地地址赋给指针pa

B.该语句会创建A类地5个对象,且它们地地址是连续地

C.当指针变量pa超出其作用域时,pa与为对象分配地空间都将被自动释放

D.类A中一定有一个显式定义地构造函数与一个显式定义地虚析构函数

10.现创建一个黑色地虚线画笔对象pen,语句为:

pen.CreatePen(nPenStyle,1,RGB(0,0,0)),则参数nPenStyle地取值为()«

A.PS_S0LIDB.PS_NULLC.PS_DASHD.PS_D0T

11.如果从原有类定义新类可以实现地是()o

A.信息隐藏B.数据封装C.继承机制D.数据抽象

12.下面有关类说法不正确地是()。

A.一个类可以有多个构造函数B.一个类只有一个析构函数

C.析构函数需要指定参数D.在一个类中可以说明具有类类型地数据成员

13.对函数原型为int&min(int&a,int&b);地全局函数,下列语句块哪个是错误地()。

A.intx=10,y=5;min(x,y)=100;B.intx=10,y=5,z;z=min(x,y+=x);

C.intx=10,y=5;min(x,10)=y;D.intx=10,y=5;x=min(x,y);

14.下列有关重载函数地说法中正确地是()。

A.重载函数需要具有不同地返回值类型B.重载函数参数个数需要相同

C.重载函数需要有不同地形参列表D.重载函数名可以不同

15.this指针存在地目地是()。

A.保证基类私有成员在子类中可以被访问

B.保证基类保护成员在子类中可以被访问

C.保证每个对象拥有自己地数据成员,但共享处理这些数据成员地代码

D.保证基类公有成员在子类中可以被访问

16.关于new运算符地下列描述中,错误地是()。

A.它可以用来动态创建对象与对象数组

B.使用它创建地对象或对象数组可以使用运算符delete删除

C.使用它创建对象时要调用构造函数

D.使用它创建对象数组时需要指定初始值

17.已知:p是一个指向类A数据成员m地指针,A1是类A地一个对象。如果要给m

赋值为5,正确地是()。

A.Al.p=5;B.Al->p=5;C.Al.*p=5;D.*A1.p=5;

18.在ADO地记录集对象中,若要删除当前行,则Delete()方法地AffectRecords参数地取

值为()。

A.adAffectCurrentB.adAffectGroup

C.adAffectAl1D.adAffectChapters

19.C++类体系中,不能被派生类继承地有()。

A.常成员函数B.构造函数C.虚函数D.静态成员函数

20.静态成员函数不能说明为(

A.整型函数B.浮点函数C.虚函数D.字符型函数

二,填空题(每小题1分,共20分)

1.无论是什么继承方式,派生类地成员都不能访问基类属性地成员。

2.抽象类中至少要有一个函数。

3.一个抽象类地派生类可以实例化地必要条件是实现了所有地。

4.下面程序地输出结果为____。

#include<iostream.h>

voidmain(){

intnum=2,i=6;

do{

num++;

}while(一i);

cout«num«endl;

)

5.静态成员函数,友元函数,构造函数与析构函数中,不属于成员函数地是。

6.在用C++进行程序设计时,最好用代替malloc«

7.由const修饰地对象称为。

8.假定AB为一个类,则语句AB(AB&x);为该类____函数地原型说明。

9.基类地公有成员在派生类中地访问权限由____决定。

10.不同对象可以调用相同名称地函数,但执行完全不同行为地现象称为O

11.this指针始终指向调用成员函数地。

12.C++程序地源文件扩展名为。

13.语句序列:ifstreaminfile;infile.open("data,dat");地功能可用一个语句实

现,这个语句是O

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

15.单目运算符作为类成员函数重载时,形参个数为。

温馨提示

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

评论

0/150

提交评论