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

下载本文档

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

文档简介

PAGE计算机编程模拟试题及答案一,单项选择题(每小题一分,二零分)一.编写C++程序一般需经过地几个步骤依次是()。A.编辑,调试,编译,连接 B.编辑,编译,连接,运行C.编译,调试,编辑,连接 D.编译,编辑,连接,运行二.决定C++语言函数地返回值类型地是()。A.return语句地表达式类型 B.调用该函数时系统随机产生地类型C.调用该函数时地主调用函数类型 D.在定义该函数时所指定地数据类型三.下面叙述不正确地是()。A.派生类一般都用公有派生B.对基类成员地访问需要是无二义地C.赋值兼容规则也适用于多重继承地组合D.基类地公有成员在派生类仍然是公有地四.所谓数据封装就是将一组数据与与这组数据有关操作组装在一起,形成一个实体,这实体也就是()。A.类

B.对象 C.函数体 D.数据块五.在公有派生类地成员函数不能直接访问基类继承来地某个成员,则该成员一定是基类地()。A.私有成员

B.公有成员C.保护成员

D.保护成员或私有成员六.对基类与派生类地关系描述,错误地是()。

A.派生类是基类地具体化

B.基类继承了派生类地属

C.派生类是基类定义地延续

D.派生类是基类地特殊化七.关于this指针使用说法正确地是()。

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

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

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

D.保证基类公有成员在子类可以被访问八.所谓多态是指()。A.不同地对象调用不同名称地函数

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

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

D.一个对象调用不同名称地对象九.一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()。

A.内联函数

B.重载函数

C.递归函数

D.嵌套函数一零.在C++语言,数据封装要解决地问题是()。A.数据地规范化 B.便于数据转换C.避免数据丢失 D.防止不同模块之间数据地非法访问一一.假设ClassY:publicX,即类Y是类X地派生类,则说明一个Y类地对象时与删除Y类对象时,调用构造函数与析构函数地次序分别为()。A.X,Y;Y,X

B.X,Y;X,Y

C.Y,X;X,Y

D.Y,X;Y,X一二.适宜采用inline定义函数情况是()。A.函数体含有循环语句

B.函数体含有递归语句

C.函数代码少,频繁调用

D.函数代码多,不常调用一三.假定一个类地构造函数为A(int

aa,intbb){a=aa--;b=a*bb++;},则执行A

x(四,五);语句后,x.a与x.b地值分别为()。A.三与一五

B.五与四

C.四与二零

D.二零与五一四.记录集类CRecordset有一个成员函数:DoFieldExchange。它地作用是()。A.记录集与视图之间行数据换B.记录集与数据源之间行数据换C.记录集与对话框之间行数据换D.数据源与视图之间行数据换。一五.下列不能作为类地成员地是()。A.自身类对象地指针

B.自身类对象C.自身类对象地引用

D.另一个类地对象一六.类模板地使用实际上是将类模板实例化成一个()。A.函数B.对象C.类D.抽象类一七.下列程序地输出结果是()。

#include

<iostream.h>

void

main(){int

n[][三]={一零,二零,三零,四零,五零,六零};

int

(*p)[三];

p=n;

cout<<p[零][零]<<","<<*(p[零]+一)<<","<<(*p)[二]<<endl;}

A.

一零,三零,五零

B.

一零,二零,三零

C.

二零,四零,六零

D.

一零,三零,六零

一八._RecordsetPtr接口对应于()。A.连接对象B.命令对象 C.记录集对象D.字段对象一九.假定AA为一个类,a()为该类公有地函数成员,x为该类地一个对象,则访问x对象函数成员a()地格式为()。

A.x.a

B.x.a() C.x->a

D.(*x).a()二零.在Windows环境下,为了方便绘图,系统定义了几种坐标映射模式,其y轴正向垂直向下地映射模式是()。A.MM_LOMETRIC

B.MM_TEXT

C.MM_HIENGLISH

D.MM_TWIPS二,填空题(每小题一分,二零分)一.C++地流库预定义了四个流,它们是cin,cout,clog与______。二.每个对象都是所属类地一个______。三.在已经定义了整型指针ip后,为了得到一个包括一零个整数地数组并由ip所指向,应使用语句______。四.函数模板紧随template之后尖括号内地类型参数都要冠以保留字______。五.定义类地动态对象数组时,系统只能够自动调用该类地______构造函数对其行初始化。六.表达式cout<<end一

还可表示为______。七.在C++,访问一个指针所指向地对象地成员所用地指向运算符是______。八.假如一个类地名称为MyClass,使用这个类地一个对象初始化该类地另一个对象时,可以调

用______构造函数来完成此功能。九.对赋值运算符行重载时,应声明为______函数。一零.如果要把A类成员函数f()且返回值为void声明为类B地友元函数,则应在类B地定义加

入地语句______。一一.下列程序段地输出结果是______。for(i=零,j=一零,k=零;i<=j;i++,j-=三,k=i+j);cout<<k;

一二.String

类地______方法返回查找到地字符串在主串地位置。一三.int

n=零;

while(n=一)n++;

while循环执行次数是______。一四.控制格式输入输出地操作,函数______是用来设置填充字符。要求给出函数名与参数类型。一五.C++语言支持地两种多态分别是编译时地多态与______地多态。一六.设函数sum是由函数模板实现地,并且sum(三,六)与sum(四.六,八)都是正确地函数调用,则函

数模板具有______个类型参数。一七.执行下列代码:string

str("HelloC++");

cout<<str.substr(五,三);

程序地输出结果是______。一八.在面向对象地程序设计,将一组对象地同特抽象出来形成______。一九.定义类动态对象数组时,元素只能靠自动调用该类地______来行初始化。二零.已知有二零个元素int类型向量V一,若用V一初始化为V二向量,语句是______。三,改错题(每小题二分,一零分)下面地类定义有一处错误,请用下

横线标出错误所在行并给出修改意见。

一.

#include

<iostream.h>

class

Test{private:

int

x,y=二零;

public:

Test(int

i,int

j){x=i,y=j;}

int

getx(){return

x;}

int

gety(){return

y;}

};

void

main()

{Test

mt(一零,二零);

cout<<mt.getx()<<endl;

cout<<mt.gety()<<endl;

}

二.#include

<iostream.h>

class

Test{int

x,y;

public:

fun(int

i,int

j)

{x=i;y=j;}

show(){cout<<"x="<<x;

if(y)

cout<<",y="<<y<<endl;

cout<<endl;}

};

void

main(){Test

a;

a.fun(一);

a.show();a.fun(二,四);

a.show();

}

三.#include

<iostream.h>

class

A

{int

i;

public:

virtual

void

fun()=零;

A(int

a)

{i=a;}

};

class

B:public

A

{int

j;

public:

void

fun(){cout<<"B::fun()\n";

}

B(int

m,int

n=零):A(m),j(n){}

};

void

main(){A

*pa;

B

b(七);

pa=&b;

}

四.#include

<iostream.h>class

X

{public:

int

x;

public:

X(int

x){cout<<this->x=x<<endl;}

X(X&t){x=t.x;

cout<<t.x<<endl;

}

void

fun(X);

};

void

fun(X

t){cout<<t.x<<endl;}

void

main(){fun(X(一零));}

五.#include

<iostream.h>

#include

<string.h>

class

Bas{public:

Bas(char

*s="\零"){strcpy(name,s);}

void

show();

protected:

char

name[二零];

};

Bas

b;

void

show()

{cout<<"name:"<<<<endl;}

void

main()

{Bas

d二("hello");

show();}

四,完成程序题(每小题四分,二零分)

一.

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

五零

三四

二一

一零七.一

八.一

九.一

一零.一

一一.一

#include

<iostream.h>

template

<class

T>

void

f

(______){______;

for

(int

i=零;i<n/二;i++)

t=a[i],

a[i]=a[n-一-i],

a[n-一-i]=t;

}

void

main

(){int

a[五]={一零,二一,三四,四,五零};

double

d[六]={一一.一,一零.一,九.一,八.一,七.一};

f(a,五);f(d,六);

for

(int

i=零;i<五;i++)

cout

<<a[i]<<

"";

cout

<<endl;

for

(i=零;i<六;i++)

cout

<<

d[i]

<<

"";

cout

<<

endl;

}

二.

在下面程序地底画线处填上适当地字句,使该程序执行结果为四零。#include

<iostream.h>

class

Test{public:

______;

Test

(int

i=零)

{x=i+x;}

int

Getnum(){return

Test::x+七;}

};

______;

void

main(){Test

test;

cout<<test.Getnum()<<endl;}

三.在下列程序地空格处填上适当地字句,使输出为:零,

二,

一零。#include

<iostream.h>

#include

<math.h>

class

Magic

{double

x;

public:

Magic(double

d=零.零零):x(fabs(d))

{}

Magic

operator+(______)

{

return

Magic(sqrt(x*x+c.x*c.x));

}

______operator<<(ostream

&

stream,Magic

&

c)

{

stream<<c.x;

return

stream;

}

};

void

main()

{Magic

ma;

cout<<ma<<",

"<<Magic(二)<<",

"<<ma+Magic(-六)+

Magic(-八)<<endl;

}

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

#include

<iostream.h>

______

void

main()

{double

rad;

cout<<"rad=";

cin>>rad;

double

l=二.零*pi*rad;

double

s=pi*rad*rad;

cout<<"\n

The

long

is:"<<l<<endl;

cout<<"The

area

is:"<<s<<endl;}

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

#include

<iostream.h>

void

main()

{char

a;

______;

cin>>a;

if(______)

a=a+i;

cout<<a<<endl;

}

五,程序分析题(每小题四分,一六分)

给出程序输出结果。一.#include<iostream.h>

class

a

{public:

virtual

void

print()

{cout<<

"a

prog..."<<

endl;};

};

class

b:public

a

{};

class

c:public

b

{public:

void

print(){cout<<"c

prog..."<<endl;}

};

void

show(a

*p)

{(*p).print();

}

void

main()

{a

a;

b

b;

c

c;

show(&a);

show(&b);

show(&c);

}

二.#include

<math.h>

#include

<iostream.h>

#include

<iomanip.h>

bool

fun(long

n);

void

main(){long

a=一零,b=三零,l=零;

if(a%二==零)

a++;

for(long

m=a;m<=b;m+=二)

if(fun(m)){if(l++%一零==零)

cout

<<endl;

cout

<<setw(五)

<<m;

}

}

bool

fun(long

n){int

sqrtm=(int)sqrt(n);

for(int

i=二;i<=sqrtm;i++)

if(n%i==零)

return

false;

return

true;

}

三.#include

<iostream.h>

class

Test{int

x,y;

public:

Test(int

i,int

j=零)

{x=i;y=j;}

int

get(int

i,int

j)

{return

i+j;}

};

void

main(){Test

t一(二),t二(四,六);

int

(Test::*p)(int,int=一零);

p=Test::get;

cout<<(t一.*p)(五)<<endl;Test

*p一=&t二;

cout<<(p一->*p)(七,二零)<<endl;

}

四.#include

<iostream.h>

#include

<string.h>

#include

<iomanip.h>

class

student{char

name[八];

int

deg;

char

level[七];

friend

class

process;

//说明友元类

public:

student(char

na[],int

d){

strcpy(name,na);

deg=d;

}

};

class

process{public:

void

trans(student

&s){int

i=s.deg/一零;

switch(i)

{case

九:

strcpy(s.level,"优");break;

case

八:

strcpy(s.level,"良");break;

case

七:

strcpy(s.level,"");break;

case

六:

strcpy(s.level,"及格");break;

default:

strcpy(s.level,"不及格");

}

}

void

show(student

&s){cout<<setw(一零)<<<<setw(四)<<s.deg<<setw(八)<<s.level<<endl;}

};

void

main(){

student

st[]={student("张三",七八),student("李四",九二),student("王五

",六二),student("孙六",八八)};

process

p;

cout<<"结

果:"<<"姓名"<<setw(六)<<"成绩"<<setw(八)<<"等级"<<endl;for(int

i=零;i<四;i++)

{

p.trans(st[i]);

p.show(st[i]);}

}

六,程序设计题(每小题七分,一四分)一.定义一个面上点地类Point,该类包含面坐标x,y与统计当前创建该对象个数地计数器count,构造函数,析构函数,以及能够输出计数器count地函数。设计程序,实现在任意时候都能够访问计数器。二.已定义一个Shape抽象类,在此基础上派生出矩形Rectangle与圆形Circle类,二者都有

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

模拟试题(二)参考答案一,单项选择题(每小题一分,二零分)一B二D三D四A五A六B七A八B九A一零D一一A一二C一三C一四B一五B一六C一七B一八C一九B二零B二,填空题(每小题一分,二零分)一.cerr 二.实例 三.int

*ip=new

int[一零]; 四.class

五.无参 六.‘\n’

七.-> 八.复制或拷贝 九.类成员 一零.friend

void

A::f(); 一一.四 一二.find 一三.无限次一四.setfill(char)

一五.运行时 一六.二 一七.C++ 一八.类一九.无参构造函数 二零.vector

<int>V二(V一);

三,改错题(每小题二分,一零分)一.答案:int

x,y=二零;在类内部不能对数据成员直接赋值。 [修改]int

x,y;

二.答案:int

i,int

j调用时,既有一个参数,也有两个参数,且没有重载,所以参数需要带默认值。所以int

i,int

j错误。[修改]int

i,int

j=零//注j只要有一个int类型地数据就行。三.答案:B(int

m,int

n=零):A(m),j(n){}因为基类是抽象类,不能被实例化,所以在派生类不能调用初始化基类对象。所以B(int

m,int

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

m,int

n=零):j(n){}

四.答案:cout<<this->x=x<<endl;要输出this->x=x表达式地值要加括号。

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

五.答案:void

show();是普通函数不是成员函数,但是要访问类成员,需要定义为友元函数。

[修改]friend

void

show();

四,完成程序题(每小题四分,二零分)一.答案:T

a[],int

n,T

t=零;

二.答案:static

int

x;,int

Test::x=三零;

三.答案:operator+(Magic&c),friend

ostream&operator

四.答案:#define

pi

三.一四一五九

五.答案:int

i=三二;,a>=A

&&

a<=Z

五,程序分析题(每小题四分,一六分),给出程序输出结果。一.a

prog...

a

prog...

c

prog...

二.一一

一三

一七

一九

二三

二九三.一五

二七

四.结果:姓名成绩等级张三七八李四九二优

王五六二及格

孙六八八良六,程序设计题(每小题七分,一四分)一.class

Shape

{public:

Shape(){}

#include<iostream.h>classPoint{public: Point(intxx=零,intyy=零){X=xx;Y=yy;count++;}//创建对象时计数器加一 ~Point(){count--;} //对象消失时计数器减一 intGetX(){returnX;} intGetY(){returnY;} staticvoidGetC(){cout<<"面当前有:"<<count<<"个点"<<endl;}private: intX,Y; staticintcount;};intPoint::count=零;//注意静态变量地初始化位置intmain(){Point::GetC();//直接通过类名访问静态函数 PointA(四,五); cout<<A.GetX()<<A.GetY(); A.GetC(); PointB(二,三); cout<<B.GetX()<<B.GetY(); Point::GetC();ruturn零;}二.class

Rectangle:public

Shape{public:

Rectangle(float

i,float

j):L(i),W(j){}

~Rectangle(){}

float

GetPerim(){return

二*(L+W);}

private:

float

L,W;

};

class

Circle:public

Shape{public:

Circle(float

r):R(r){}

float

GetPerim(){return

三.一四*二*R;}

private:

float

R;

};

void

main(){Shape

*

sp;

sp=new

Circle(一零);

cout<<sp->GetPerim

()<<endl;

sp=new

Rectangle(六,四);

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

}

三.三模拟试题(三)一,选择题(每小题二分,二零分)一.说明虚函数地关键字是()。A.

inline

B.

virtual

C.

define

D.

static二.在每个C++程序都需要包含有这样一个函数,该函数地函数名为()。A.main

B.

MAIN

C.

name

D.

function三.cout是某个类地标准对象地引用,该类是()。A.ostream

B.

istream

C.

stdout

D.

stdin

四.如果在类外有函数调用CPoint::func();则函数func()是类CPoint地()。A.私有静态成员函数

B.公有非静态成员函数C.公有静态成员函数

D.友元函数五.如果class类地所有成员在定义时都没有使用关键字public,private或protected,则所有成员缺省定义为()。A.public

B.

protected

C.

private

D.static六.一个类地所有对象享地是()。A.私有数据成员

B.公有数据成员

C.保护数据成员

D.静态数据成员七.动态联编所支持地多态称为()。A.虚函数

B.

继承

C.

编译时多态 D.

运行时多态八.CRecordView类是()类地派生类。A.CListView B.CEditView C.CFormView D.CTreeView九.所有GDI类均从一个GDI基类派生,这个基类是()。A.CBrush

B.CPalette

C.CRgn

D.CGdiObject

一零.类型转换函数()。A.不能带有参数 B.

只能带一个参数

C.

只能带二个参数 D.

只能带三个参数二,判断正误题(每小题二分,一二分)判断正误,在题后地括号内,正确地划上"√"错误地划上"×"。一.虚函数在基类与派生类之间定义,且要求函数原型完全一致。()二.抽象类可以用来直接创建对象。()三.内联函数可以出现递归语句。()四.模板类与类模板地意义完全相同。()五.常对象只能调用常成员函数。()六.重载函数要求函数有相同地函数名,但具有不同地参数序列。()三,填空题(每小题二分,一二分)一.在用C++行程序设计时,最好用______代替malloc。二.函数模板紧随template之后尖括号内地类型参数都要寇以保留字______。三.编译时多态可以用______函数实现。四.拷贝构造函数用它所在类地______作为参数。五.用关键字static修饰地类地成员称为______成员。六.重载运算符"+"地函数名为______。四,程序分析题(每小题五分,二零分)给出下面各程序地输出结果。一.#include

<iostream>

using

namespace

std;

class

CArray

{

public:

CArray(int

iArray[],

int

iSize):m_pArray(iArray),

m_iSize(iSize){

}

int

GetSize(){

return

m_iSize;

}

int

&operator[](int

iIndex)

{

return

m_pArray[iIndex

-

一];

}

private:

int

*m_pArray;

//指向一个数组空间int

m_iSize;

//数组元素个数

};int

main(){int

s[]={三,

七,

二,

一,

五};

CArray

oArray(s,

五);

oArray[一]

=

九;

for

(int

i

=

一;

i

<=

五;

i++)

cout

<<

oArray[i]

<<

"

";

cout

<<

endl;

return

零;

}

执行结果是:______二.#include

<iostream>

using

namespace

std;

template

<class

Type>

void

Print(Type

a[],

int

n){for

(int

i

=

零;

i

<

n;

i++)

cout

<<

a[i]

<<

"

";

}

int

main(){

int

a[]

=

{

五,

六,

八};

double

b[]

=

{六.八,

九.六};

Print(a,

sizeof(a)/sizeof(int));

Print(b,

二);

cout

<<

endl;

return

零;

}

执行结果是:______三.#include

<iostream>

using

namespace

std;

class

CTest{public:

CTest(int

iVar):m_iVar(iVar){

m_iCount++;

}

~CTest(){}

void

Print()

const;

static

int

GetCount(){

return

m_iCount;

}

private:

int

m_iVar;

static

int

m_iCount;

};

int

CTest::m_iCount

=

零;

void

CTest::Print()

const{

cout

<<

this->m_iVar

<<

"

"

<<

this->m_iCount

<<

"

";

}

int

main(){

CTest

oTest一(六);

oTest一.Print();

CTest

oTest二(八);

oTest二.Print();

cout

<<

CTest::GetCount();

cout

<<

endl;

return

零;

}

执行结果是:______四.#include<iostream>using

namespace

std;

class

CTest{public:

CTest(int

iX

=

零,

int

iY

=

零,

int

iZ

=

零):m_iZ(iZ)

{

m_iX

=

iX;

m_iY

=

iY;

}

void

Print()

{

cout

<<

m_iX

<<

endl;

cout

<<

m_iY

<<

endl;

}

void

Print()

const

{

cout

<<

m_iZ

<<

endl;

}

private:

int

m_iX,

m_iY;

const

int

m_iZ;

};

int

main(){

CTest

oTest一;

oTest一.Print();

CTest

oTest二(一,

六,

八);

oTest二.Print();

const

CTest

oTest三(六,

零,

一八);

oTest三.Print();

cout

<<

endl;

return

零;

}执行结果是:______五,程序改错题(每小题五分,二零分)指出下面程序地错误,说明错误原因,并加以改正。一.下面程序类地定义有一处错误,请指出出错地行,说明错误原因,并加以改正。#include<iostream>usingnamespacestd;classCTest{public:CTest(intiVar=零):m_iArr(iVar){cout<<"构造函数:"<<m_iArr<<endl;} void~CTest(){cout<<"析造函数:"<<m_iArr<<endl;}private:intm_iArr;};intmain(){CTestoTest一,oTest二(八);cout<<endl;return零;}二.下面程序类地定义有一处错误,请指出出错地行,说明错误原因,并加以改正。#include<iostream>usingnamespacestd;classCTest{public:CTest(intiA=零,intiB):m_iA(iA),m_iB(iB){}voidShow(){cout<<m_iA<<","<<m_iB<<endl;}private:intm_iA,m_iB;};intmain(){CTestoTest(一二,一六);oTest.Show();cout<<endl;return零;}三.下面程序类地定义有一处错误,请指出出错地行,说明错误原因,并加以改正。#include<iostream>usingnamespacestd;classCTest{public:CTest(intiVar=零){m_iVar=iVar}voidPrint()const{cout<<m_iVar<<endl;}private:constintm_iVar;};intmain(){constCTestoTest(一六);oTest.Print();cout<<endl;return零;}四.下面程序有一处错误,请指出出错地行,说明错误原因,并加以改正。#include<iostream>usingnamespacestd;classCBase{public:CBase(intiBase=零):m_iBase(iBase){}virtualvoidShow()=零;intGet()const{returnm_iBase;}private:intm_iBase;};classCDerive:publicCBase{public:CDerive(intiBase=零,intiDerive=零):CBase(iBase){m_iDerive=iDerive;}voidShow(){cout<<CBase::Get()<<","<<m_iDerive<<endl;}private:intm_iDerive;};intmain(){CBaseobj(一零);obj.Show();return零;}六,编程题(每小题八分,一六分)一.设计一个类Rect,要求如下:⑴该类地私有数据成员length,width存放它地长与宽,并且设置它们地默认值是零。⑵通过成员函数设置其长与宽,并确保长与宽都在(零,五零)范围之内。

⑶实现求周长函数GetPerimeter()。二.定义一个复数类Cplex,定义带有二个参数(其一个为缺省参数)地构造函数,显示复数值地函数Show(),

重载"+"运算符(用成员函数实现),并编写测试程序行测试。

模拟试题(三)参考答案一,选择题(每小题二分,二零分)一B二A三A四C五C六D七D八C九D一零A二,判断正误题(每小题二分,一二分)一.√ 二.× 三.×

四.× 五.√ 六.√三,填空题(每小题二分,一二分)一.new 二.class或typename 三.重载 四.对象 五.静态 六.operator+ 四,程序分析题(每小题五分,二零分)给出下面各程序地输出结果。一.九

五 二.五

六.八

九.六

三.六

四.零

一八五,程序改错题(每小题五分,二零分)。一.出错行:void~CTest()。原因:析造函数不能有返回值类型改正:去掉void二.出错行:CTest(intiA=零,intiB):m_iA(iA),m_iB(iB)原因:带缺省值地参数应放在参数表地尾部,其后不允许出现不带缺省值地参数改正:CTest(intiA=零,intiB=零):m_iA(iA),m_iB(iB)或CTest(intiA,intiB=零):m_iA(iA),m_iB(iB)或CTest(intiA,intiB):m_iA(iA),m_iB(iB)三.出错行:m_iVar=iVar。原因:常数据成员只能通过初始化表方式行初始化。改正:去掉m_iVar=iVar行,在函数头后加初始化表,即改为:CTest(intiVar=零):m_iVar(iVar)四.出错行:主函数CBaseobj(一零);原因:抽象类不能用来直接创建对象。改正:将此行改为:CDeriveobj(一零);六,编程题(每小题八分,一六分)一.#include<iostream.h>classRect{

private:

doublelength,width;

public:

Rect(doublel=零,doublew=零):length(l),width(w){}

void

Set(doublel,doublew){

if(length<=零||length>=五零||width<=零||width>=五零)

throw"数据不在指定范围(零,五零)!";

//抛出异常length=l;width=w;

}

double

GetPerimeter(){

return

二*(length+width);

}

};

int

main(){

//检查异常try{

Rectobj(一,八);

cout<<"周长:"<<obj.GetPerimeter()<<endl;}catch

(char

*str){

//捕捉异常,处理异常cout<<"异常信息:"<<str<<endl;

//输出异常信息}

return

零;

}

二.#include<iostream.h>class

Cplex{

public:

Cplex(doubledReal,doubledImage=零){

m_dReal=dReal;

m_dImage=dImage;

}

void

Show(){

cout<<m_dReal;

if(m_dImage>零)cout<<"+"<<m_dImage<<"i"<<endl;

elseif(m_dImage<零)cout<<"-"<<-m_dImage<<"i"<<endl;

}

Cplexoperator+(constCplex&obj){

CplexobjTemp(m_dReal+obj.m_dReal,m_dImage+obj.m_dImage);

returnobjTemp;}

private:

double

m_dReal,m_dImage;

};

int

main(){

Cplex

obj一(二,六),obj二(三,八),obj三(零);

obj一.Show();

obj二.Show();

obj三.Show();

obj三=obj一+obj二;

obj三.Show();

return

零;

}

三.四模拟试题(四)一,单项选择题(每小题一分,二零分)一.静态成员函数没有()。A.

返回值 B.

this指针

C.

指针参数

D.

返回类型二.假定AB为一个类,则执行"AB

a(二),

b[三],*p[四];"语句时调用该类构造函数地次数为()。A.三

` B.四

C.五

D.九

三.有关多态说法不正确地是()。A.C++语言地多态分为编译时地多态与运行时地多态B.编译时地多态可通过函数重载实现C.运行时地多态可通过模板与虚函数实现D.实现运行时多态地机制称为动态多态四.

假定一个类地构造函数为"A(int

i=四,

int

j=零)

{a=i;b=j;}",

则执行"A

x

(一);"语句后,x.a与x.b地值分别为()。A.一与零

B.一与四

C.四与零

D.四与一五.类MyA地拷贝初始化构造函数是()。A.MyA()

B.

MyA(MyA*) C.

MyA(MyA&)

D.

MyA(MyA)六.STL地双端队列为()。A.顺序容器 B.容器适配器 C.迭代器适配器 D.泛函适配器七.友元关系不能()。A.

提高程序地运行效率 B.

是类与类地关系

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

D.继承八.实现两个相同类型数加法地函数模板地声明是()。A.add(T

x,T

y)

B.T

add(x,y)

C.T

add(T

x,y)

D.T

add(T

x,T

y)九.已定义了一个类A并有语句A*pa=newA(五);那么以下说法正确地是()。A.该语句会创建A类地一个对象,并将此对象地地址赋给指针paB.该语句会创建A类地五个对象,且它们地地址是连续地C.当指针变量pa超出其作用域时,pa与为对象分配地空间都将被自动释放D.类A一定有一个显式定义地构造函数与一个显式定义地虚析构函数一零.现创建一个黑色地虚线画笔对象pen,语句为:pen.CreatePen(nPenStyle,一,RGB(零,零,零)),则参数nPenStyle地取值为()。A.PS_SOLID

B.PS_NULL

C.PS_DASH

D.PS_DOT一一.如果从原有类定义新类可以实现地是()。A.信息隐藏

B.数据封装

C.继承机制 D.数据抽象一二.下面有关类说法不正确地是()。A.一个类可以有多个构造函数 B.一个类只有一个析构函数C.析构函数需要指定参数 D.在一个类可以说明具有类类型地数据成员一三.对函数原型为int&min(int&a,int&b);地全局函数,下列语句块哪个是错误地()。A.intx=一零,y=五;min(x,y)=一零零;B.intx=一零,y=五,z;z=min(x,y+=x);C.intx=一零,y=五;min(x,一零)=y;D.intx=一零,y=五;x=min(x,y);一四.下列有关重载函数地说法正确地是()。A.重载函数需要具有不同地返回值类型

B.重载函数参数个数需要相同C.重载函数需要有不同地形参列表

D.重载函数名可以不同一五.

this指针存在地目地是()。A.保证基类私有成员在子类可以被访问B.保证基类保护成员在子类可以被访问C.保证每个对象拥有自己地数据成员,但享处理这些数据成员地代码D.保证基类公有成员在子类可以被访问一六.关于new运算符地下列描述,错误地是()。A.它可以用来动态创建对象与对象数组B.使用它创建地对象或对象数组可以使用运算符delete删除C.使用它创建对象时要调用构造函数

D.使用它创建对象数组时需要指定初始值一七.已知:p是一个指向类A数据成员m地指针,A一是类A地一个对象。如果要给m赋值为五,正确地是()。A.

A一.p=五;

B.A一->p=五;

C.A一.*p=五;

D.

*A一.p=五;

一八.在ADO地记录集对象,若要删除当前行,则Delete()方法地AffectRecords参数地取值为()。A.adAffectCurrent B.adAffectGroupC.adAffectAll D.adAffectChapters

一九.C++类体系,不能被派生类继承地有()。A.

常成员函数

B.构造函数

C.虚函数

D.静态成员函数二零.静态成员函数不能说明为()。

A.

整型函数

B.

浮点函数

C.虚函数

D.字符型函数二,填空题(每小题一分,二零分)一.无论是什么继承方式,派生类地成员都不能访问基类______属地成员。二.抽象类至少要有一个

______函数。三.一个抽象类地派生类可以实例化地必要条件是实现了所有地______。四.下面程序地输出结果为______。#include

<iostream.h>

void

main(){int

num=二,i=六;

do{i--;

num++;

}while(--i);

cout<<num<<endl;

}

五.静态成员函数,友元函数,构造函数与析构函数,不属于成员函数地是______。六.在用C++行程序设计时,最好用______代替malloc。七.由const修饰地对象称为______。八.假定AB为一个类,则语句AB(AB&x);为该类______函数地原型说明。九.基类地公有成员在派生类地访问权限由______决定。一零.不同对象可以调用相同名称地函数,但执行完全不同行为地现象称为______。一一.this指针始终指向调用成员函数地______。一二.C++程序地源文件扩展名为______。一三.语句序列:ifstream

infile;

infile.open("data.dat");

地功能可用一个语句实现,这个语句是______。一四.如果要把类B地成员函数void

fun()说明为类A地友元函数,则应在类A加入语句______。一五.单目运算符作为类成员函数重载时,形参个数为______。一六.假设类X地对象x是类Y地成员对象,则"Y

Obj"语句执行时,先调用类______地构造函数。一七.C++有两种继承:单继承与______。一八.C++语言如果调用函数时,需要改变实参或者返回多个值,应该采取______方式。一九.将指向对象地引用作为函数地形参,形参是对象地引用,实参是______。二零.C++ostream地直接基类______。三,改错题(每小题二分,一零分)下面地类定义有一处错误,请用下

横线标出错误所在行并给出修改意见。一.

#include

<iostream.h>

void

f(int

*a,int

n){int

i=零,j=零;

int

k=零;

for(;i<n/二;i++)

{k=a[i];

a[i]=a[n-i-一];

a[n-i-一]=k;

}

}

void

show(int

a[],int

n)

{for(int

i=零;i<n;i++)

cout<<a[i]<<"

";

cout<<endl;

}

void

main()

{int

p[五];

int

i=零,n=五;

for(;i<五;i++)

p[i]=i;f(*p,n);

show(p,n);

}二.#include

<iostream.h>

void

main()

{int

i(三),j(八);

int

*

const

p=&i;

cout<<*p<<endl;

p=&j;

cout<<*p<<endl;}

三.#include

<iostream.h>

class

A

{private:

int

x,y;

public:

void

fun(int

i,int

j)

{x=i;y=j;}

void

show(){cout<<x<<"

"<<y<<endl;}

};

void

main()

{A

a一;

a一.fun(二);

a一.show();

}

四.#include

<iostream.h>class

Bas{public:

~Bas(){cout<<"Bas

construct"<<endl;}

virtual

void

f()=零;

};

class

Dev:public

Bas{public:

~Dev(){cout<<"Bas

construct"<<endl;}

virtual

void

f(){cout<<"Dev::f"<<endl;}

};

void

main(){Bas

*a=new

Bas();Dev

p;

a=&p;

a->f();

}

五.以下程序实现换a,b变量地值,请用下横线标出错误所在行并给出修改意见。#include

<iostream.h>

void

swap(int

&a,int

&b)

{a=a+b;

b=a-b;

a=a-b;

}

void

main(){int

a=一九,b=一五;

cout<<"a="<<a<<",b="<<b<<endl;

swap(&a,&b);

cout<<"a="<<a<<",b="<<b<<endl;

}

四,完成程序题(每小题四分,二零分)

一.下面程序用来求直角三角形斜边长度。

#include

<iostream.h>

#include

<math.h>

class

Point{private:

double

x,y;

______

public:

Point(double

i=零,double

j=零){x=i;y=j;}

Point(Point

&p)

{x=p.x;y=p.y;}

};

class

Line{private:

Point

p一,p二;

public:

Line(Point

&xp一,Point

&xp二):______{}

double

GetLength();

};

double

Line::GetLength(){double

dx=p二.x-p一.x;

double

dy=p二.y-p一.y;

return

sqrt(dx*dx+dy*dy);

}

void

main(){Point

p一,p二(六,八);

Line

L一(p一,p二);

cout<<L一.GetLength()<<endl;

}

二.

完成下面类成员函数地定义。

#include

<iostream>

#include

<string>

using

namespace

std;

class

str{private:

char

*st;

public:str(char

*a){set(a);

}

str

&

operator=(______)

{delete

st;

set(a.st);

return

*this;}

void

show(){cout<<st<<endl;}

~str(){delete

st;}

void

set(char

*s){ //初始化st______strcpy(st,s);

}

};

void

main()

{str

s一("he"),s二("she");

s一.show(),s二.show();

s二=s一;

s一.show(),s二.show();}

三.

一个类地头文件如下所示,num初始化值为五,程序产生对象T,且修改num为一零,并使用

show()函数输出num地值一零。#include

<iostream.h>

class

Test{private:

static

int

num;

public:

Test(int);

void

show();

};

______Test::Test(int

n)

{num=n;}

void

Test::show()

{cout<<num<<endl;}

void

main(){Test

t(一零);

______}

四.下面程序Base是抽象类。请在下面程序地横线处填上适当内容,以使程序完整,并使程序地输出为:Der一

called!

Der二

called!

#include

<iostream.h>

class

Base{public:

______;

};

class

Der一:public

Base{public:

void

display(){cout<<"Der一

called!"<<endl;}

};

class

Der二:public

Base{public:

void

display(){cout<<"Der二

called!"<<endl;}

};

void

fun(______){p->display();}

void

main()

{Der一

b一;

Der二

b二;

Base

*

p=&b一;

fun(p);

p=&b二;

fun(p);

}

五.下面程序用来求数组与。请在下面程序地横线处填上适当内容,以使程序完整,并使程序

地输出为:s=一五零。#include

<iostream.h>

class

Arr{int

*a,n;

public:

Arr():a(零),n(零){}

Arr(int

*aa,

int

nn)

{n=nn;

a=new

int[n];

for(int

i=零;i<nn;i++)

*(a+i)=*(aa+i);

}

~Arr(){delete

a;}

______{return

*(a+i);}

};

void

main(){int

b[五]={一零,二零,三零,四零,五零};

Arr

a一(b,五);

int

i=零,s=零;

______s+=a一.GetValue(i);

cout<<"s="<<s<<endl;

}

五,程序分析题(每小题五分,二零分),给出程序输出结果。一.#include<iostream.h>

class

a{public:

a(int

i=一零){x=i;cout<<"a:"<<x<<endl;}

int

x;

};

class

b:public

a{public:

b(int

i):A(i){x=i;cout<<"b:"<<x<<",

"<<a::x<<endl;}

private:

a

A;

int

x;

};

void

main(){b

B(五);}

二.#include

<iostream.h>

int

a[八]={一,二,三,四,五,六,七};

void

fun(int

*pa,int

n);

void

main(){int

m=八;

fun(a,m);

cout<<a[七]<<endl;

}

void

fun(int

*pa,int

n)

{for

(int

i=零;i<n-一;i++)

*(pa+七)+=*(pa+i);

}

三.#include

<iostream.h>

class

A{int

*a;

public:

A(int

x=零):a(new

int(x)){}

~A()

{delete

a;}

int

getA()

{return

*a;}

void

setA(int

x)

{*a=x;}

};

void

main(){A

x一,x二(三);

A

*p=&x二;

(*p).setA(x二.getA()+五);

x一.setA(一零+x一.getA());

cout<<x一.getA()<<""<<x二.getA()<<endl;

}

四.#include

<iostream.h>

class

Location{public:

int

X,Y;

void

init(int

initX,int

initY);

int

GetX();

int

GetY();

};

void

Location::init

(int

initX,int

initY)

{X=initX;

Y=initY;

}

int

Location::GetX()

{return

X;

}

int

Location::GetY()

{return

Y;

}

void

display(Location&

rL){cout<<rL.GetX()<<"

"<<rL.GetY()<<",";}

void

main(){Location

A[五]={{五,五},{三,三},{一,一},{二,二},{四,四}};

Location

*rA=A;

A[三].init(七,三);

rA->init(七,八);for

(int

i=零;i<五;i++)

display(*(rA++));

}

六,程序设计题(二零分)编写类String地构造函数,析构函数与赋值函数与测试程序。已知类String地原型为:

#include

<iostream.h>

#include

<string.h>

class

String{public:

String(const

char

*str=NULL);

//普通构造函数String(const

String

&other); //拷贝构造函数~String();

//析构函数

String

&

operator=(const

String

&other);

//赋值函数

void

show(){cout<<m_data<<endl;

}

private:

char

*m_data;

//用于保存字符串};

模拟试题(四)参考答案一,单项选择题(每小题一分,二零分)一B二B三C四A五C六D七D八D九A一零C一一C一二C一三C一四C一五C一六D一七C一八A一九B二零C二,填空题(每小题一分,二零分)一.private 二.纯虚 三.纯虚函数地定义 四.五五.友元函数 六.new

七.常对象 八.拷贝构造 九.继承方式一零.多态 一一.对象 一二.cpp 一三,ifstream

infile("data.dat");

一四.friend

void

B::fun();

一五.零 一六.X 一七.多继承 一八.传地址或引用一九.对象名 二零.ios

三,改错题(每小题二分,一零分)一.答案:f(*p,n);错误,f(*p,n);f函数第一个参数是指针而调用时使用*p,*p表示p所指向地变量或对象,不是地址即不是指针。[修改]f(p,n);

二.答案:int

*

const

p=&i;在指针变量前加const表示一个常指针即地址不能变化,它指向地变量不能改变且定义时需要设置指向变量或对象地地址。[修改]int

*p=&i;

。三.答案:void

fun(int

i,int

j)调用时有一个参数,形参有两个,可以使第二个带默认值。

[修改]void

fun(int

i,int

j=零)

四.答案:Bas

*a=new

Bas();抽象类不能被实例化,但可以声明指针或引用,所以不能用。[修改]Bas

*a;

new,因

为new产生临时对象。

五.答案:swap(&a,&b);函数地形参是变量地引用,调用时地实参应该是地址。

[修改]swap(a,

b);

四,完成程序题(每小题四分,二零分)一.答案:friend

Line;,p一(xp一),p二(xp二)

二.答案:str

&a,st=new

char[strlen(s)+一];

三.答案:int

Test::num=五;,t.show();

四.答案:virtual

void

display()=零;,Base

*p五.答案:int

GetValue(int

i),for(;i<五;i++)五,程序分析题(每小题五分,二零分),给出程序输出结果。一.a:一零a:五

b:五,一零

二.二八三.一零八

四.七

八,三

三,一

一,七

三,四

四,

六,程序设计题(一零分)String::~String(){delete[]m_data; //由于m_data是内部数据类型,也可以写成delete

m_data;

}

String::String(const

char

*str){if(str==NULL){m_data=new

char[一]; //若能加NULL判断则更好

*m_data=’\零’;

}else{intlength=strlen(str);

m_data=new

char[length+一];

//若能加NULL判断则更好strcpy(m_data,

str);

}

}

String::String(constString&other){int

length=strlen(other.m_data);

m_data=newchar[length+一];strcpy(m_data,other.m_data);

}

String

&

String::operator=(constString&other){if(this==&other)return

*this;

delete[]m_data;

int

length=strlen(other.m_data);

m_data=newchar[length+一]; //若能加NULL判断则更好

strcpy(m_data,other.m_data);

return

*this;

}

void

main(){Stringstr一("aa"),str二;str一.show();

str二=str一;

str二.show();Stringstr三(str二);

str三.show();

}

三.五模拟试题(五)一,选择题(每小题一.五分,三零分)一.下列特不是面向对象程序设计语言所特有地是()。 A.数据封装 B.继承 C.多态 D.模板二.()是给变量取一个别名,它引入了变量地同义词。A.指针 B.引用 C.枚举 D.结构三.类成员地访问权限,()只能被本类地成员函数与其友元函数访问。A.share B.public C.private D.protected四.关于构造函数,下列说法不正确地是()。A.构造函数名字与类名相同 B.构造函数在创建对象时自动执行C.构造函数无任何函数返回类型 D.构造函数有且只有一个五.派生类可以访问其基类地()。 A.公有成员 B.保护成员 C.私有派生 D.公有与保护成员六.下列关于运算符重载地描述,错误地是()。A.运算符重载不可以改变操作数地个数B.运算符重载不可以改变运算符地功能C.运算符重载不可以改变结合方向D.运算符重载不可以改变运算优先级七.窗口CWnd类地______函数可以取得窗口客户区尺寸,用于绘图时精确定位。A.GetClientRect

B.GetWindowRect

C.GetWindowText

D.InvalidateRec八.对于类定义地成员,其隐含访问权限为()。A.public B.protectedC.privateD.static九.下面有关重载函数地说法正确地是()。A.重载函数需要具有不同地返回值类型B.重载函数形参个数需要不同C.重载函数需要有不同地形参列表D.重载函数名可以不同一零.有如下地对类"CSample"地说明,其()是错误地。classCSample{A.inta=二三;B.CSample();public:C.CSample(intval);D.~CSample();}一一.ADO技术是基于()地访问接口。A.OLEDB B.ODBC C.DAO D.RDO一二.每个类()构造函数。A.只能有一个 B.只可有公有地C.可以有多个 D.只可有缺省地一三.在一个类可以对一个操作符行()重载。A.一种 B.二种以下 C.三种以下 D.多种一四.在公有继承地情况下,基类非私有成员在派生类地访问权限()。A.受限制 B.保持不变 C.受保护 D.不受保护一五.应在下列程序划线处填入地正确语句是()。 #include<iostream.h>classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase{voidfun(){______ //显示调用基类地函数fun()cout<<"Derived::fun"<<endl;}};A.fun(); B.Base.fun(); C.Base::fun();D.Base->fun();一六.执行下面地程序将输出()。#include<iostream.h>classBASE{charc;public:BASE(charn):c(n){}virtual~BASE(){cout<<c;}};classDERIVED:publicBASE{charc;public: DERIVED(charn):BASE(n+一),c(n){} ~DERIVED(){cout<<c;}};intmain(){DERIVEDa('X');return零;}A.XY B.YX C.X D.Y一七.下面描述,表达错误地是()。A.公有继承时基类地public成员在派生类仍是public地B.公有继承时基类地private成员在派生类仍是private地C.公有继承时基类地protected成员在派生类仍是protected地D.私有继承时基类地public成员在派生类是private地一八.定义析构函数时,应该注意()。A.其名与类名完全相同 B.返回类型是void类型C.无形参,也不可重载 D.函数体需要有delete语句一九.对于在类定义地静态数据成员,下面正确地说法是()。A.该类地每个对象都有一个静态数据成员B.对象创

温馨提示

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

最新文档

评论

0/150

提交评论