C++练习题(摘自自学考试)_第1页
C++练习题(摘自自学考试)_第2页
C++练习题(摘自自学考试)_第3页
C++练习题(摘自自学考试)_第4页
C++练习题(摘自自学考试)_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

C++程序设计练习题1

一、单项选择题

1.对C++语言和c语言的兼容性,描述正确的是()

A.C++兼容CB.C++部分兼容C

C.C++不兼容CD.C兼容C++

2.在C++中使用流进行输入输出,其中用于屏幕输出的对象是()

A.cerrB.cin

C.coutD.cfile

3.对使用关键字new所开辟的动态存储空间,释放时必须使用()

A.freeB.create

C.deleteD.realse

4.如没有使用成员访问权限关键字定义类的数据成员,则默认为()

A.privateB.public

C.protectedD.friend

5.使用值传递方式将实参传给形参,下列说法正确的是()

A.形参是实参的备份B.实参是形参的备份

C.形参和实参是同一对象D.形参和实参无联系

6.在函数调用时,如某一默认参数要指明一个特定值,则有()

A.其之前所有参数都必须赋值B.其之后所有参数都必须赋值

C.其前、后所有参数都必须赋值D.其前、后所有参数都不必赋值

7.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是()

A.intm=max(22,max(59,70));B.intm=max(max(22,59),70);

C.intm=max(22,59,70);D.intm=max(59,max(22,70));

8.下列哪个类型函数不适合声明为内联函数()

A.函数体语句较多B.函数体语句较少

C.函数执行时间较短D.函数执行时间过长

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

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

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

10.对类中声明的变量,下列描述中正确的是()

A,属于全局变量B.只属于该类

C.属于该类,某些情况下也可被该类不同实例所共享

D.任何情况下都可被该类所有实例共享

11.类的私有成员可在何处访问()

A.通过子类的对象访问B.本类及子类的成员函数中

C.通过该类对象访问D.本类的成员函数中

12.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是()

A.编译器总是自动创建一个不带参数的构造函数

B.这个类没有构造函数

C.这个类不需要构造函数D.该类不能通过编译

13.一个类可包含析构函数的个数是()

A.0个B.1个

C.至少一个D.0个或多个

14.this指针存在的目的是()

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

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

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

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

15.下列关于类的权限的描述错误的是()

A.类本身的成员函数只能访问自身的私有成员

B.类的对象只能访问该类的公有成员

C.普通函数不能直接访问类的公有成员,必须通过对象访问

D.一个类可以将另一个类的对象作为成员

16.在编译指令中,宏定义使用哪个指令()

A.#includeB.#define

C.#ifD.#else

17.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是()

A.A类构造函数先执行B.成员构造函数先执行

C.两者并行执行D.不能确定

18.下列描述错误的是()

A.在创建对象前,静态成员不存在B.静态成员是类的成员

C.静态成员函数不能是虚函数D.静态成员函数不能直接访问非静态成员

19.对于友元描述正确的是()

A.友元是本类的成员函数B.友元不是本类的成员函数

C.友元不是函数D.友元不能访问本类私有成员

20.在哪种派生方式中,派生类可以访问基类中的protected成员()

A.public和privateB.public和protected

C.protected和privateD.仅protected

二、填空题

24.定义虚函数所用的关键字是—virtual—。

27.类的继承是指子类继承基类的—成员变量—和成员函数。

28.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为—多态

29.__#inc加de_指令指示编译器将一个源文件嵌入到带该指令的源文件之中。

30.设类A有成员函数voidFun(void);若要定义一个指向类成员函数的指针变量pafn来指向Fun,

该指针变量的声明语句是:_void(A::*pafn)(void);_。

31.设在程序中使用如下语句申请了一个对象数组:Point*ptr=newPoinU2];

则在需要释放ptr指向的动态数组对象时,所使用的语句是—delete[]ptr;—。

32.在保护派生中,基类权限为Private的成员在派生类中—不可访问

33.类A有如下成员函数

intA::fun(doublex){return(int)x/2;}

intA::fun(intx){returnx*2;}

设a为类A的对象,在主函数中有ints=a.fun(6.0)+a.fun(2),则执行该语句后,s的值为—7__。

34.对象传送的消息一般由3部分组成:接收对象名、调用操作名和一参数一。

35.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的一地址

37.在C++中,声明布尔类型变量所用的关键字是_bool_。

40.C++语言中可以实现输出一个换行符并刷新流功能的操控符是_endl_。

三、改错题(下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见)

41.#include<iostream.h>

voidmain(){

intx=5,y=6;

constint*p=&x;

〃修改意见:去掉本句或去掉上句中的const

cout«*p«endl;

}

42.#include<iostream.h>

classf{

private:intxfy;

public:fl(){x=0;y=0;}

print(){cout«x«?,«y«endl;}

);

voidmain(){

fa;

〃修改意见:本句改为或修改成员函数成的定义

a.print();

44.#include<iostream.h>

classpoint{

private:floatx;

public:voidf(floata){x=a;}

voidf(){x=0;}

friendfloatmax(point&a,point&b);

floatmax(point&a,point&b)

{return(a.x>b.x)?a.x:b.x;}

voidmain(){

pointa,b;

a.f(2.2);b.f(3.3);

coutvva.mac®b);〃修改为:coutvvmax(a、b);

)

四、完成程序题

46.完成下面类中的成员函数的定义。

classpoint

(

private:intm,n;

public:

point(intyint);

point(point&);

);

point::point(inta,intb)

{

m=a;n=b:

}

point::point(point&t)

(

m=t.m;n=t.n;

}

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

#include<lostream>

usingnamespacestd;

gonstdoublgpi=3.l4159;

voidmain()

doubler;

cout«"r=";

cin>>r;

doublel=2.0*pi*r;

doubles=pi*r*r;

cout«H\nThelongis:"«l«endl;

cout«uTheareais:”«s«endl;

)

48.在下划线处填上缺少的部分。

#include<iostream>

usingnamespacestd;

classcomplex

(

public:

intreal;

intimag;

complex(intr=0,inti=0)

(

real=r;

imag=i;

)

);

complexQDerator+(cumplex&a,complex&b)

(

intr=a.real+b.real;

inti=a.imag+b.imag;

returncomplex(r,i);

)

voidmain()

{

complexx(L2),y(3,4),z;

z=x+y;

cout«z.real«v+“«z.imag«ui"«endl;

49.程序的输出结果如下:

1,9

50,30

请根据输出数据在下面程序中的下划线处填写正确的语句。

源程序如下:

#include<iostream>

usingnamespacestd;

classbase

(

private:

public:

base(){};

base(inta):m(a){}

intget(){returnm;}

voidset(inta){m=a;}

};

voidmain()

{base*ptr=newbase[2];

ptr->set(30);

ptr=ptr+1;

ptr->set(50);

basea[2]={l,9};

cout«a[0].get()«,f,"«a[l].get()«endl;

cout«ptr->get()«/z,,f;

ptr=ptr-l;

coutvv>get()vvendl;

delete!]ptr;

)

五、程序分析题

51.给出下面程序的输出结果。

#include<iostream.h>

template<classT>

classSample

{

Tn;

public:

Sample(Ti){n=i;}

intoperator==(Sample&);

);

template<classT>

intSample<T>::operator==(Sample&s)

{

if(n==s.n)return1;

elsereturn0;

)

voidmain()

{

Sample<int>sl(2),s2(3);.

cout<<"si与s2的数据成员"《(sl==s2?"相等":"不相等〃)《endl;

Sample<long>s3(25),s4(25);

cout<<"s3与s4的数据成员"<<(s3==s4?"相等":"不相等")<<endl;

)

52.给出下面程序的输出结果。

#include<iostream>

usingnamespacestd;

template<classT>

Tmax(TmbTm2)

{return(ml>m2)?ml:m2;}

voidmain(){

cout«max(l,7)«"\t"«max(2.0,5.0)«endl;

cout«max('y'/br)«,f\t"«max(7A","a7)«endl;

)

53.给出下面程序的输出结果

#include<iostream>

usingnamespacestd;

classA{

public:

intx;

A(){)

A(inta){x=a;}

intget(inta){returnx+a;}

);

voidmain(){

Aa(8);

int(A::*p)(int);

p=A::get;

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

A*pi=&a;

cout«(pi->*P)(7)«endl;

)

54.给出下面程序的输出结果。

include<iostream>

#include<string>

usingnamespacestd;

classBook{

char*title;

char*author;

intnumsold;

public:

Book(){}

Book(constchar*strl,constchar*str2,constintnum)

(

intlen=strlen(strl);

title=newchar[len+l];

strcpy(title,strl);

len=strlen(str2);

author=newchar[len+l];

strcpy(author,str2);

numsold=num;

)

voidsetbook(constchar*strLconstchar*str2,constintnum)

(

intlen=strlen(strl);

title=newchar[len+l];

strcpy(title,strl);

len=strlen(str2);

author=newchar[len+l];

strcpy(author,str2);

numsold=num;

)

〜Book(){

deletetitle;

deleteauthor;

)

voidprint(ostream&output){

output«H书名:"«title«endl;

output«H作者:"«author«endl;

output«,f月销售量:"vvnumsoldvvendl;

)

);

voidmain(){

Bookobjl(,z数据结构〃,"严蔚敏〃,200),obj2;

objl.print(cout);

obj2.setbook(〃C++语言程序设计",〃李春葆〃,210);

obj2.print(cout);

}

六、程序设计题(本大题共1小题,共10分)

55.在三角形类TRI实现两个函数,功能是输入三个顶点坐标判断是否构成三角形

#include<iostream.h>

#include<math.h>

classpoint{

private:floatx,y;

public:point(floata,floatb)

{x=a;y=b;}

point(){x=0;y=0;}

voidset(floata,floatb){x=a;y=b;}

floatgetx(){returnx;}

floatgety(){returny;}

);

classtri{

pointx,y,z;

floatsi,s2,s3;

public:...settri(....);//用于输入三个顶点坐标

・・・.test(....);//用于判断是否构成三角形

};

请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)

摘自:全国2008年1月高等教育自学考试面向对象程序设计试题

C++程序设计练习题2

一、单项选择题

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

A.编译、编辑、连接、调试B.编辑、编译、连接、调试

C.编译、调试、编辑、连接D.编辑、调试、编译、连接

2.函数调用func((expl,exp2),(exp3,exp4,exp5))中所含实参的个数为()

A.1B.2

C.4D.5

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

A.3B.4

C.5D.9

4.假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete口px;”语句时共调

用该类析构函数的次数为()

A.0B.1

C.nD.n+1

5.如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()

A.a.operator++(l)B.operator++(a)

C.operator++(a,l)D.a.operator++()

6.继承机制的作用是()

A.信息隐藏B.数据封装

C.定义新类D.数据抽象

7.以下哪个基类中的成员函数表示纯虚函数?()

A.virtualvoidvf(int);B.voidvf(int)=0;

C.virtualvoidvf()=0;D.virtualvoidyf(int){}

8.假定一个类的构造函数为"A(intaa,intbb){a=aa;b=aa*bb;}”,则执行"Ax(4,5);“语句后,x.a和x.b的值分

别为()

A.4和5B.5和4

C.4和20D.20和5

9.-■个类的静态数据成员所表示属性()

A.是类或对象的属性B.只是对象的属性

C.只是类的属性D.是类和友元的属性

10.一个C++源程序文件的扩展名为()

A..hB.x

C..cppD..cp

二、填空题

11.重载“<<”操作符时,应声明为一普通__函数。

12.在C++中,编译指令都是以#(符号)开始。

14.C++支持两种多态性,编译时的多态性和—运行一时的多态性。

15.假定用户为类AB定义了一个构造函数“AB(intaa=0):a(aa){}",则定义该类的对象时,可以有一2__种不

同的定义格式。

16.若p指向X,则__*p与x的表示是等价的。

18.当函数参数表用void一—保留字表示时,则表示该参数表为空。

19.每个对象都是所属类的一个—实例一。

20.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有2个操作数。

-本套试题共分6页,当前页是第1页-

摘自:全国2008年1月高等教育自学考试面向对象程序设计试题

三、改错题

21.假定要求下面程序输出“d=800,f=60”,在第5-20行中存在着三条语句错误,请指出错误语句的行号并改正。

#include<iostream.h>

classA{〃1行

inta[10];intn;〃2行

public:〃3行

A(intaa[],intnn):n(nn){〃4行

for(inti=0;i<n;i++)aa[i]=a[i];〃5行修改为:for(inti=0;i<n;i++)a[i]=aa[i];

)〃6行

intGet(inti){returna[i];}〃7行

intSumA(intn);〃8行

);〃9行

intA::SumA(intn){〃10行

ints=0;〃U行

for(intj=0;j<n;j++)s+=a[j];〃12行

returns;〃13行

)〃14行

voidmain(){〃15行

inta[]={2,5,8,10,15,20};〃16行

Ax(a,6);〃17行

intd=l;〃18行

for(inti=0;i<4;i++)d*=x.a[i];〃19行修改为:for(inti=0;i<4;i++)d*=x.Get(i);

intf=SumA(6);//20行修改为:intf=x.SumA(6);

cout«nd=n«d<<?;//21行

cout«nf=H«f«endl;//22行

)〃23行

22.下面程序段第4到7行中存在着三条语句的语法错误,请指出错误语句的行号并改正。

classA{〃1行

inta,b;〃2行

constintc;〃3行

public〃4行

A():c(0);a(0);b(0){}〃5行今A():c(0),a(0),b(0){}

A(intaa,intbb)c(aa+bb);{a=aa;b=bb;]I〃6行■>A(intaa,intbb):c(aa+bb){a=aa;b=bb;}

);//7行

Aa,b(l,2);〃8行

A*x=&a,&y=b;〃9行

A*z=newA,w[10];//10行+A*z=newA;

四、程序填空题(请按提示要求完成以下程序段的填空)

23.在下面一段类定义中,Derived类公有继承了基类Base。需要填充的函数由注释内容给出了功能。

classBase

(

private:intmeml,mem2;〃基类的数据成员

public:Base(intml,intm2){meml=ml;mem2=m2;}

voidoutput(){cout«meml«,'«mem2«,';}

〃…

-本套试题共分6页,当前页是第2页-

摘自:全国2008年1月高等教育自学考试面向对象程序设计试题

classDerived:publicBase

(

private:

intmem3;〃派生类本身的数据成员

public:

〃构造函数,由ml和m2分别初始化meml和mem2,由m3初始化mem3

Derived(intml,intm2,intm3);

〃输出meml,mem2和mem3数据成员的值

voidoutput(){

(1);cout«mem3«endl;

}

〃…

);

Derived::Derived(intml,intm2,intm3):⑵{⑶;}

需要补充的语句为:

(1)Base::output()(2)Base(ml,m2)(3)meni3=m3;

24.classA{

inta,b;

public:

(4)〃定义构造函数,使参数aa和bb的默认值为0,

{a=aa;b=bb;}〃在函数体中用aa初始化a,用bb初始化b

);

main(){

A*pl,*p2;

(5);〃调用无参构造函数生成由pl指向的动态对象

⑹;〃调用带参构造函数生成由p2指向的动态对象,

〃使a和b成员分别被初始化为4和5

)

需要补充的语句为:

(4)A(intaa=0,intbb=O)(5)pl=newA;(6)p2=newA(4,5);

25.已知一个类的定义如下:(假设类的成员函数已实现)

#include<iostream.h>

classAA{

inta[10];

intn;

public:

voidSetA(intaa[],intnn);〃用数组aa初始化数据成员a,

〃用nn初始化数据成员n

intMaxA();〃从数组a中前n个元素中查找最大值

voidSortA();〃采用选择排序的方法对数组a中前n个元素

〃进行从小到大排序

voidInsertAO;//采用插入排序的方法对数组a中前n个元素进行从小到大排序

voidPrintA();〃依次输出数组a中的前n个元素

〃最后输出一个换行

);

使用该类的主函数如下:

voidmain()

-本套试题共分6页,当前页是第3页-

摘自:全国2008年1月高等教育自学考试面向对象程序设计试题

inta[10]={23,78,46,55,62,76,90*,38,42};

AAx;

JZL;

intm=(8);

J91;

cout«m«endl;

)

该程序运行结果为:

237846556276

78

需要补充的语句为:

(7)x.Seta(a,6);(8)x.MaxAO(9)x.PrintAO

五、程序分析题(阅读以下程序,写出其运行结果)

26.当从键盘上输入9.98时,写出下面程序的执行结果。

#include<iostreain.h>

voidmain()

{

inta,b;

charch;

cin»a»ch»b;//从键盘上输入9.98

cout«a«endl«b«endl;

)

27.#include<iostream.h>

classaa{

public:

virtualintfunc(){return0;}

);

classtest:publicaa{

public:

intfunc(){return58;}

};

voidmain(){

testd;

aa&b=d;

cout«b.func()«endl;

cout«b.aa::func()«endl;

)

28.#include<iostream.h>

classmyclass{

public:

intnumber;

voidset(inti);

);

-本套试题共分6页,当前页是第4页-

摘自:全国2008年1月高等教育自学考试面向对象程序设计试题

intnumber=8;

voidmyclass::set(inti)

(

number=i;

)

voidmain()

(

myclassmyl;

intnumber=20;

myl.set(6);

cout«myl.number«endl;

myl.set(number);

cout«myl.number«endl;

myl.set(::number);

cout«myl.number«endl;

)

29.#include<iostream.h>

classa

{

public:virtualvoidprint(){cout«nthisisclassaprinting.M«endl;};

};

classb:publica

(

public:voidprint(){};

);

classc:publicb

(

public:voidprint(){cout«”thisisclasscprinting.H«endl;}

);

voidshow(a&aa)

(

aa.printO;

)

voidmain()

(

aa;bb;cc;

show(a);

show(b);

shovv(c);

)

30.#include<iostream.h>

classDate

{

intYear,Month,Day;

public:

Date(inty=2001,intm=l,intd=l){Year=y;Month=m;Day=d;}

voidPrintDate(){cout«Year«*7**«Month«*7**«Day«endl;}

-本套试题共分6页,当前页是第5页-

摘自:全国2008年1月高等教育自学考试面向对象程序设计试题

classTime

{

intHoure,Minutes,Seconds;

public:

Time(inth=5,intm=30,ints=0){Houre=h;Minutes=m;Seconds=s;}

voidPrintTime(){cout«Houre«H:,,«Minutes«H:,,«Seconds«endl;}

);

classDate_Time:publicDate,publicTime

{

public:

Date_Time(){};

Date_Time(inty,intmo,intd,inth=O,intmi=09ints=0):

Date(y,mo,d)9Time(h,mi,s){}

voidPrintDate_Time(){PrintDate();PrintTime();}

);

voidmain()

(

Date_Timea,b(2002,10,l,6,20,0),《2003,3,8,6,7);

a.PrintDate_Time();

b.PrintDate_Time();

c.PrintDate_Time();

)

31.#include<iostream.h>

voidf2(int&x,int&y)

(

intz=x;x=y;y=z;

)

voidmain()

(

intx=10,y=26;

cout«nx,y=n«x«H,H«y«endl;

f2(x,y);

cout«nx,y=n<<x«H,M«y«endl;

x++;y-;

f2(y,x);

cout«Mx,y=M«x«H,M«y«endl;

)

-本套试题共分6页,当前页是第6页-

2007年10月自考面向对象程序设计试题

C++程序设计练习题3

一、单项选择题

1.以下说法中正确的是()

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

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

C.C++函数必须有返回值,否则不能使用函数

D.C++程序中有调用关系的所有函数必须放在同一个程序文件中

2.以下关于函数模板叙述正确的是()

A.函数模板也是一个具体类型的函数

B.函数模板的类型参数与函数的参数是同一个概念

C.通过使用不同的类型参数,函数模板可以生成不同类型的函数

D.用函数模板定义的函数没有类型

3.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()

A.作为友元函数重载的1元运算符

B.作为成员函数重载的1元运算符

C.作为友元函数重载的2元运算符

D.作为成员函数重载的2元运算符

4.构造函数不具备的特征是()

A.构造函数的函数名与类名相同

B.构造函数可以重载

C.构造函数可以设置默认参数

D.构造函数必须指定类型说明

5.在C++中,封装是借助什么达到的()

A.结构B.数组

C.类D.函数

6.在哪种情况下适宜采用inline定义内联函数?()

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

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

7.在关键字public后面定义的成员为类的()

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

C保护成员D.任何成员

8.以下哪个基类中的成员函数表示纯虚函数?()

A.virtualvoidtt()=O;B.voidtt(int)=0;

C.virtualvoidtt(int);D.virtualvoidtt(int){)

9.假定AA是一个类,"AA*abc()const;”是该类中一个成员函数的原型,若该函数返回this值当用x.abc()

调用该成员函数后,x的值()

A.已经被改变B.可能被改变

C.不变D.受到函数调用的影响

10.C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是()

A.增加了一些新的运算符

B.允许函数重载,并允许设置缺省参数

C.规定函数说明符必须用原型

D.引进了类和对象的概念

-本套试题共分8页,当前页是第1页-

2007年10月自考面向对象程序设计试题

二、填空题

11.如果一个派生类只有一个唯一的基类,则这样的继承关系称为__单继承

12.C++支持两种多态性:__编译__时的多态性和运行时的多态性。

14.所有模板都以template关键字和一个一类型参数__表开头。

15.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的一声明—语句。

16.类型转换函数没有返回值类型,而且参数表为一空___。

17.C++提供的预处理命令有嵌入指令,条件编译指令和一宏定义指令

18.对象将其大部分实现细节隐藏起来,这种机制称为__信息隐蔽―o

19.定义类动态对象数组时,其元素只能靠自动调用该类的一构造函数——来进行初始化。

20.在函数体之前加—const_关键字可以防止函数误操作改变数据成员的值。

三、改错题(本大题共2小题,每小题6分,共12分)

21.下面是分数类fract的定义及测试主程序,在类定义及其友元函数定义中1到6行中有三处错误,更正

错误后程序应显示41/28,请指出错误所在行的行号并给出改正意见。

classfract{

intden;〃分子

intnum;〃分母

public〃1行

fract(intd=0,intn=l):den(d),num(n){)〃2行

friendfract&operator+=(fract,fract&);〃3行

voidshow(){cout«den«,/'«num;}〃4行

);〃5行

friendfract&operator+=(fractfl,fractf2)〃6行

{〃7行

fl.den=fl.den*f2.num+fl.num*f2.den;〃8行

fl.num*=f2.num;〃9行

returnfl;〃10行

voidmain(){

fractfr(3,4);

fr+=fract(5,7);

fnshow();

}

错误行的行号为1、3和6o

分别改正为_public:_、__friendfract&operator+=(fract&,fract&);___

和____friendfract&operator+=(fract&fl,fract&f2);____。

22.下面程序段第13-17行中存在着三条语句错误,请指出错误语句的行号并说明原因

classA{〃1行

inta;〃2行

public:〃3行

A(intaa=0):a(aa){}〃4行

};〃5行

classB{〃6行

inta,b;/〃行

constintc;〃8行

-本套试题共分8页,当前页是第2页-

2007年10月自考面向对象程序设计试题

Ad;〃9行

public://10行

B():c(0){a=b=0;}//ll行

B(intaa,intbb):d(aa+bb){//12行

a=aa;b=bb;c=aa-bb;//13行应去掉c=aa-bb;

}//14行

}//15行应加上分号(;)

Ba,b(l,2);〃16行

Bx=a,y(b),z(l,2,3);〃17行z的定义可以是z(l,2);

错误行的行号为_13____、_____15_____和______17_____o

错误原因分别为一常成员变量只能用初始化表的方式初始化_、_没有分号—和—Z定义错误____O

四、程序填空题(请按提示要求完成以下程序段的填空)

23.在下面一段类定义中,Derived类是由直接基类Base1和Base2所派生的,Derived类包含有两个间

接基类BaseBase,在初始化函数Init中,需要把xl和x2的值分别赋给属于基类Basel的x成员和属于

基类Basel的x成员。

classBaseBase{

protected:

intx;

public:

BaseBase(){x=1;}

);

classBasel:publicBaseBase{

public:

Basel(){}

);

classBase2:publicBaseBase{

public:

Base2(){}

);

classDerived:_⑴一

(

public:

Derived(){}

voidInit(intxl,intx2){

__(2)—;

__(3)—;

)

voidoutput(){cout«Basel::x«^«Base2::x«endl;}

};

需要补充的语句为:

(1)publicBasel,publicBasel(2)Basel::x=xl;(3)Basel::x=x2;

24.#include<iostream.h>

#include<stdlib.h>

classA{

-本套试题共分8页,当前页是第3页-

2(X)7年10月自考面向对象程序设计试题

int*a;intn;

intMaxLen;

public:

A():a(0)9n(0)9MaxLen(O){)

A(int*aa,intnn9intMM){

n=nn;

MaxLen=MM;

if(n>MaxLen)exit(l);

a=newint[MaxLen];

(4);

温馨提示

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

评论

0/150

提交评论