面向对象程序设计试题集8_第1页
面向对象程序设计试题集8_第2页
面向对象程序设计试题集8_第3页
面向对象程序设计试题集8_第4页
面向对象程序设计试题集8_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

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

文档简介

第一章面向对象的方法学

一.阅读程序题

解答:

二.完成程序题

解答:

三.改错题

解答:

四.编程题

解答:

五.填空题

1.面向对象程序设计方法的基本特征主要有抽象性、(卜继承性和多态性

2.()是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系

O

3.不同的对象,收到同一消息可以产生不同的结果,这种现象称为()。

4.编译时的多态性是通过()来实现的。

5.运行时的多态性是通过()来实现的。

6.()是对一组具有共同属性特征和行为特征的对象的抽象。

7.()是一个类所描述的一个具体的对象。

8.类和对象之间的关系是()的关系。

9.()就是从众多的事物中抽取出共同的、本质性的特征,舍弃其非本质的

特征.

10.子类继承了多个父类的数据结构和方法,则称为()。

11.面向对象程序设计方法的基本特征主要有(卜封装性、继承性和多态性

O

12.面向对象程序设计方法的基本特征主要有抽象性、封装性、()和多态性

O

13.面向对象程序设计方法的基本特征主要有抽象性、封装性、继承性和()

14.把面向对象思想应用于软件开发过程中,指导开发活动的系统方法,简称(

)方法。

15.20世纪90年代中期由Booch,Rumbaugh和Jacoson共同提出了(),

把众

多面向对象分析和设计方法综合成一种标准,使面向对象的方法成为主流的软件开发方法。

解答:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

第二章类与对象

一.阅读程序题

1.#include<iostream.h>

classCSample

(

inti;

public:

CSample()

(

i=l;cout«i++;

}

voiddisp()

(

cout«++i;

}

~CSample()

(

cout«i++;

}

);

voidmain()

CSamples;

s.disp();

2.#include<iostream.h>

classSample

(

private:

intx;

public:

Sample(){cout«(x=0);}

Sample(inti,intj){cout«(x=i+j);}

~Sample(){cout«x;}

);

voidmain()

(

Sample*pl=newSample,*p2=newSample(3,4);

deletepl;deletep2;}

3.#include<iostream.h>

classSample

(

public:

Sample(){}

Sample(inta){x=a;}

Sample(Sample&a){x=a.x++;}

voiddisp(){cout«x++;}

private:

intx;

};

voidfun(Sample&sl,Samples2){

sl.disp();s2.disp();

)

voidmain()

Samplesl(2),s2=sl;fun(s2,sl);

sl.disp();s2.disp();

)

4.#include<iostream.h>

classSample

(

intx;

public:

Sample(){x=O;}

Sample(inta){cout«(x=a);}

~Sample()

(

cout«++x;

)

voiddisp()

(

cout«x;

)

};

voidmain()

(

Samplesl(2);

sl.disp();

sl.~Sample();

5.include<iostream.h>

classSample

(

intx;

public:

Sample(){cout«(x=0);}

Sample(inti){cout«(x=i);}

<vSample(){cout«x«endl;}

voiddisp(){cout«x;}

};

voidmain()

Samples(3);

inti=0;if(i=O){

Samples;

s.disp();

)

)

6.#include<iostream.h>

classSample

(

public:

Sample(){cout«"Constructor"«endl;}

~Sample(){cout«"Destructor"«endl;}

);

voidfn(inti)

(

staticSamplec;

cout«,'i="«i«endl;

)

voidmain()

{

fn(10);

fn(20);

)

7.#include<iostream.h>

classSample

(

intn;

public:

Sample(inti){n=i;}

friendintadd(Sample&slzSample&s2);

);

intadd(Sample&sl,Sample&s2){

returnsl.n+s2.n;

)

voidmain()

(

Samplesl(10),s2(20);

cout«add(sl/s2)«endl;

)

8.#include<iostream.h>

classB;

classA

inti;

public:

intset(B&);

intget(){returni;}

A(intx){i=x;}

);

classB

(

inti;

public:

B(intx){i=x;}

friendA;

);

intA::set(B&b)

(

returni=b.i;

)

voidmain()

{

Aa(l);

Bb(2);

cout«a.get()«"z";

a.set(b);

cout«a.get()«endl;

)

9.include<iostream.h>

floatf(floatxzfloaty)

{

returnx+y;

)

intf(intx,inty)

(

returnx+y;

}

voidmain()

(

floata,b,c;

a=b=50.5;c=f(azb);

cout«c;

)

10.include<iostream.h>

intmax(intx,inty)

(

if(x>y)returnx;

elsereturny;

)

intmax(intx,intyzintz)

(

returnmax(x,max(y,z));

)

voidmain()

{

inta=3,b=4,c=5,d=0;d=max(a,b);

cout«d;

)

11.include<iostream.h>

intp(intx=4,inty=5){

returnx+y;

)

voidmain()

(

inta=3,b=4,c=0;c=p(b);

cout«c;

)

12.include<iostream.h>

intadd(intx,inty=8);

voidmain()

(

inta=6;cout«add(a,add(a))«endl;

)

intadd(intx,inty)

(

returnx+y;

)

13.include<iostream.h>

intp(intx=4,inty=5,intz=6){

returnx+y+z;

)

voidmain()

{

inta=3,b=4,c=5;c=p(b,a);

cout«c;

)

14.include<iostream.h>

intp(intx=4,inty=5,intz=6){

returnx+y+z;

)

voidmain()

(

inta=3,b=4,c=0;c=p(b,c);

cout«c;

)

15.#include<iostream.h>

intn=1;voidFun();

voidmain()

(

n++;

Fun();

if(n>0){

intn=5;cout«"Block:n=H«n«

)

cout«"Main:n="«n«endl;

)

voidFun()

(

intn=10;cout«"Fun:n="«n«

解答:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

二.完成程序题

1.有一个学生类student,包括学生姓名、成绩,设计一个友元函数,比较两个学生成绩的

高低,并求出最高分和最低分的学生。

解:

#include<iostream.h>

(1)

classstudent

(

charname[10];

intdeg;

public:

(2)〃定义构造函数

(

strcpy(name,na);

deg=d;

}

char*getname(){returnname;}

(3)________________________

);

intcompare(student&sl,student&s2){

if(sl.deg>s2.deg)

return1;elseif(sl.deg==s2.deg)

return0;elsereturn-1;}

voidmain()

(

studentst口二{student(“王华”,78),student(“李明”,92),student("张伟,62),studen

t(“孙强,88)};

inti,min=0/max=0;for(i=l;i<4;i++)

{

if(compare(st[max]/st[i])==-l)(4)

elseif(compare(st[i]/st[min])==l)min=i;

}

coutvv”输出结果:"<<endl;

cout«"最高分:”<<st[max].getname()<<endl;

cout«"最低分:"<<st[min].getname()<<endl;

}

2.有一个学生类student,包括学生姓名、成绩,设计一个友元函数,输出成绩对应的等级

:大于等于90:优;80-90:良;70-79:中;60169:及格;小于60:不及格。

#include<iostream.h>

#include<string.h>

#include<iomanip.h>

classstudent

charname[10];

intdeg;

charlevel[7];

public:

(1)〃定义构造函数

(

strcpy(name,na);

deg=d;

)

char*getname(){returnname;}

(2);

voiddisp()

(

cout«setw(10)«name«setw(6)«deg«setw(8)<<level«endl;

)

};

voidtrans(student&s)

(

if(s.deg>=90)strcpy(s.level,"优");

elseif(s.deg>=80)strcpy(s.levelj良”);

elseif(s.deg>=70)strcpyfs.level,"^-1");

elseif(s.deg>=60)strcpy(s.level,"及格");

else

strcpy(s」eve「不及格”);

)

voidmain()

(

inti;

studentst□={student("王华”,78),student("李明)92),student("张伟”,62),studen

t("孙强,88)};

cout<<“输出结果:“<<endI;

cout«setw(10)«,,^fe^;,,«setw(6)«"^^',«setw(8)«"^^4',«endl;

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

(

(3)〃成绩转换

(4)〃输出结果

)

)

3.定义一个汽车类,实现汽车数目的修改、显示等功能。

#include<iostream.h>

classCar

(

private:

intnumber;

public:

(1)〃定义构造函数

(

number=x;

)

voidSetNumber(intn)

(

number=n;

)

voiddisplayO

(

(2)〃输出汽车数目

}

);

intmain()

(

Car*p;

(3);

p->SetNumber(20);

(4)〃输出汽车数目

return0;}

4.定义一个数组类,实现输入输出

#include<iostream.h>

classArray

(

public:

(1)()〃定义构造函数

(

(2)();〃申请能存放num个整型元素的内存空间

arraysize=num;

)

voidSetArray()

(

inti;

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

Ptr[i]=i;

)

voidDisplayO

inti;

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

cout«Ptr[i]«endl;

)

~Array(){

);〃释放内存空间

}

private:

int*Ptr;

intarraysize;

);

voidmain()

(

Arraya(10);

a.SetArray();

)〃输出

5.将distance定义为类Point的友元函数,计算两点之间的距离。

include<iostream.h>

(1)(

classPoint

private:

intx;

inty;

public:

(2)(

(3)(

);

doubledistance((4)

doubled;

d=pow(pl.x-p2.x,2)+pow(pl.y-p2.y,2);//pow为幕函数

returnsqrt(d);

)

voidmain()

Pointpl(3,4),p2(0,0);

coutv<”二点之间的距离为:”<<distance(pl,p2)v<endl;

)

解答:

1.

2.

3.

4.

5.

三.改错题

1.classA

(

public:

voidA(intAJntB,intc){x=a;y=b;z=c;}

intset(intAJntb){x=a;y=b;}

voidset(intAJntBJntc=0){x=a;y=b;z=c;}

staticvoiddisp(){cout«x«y«z«endl;}

private:

intx,y,z;

}

voidmain()

(

Aa(l,2,3);

A.set(120,300);

)

2.#include<iostream.h>

classA

(

private:

intk;

public:

voidA(intn){k=n;}

~A(intn){k=n;}

)

classB

(

private:

intj;

Aa;

public:

B(intxjnty)

Aa(x);

j=y;

)

);

voidmain()

(

Bb(9);

)

解答:

1.

2.

四.编程题

1.下面是一个类的测试程序,设计出能使用如下测试程序的类。

voidmain()

(

Testa;

a.init(68,55);

a.print();

)

其执行结果为:

测试结果:68-55=13

2.设计内联函数inlinechartrans(charch);实现大小写字母转换

3.给定三个数21,15,22,设计内联函数intmax(inta,intb)求两个数的最大数,输出

结果“在211522之中最大的是:22”。

4.设计重载函数overload,如果输入整数5,则输出5,如果输入字符才,则输出字符七,

O

5.定义一个三角形类,用成员函数计算其周长、面积。

解答:

1.

2.

3.

4.

5.

五.填空题

1.()的功能是在创建对象时,给数据成员赋初值,即对象的初始化。

2.()的功能是释放一个对象,在对象删除之前,用它来做一些内存释放等

清理工作,它的功能与构造函数的功能正好相反。

3.定义对象时,编译系统会自动地调用()。

4.一个类中有且仅有一个析构函数,且应为()。

5.在堆中创建的数据对象称为()。

6.当函数被声明为一个类的()后,它就可以通过对象名访问类的私有成员

和保护成员。

7.定义A是一个类,那么执行语句“Aa,b(3),*p;"调用了()次构造函数。

8.this指针是C++实现()的一种机制。

9.如果友元函数带了两个不同的类的对象,其中个对象所对应的类要在后面声明。为了

避免编译时的错误,编程时必须通过()告诉C++,该类将在后面定义。

10.已知类中的一个成员函数说明为:voidSet(X&a)其中,X&a的含义是(

)。

11.为了使类中的某个成员不被类的对象通过成员操作符访问,则不能把该成员的访问权限

定义为()。

12.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其内部管

理操作的函数是()。

13.在C++语言程序中,对象之间的相互通信通过调用()函数实现。

14.类的具体表现是通过声明()来操作的。

15.默认构造函数的函数体是()。

解答:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

第三章函数重载与内联函数

一,阅读程序题

1.#include<iostream.h>

classSample

(

intx,y;

public:

Sample(){x=y=0;}

Sample(inta,intb){x=a,y=b;}

voiddisp()

(

cout«"x="«x«"/y="«y«endl;

)

);

voidmain()

(

Samplesl,s2(l,2),s3(10,20);

Sample*Pa[3];

Pa[O]=&sl;Pa[l]=&s2;Pa[2]=&s3;for(inti=0;i<3;i++)

Pa[i]->disp();

}

2.#include<iostream.h>

classSample

(

intn;

public:

Sample(){}

Sample(intm){n=m;}

friendvoidsquare(Sample&s)

(

s.n=s.n*s.n;

)

voiddisp()

cout«"n="«n«endl;

)

);

voidmain()

(

Samplea(10);

square(a);

a.disp();

)

3.#include<iostream.h>

classB;

classA

(

inti;

friendB;

voiddisp(){cout«i«endl;}

);

classB

{

public:

voidset(intn)

(

Aa;

a.i=n;

a.disp();

)

);

voidmain()

{

Bb;

b.set(2);

)

4.#include<iostream.h>

classteacher;

classstudent

(

char*name;

public:

student(char*s){name=s;}

friendvoidprint(student&,teacher&);

);

classteacher

char*name;

public:

teacher(char*s){name=s;}

friendvoidprint(student&,teacher&);

);

voidprint(student&a,teacher&b)

(

cout«"thestudentis:"«a.name«endl;

cout«"theteacheris:"«b.name«endl;

)

voidmain()

(

students("LiHu");

teachert("WangPing");

print(s,t);

)

5.#include<iostream.h>

#include<stdlib.h>

classSample

(

public:

intx,y;

Sample(){x=y=O;}

Sample(inta,intb){x=a;y=b;}

voiddisp()

(

cout«,,x=,,«x«",y="«y«endl;

)

“Sample。

(

if(x==y)

cout«"x=y"«endl;

else

cout«"x!=y',«endl;

)

);

voidmain()

(

Samplesl(2,3);

sl.disp();

if(sl.x==2)exit(O);

)

6.#include<iostream.h>

classSample

(

public:

Sample();

Sample(int);

~Sample();

voiddisplay();

protected:

intx;

);

Sample::Sample()

(

x=O;cout«"constructingnormally\n";

)

Sample::Sample(intm)

(

x=m;

cout«"constructingwithanumber:"«x«endl;

)

voidSample::display()

{

cout«"displayanumber:n«x«endl;

}

Sample::^Sample()

{

cout«"destructing\n";

)

voidmain()

(

Sampleobjl;Sampleobj2(20);

objl.display();

obj2.display();

)

7.#include"iostream.h"

classA

public:

A(){cout«"A的构造函数”<<endl;}

);

voidmain()

(

Ab[2]/p[3];

)

8.#include<iostream.h>

classSample

(

intx,y;

public:

Sample(){x=y=O;}

Sample(intajntb){x=a;y=b;}

voiddisp()

(

,,,

cout«"x="«x«'/y=«y«endl;

)

);

voidmain()

(

Samplesl,s2(5z21)zs3(32,17);

Sample*pa[3]={&sl,&s2,&s3};

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

pa[i]->disp();

)

解答:

1.

2.

3.

4.

5.

6.

7.

8.

二.完成程序题

1.有一个学生类student,包括学生姓名、成绩,设计一个友元类,输出成绩大于等于80

分以上者。

#include<iostream.h>

#include<string.h>

#include<iomanip.h>

classstudent

charname[10];

intdeg;

public:

(1)〃定义构造函数

(

strcpy(name,na);

deg=d;

)

char*getname(){(2)}

(3);

);

voiddisp(student&s)

(

if(s.deg>=80)cout«setw(10)«<<setw(6)«s.deg«endl;

)

voidmain()

{

$7<^田$5=炽"0田("王华",78)0“6田("李明",92)津“6田("张伟”,62)5”

ent("孙强",88)};

cout<(”输Hl结果:"<<endl;

cout<<setw(10)<<"姓名"<<setv^6)<<"成绩"<<endl;

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

(4);〃输出

)

2.有一个向量类Vector,包括一个点的坐标位置x和y,设计两个友元函数,实现两个向量

的加法和减法的运算

#include<iostream.h>

classVector

(

intx,y;

public:

(1)〃定义构造函数

(2)〃定义构造函数

voiddisp()

(

cout«"(''<<x«","<<y<<")";

)

(3)______________________________________________________

(4)______________________________________________________

);

Vectoradd(Vector&vl,Vector&v2){

Vectorv;

v.x=vl,x+v2.x;

v.y=vl.y+v2.y;

returnv;

)

Vectorsub(Vector&vl,Vector&v2){

Vectorv;

v.x=vl.x-v2.x;

v.y=vl.y-v2.y;

returnv;

)

voidmain()

(

Vectorvl(2,4),v2(5/7)/V3;v3=add(vl,v2);

v3.disp();

v3=sub(vlzv2);

v3.disp();

)

3.编写一个程序,设计一个Person类,包括学号、姓名和成绩等私有数据成员,不含任何

成员函数,只将display(Personp)设置为该类的友元函数。

#include<iostream.h>

#include<string.h>

classPerson

(

intno;

charname[10];

intscore;

(1)

Person(intn,charnam[],intdeg);

(2);

);

(3)

(

strcpy(name,nam);

)

voiddisplay(Personp)

(

cout<<“输出结果"v<endl;

cout<<“学生”<<p,name<<"(学号”<<p.no<<")成绩为:“<<p.score«endl;

)

voidmain()

Personobj(91106,”张明“,98);

(4);

)

4.下面程序中用来求数组和。请在下面程序的横线处填上适当内容

#include<iostream.h>

classArr

(

int*a,n;

public:

(1)〃定义构造函数

Arr(int*aa,intnn)

(

n=nn;

a=(2)__________________________

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

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

)

~Arr()

{⑶}

intGetValue(inti)

{return(4)}

};

voidmain()

(

intb[5]={10,20,30,40,50};

Arral(b,5);

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

s+=al.GetValue(i);

cout«"s="«s«endl;

)

5.求直角三角形斜边长度

#include<iostream.h>

include<math.h>

(1)

classPoint

(

private:

doublexzy;

(2)

public:

(3)

{x=i;y=j;}

Point(Point&p)

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

);

classLine

(

private:

Pointpl,p2;public:

Line(Point&xpl,Point&xp2):pl(xpl),p2(xp2){}

doubleGetLength();

};

doubleLine::GetLength()

(

doubledx=p2.x-pl.x;

doubledy=p2.y-pl.y;

returnsqrt(dx*dx+dy*dy);

)

voidmain()

(

Pointp],p2(6,8);

(4)__________________________

cout«Ll.GetLength()«endl;

)

解答:

1.

2.

3.

4.

5.

三,改错题

1.classA

(

private:

constintm_a;

intm_b;

public:

voidA(intizintj):m_a(i)zm_b=(j);

voidset(inti){m__b=i;}

intdisp()const

{cout«"m_a=,,«m_a«'\t,«"m_b="«m_b«endl;}

voidmain()

A31(10,20);

constAa2(30,60);

al.set(30);

a2.set(30);

2.有一处错误。

#include<iostream.h>

classA{

public:

voidfun(){cout«"a.fun"«endl;}

};

classB{

public:

voidfun(){cout«Hb.fun"«endl;}

voidgun(){cout«"b.gunM«endl;}

);

classC:publicA,publicB{

private:

intb;

public:

voidgun(){cout«"C.gun"«endl;}

);

voidmain(){

Cobj;

obj.fun();

obj.gun();

}

定义了一个基类shape及派生类rectangle,通过sharpe的指针调用rectangle的area函

O共有四处错误。

include<iostream.h>

classshape{

public:

intarea(){return0;}

);

classrectangle:publicshape{

inta,b;

public:

voidsetLength(intx=0,inty)

{a=x;b=y;}

intarea(){returna*b;}

);

voidmain()

(

rectangler;

r.setLength(3,5);

shape*s=r;

cout«s.area()«endl;

解答:

1.

2.

四,编程题

1.利用重载求两个整数、三个整数和四个整数的最小值。

2.利用重载计算长方形、正方形、圆、梯形的面积。

3.利用重载实现对10个整数和10个实数的排序.

4.定义一个矩形类,用成员函数其周长、面积。

5.定义一个圆类,用成员函数其周长、面积。

解答:

1

2

3

4

5

五.填空题

1.()是指两个或两个以上的函数具有相同的函数名,但参数类型不一致或

参数个数不同。

2.函数重载是C++对C语言的扩展,包括()1>

3.成员函数重载的一个很重要的应用就是重载()。

4.通过对()进行重载,可以实现定义对象时初始化赋值的多样性。

5.析构函数()重载。(填可以或不能)

6.在函数调用时,若某个参数省略,则其后的参数皆应省略而采用()。

7.()是一个函数,它与一般函数的区别是在使用时可以像宏一样展开,所

以没有函数调用的开销。

8.在内联函数体中,不能含有(),如switch和while语句等。

9.在类内给出函数体定义的成员函数被默认为()。

10.一个函数功能不太复杂,但要求被频繁调用,选用()。

11.内联函数的关键字是()。

12.函数重载是指两个或两个以上的函数具有()的函数名,但参数类型不一

致或参数个数不同。

13.函数重载是指两个或两个以上的函数具有相同的函数名,但()不一致或

参数个数不同。

14.函数重载是指两个或两个以上的函数具有相同的函数名,但参数类型不一致或(

)不同。

15.在C++中,设置参数默认值时,应当()设置。

解答:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

笫四章常量与引用

一.阅读程序题

1.#include<iostream.h>

usingnamespacestd;

intsum(inti,int&j)

(

staticintiSum=O;++i;

j++;

iSum=iSum+i+j;

returniSum;

}

voidmain()

(

inta=lzb=l;cout«sum(a,b)«endl;

cout«sum(b,a)«endl;

cout«a«7,<<b«endl;

)

2.#include<iostream.h>

usingnamespacestd;

int&f(int&i)

(

i*=5;returni;

)

intmain()

(

intk=3;int&m=f(k);

cout«k«endl;

m=50;cout«k«endl;

return0;}

#include<iostream.h>

usingnamespacestd;

classA{

public:

virtualvoidfunl(){cout<<〃classAl\n”;}

virtualvoidfun2(){cout«,,classA2\n〃;}

);

classB:publicA{

public:

voidfunl(){cout<<"classBl\n〃;}

voidfun2(){cout«”dassB2\n”;}

);

voidmain()

(

Aa;

A*pa=&a;

Bb;

pa->funl();

pa->fun2();

pa=&b;

pa->funl();

pa->fun2();

)

4.#include<iostream.h>

usingnamespacestd;

classSample{

intn;

public:

Sample(inti=O){n=i;}

Sample&operator=(Sample);

voiddisp(){cout«,,n=,,«n<<endl;}

);

Sample&operator=(Samples){

Sample::n=s.n++;

return*this;

)

voidmain(){

Samplesl(10),s2;s2=sl;sl.disp();

s2.disp();

)

5.#include<iostream>

usingnamespacestd;

classPoint{

staticintnumber;

intX,Y;

public:

Point(intxx=O,intyy=O){X=xx;Y=yy;number++;showmsg("normalconstruetion");}

Point(constPoint&p);

~Point(){number-;showmsg("^Point");}

voidshowmsg(constchar*p=NULL);

);

intPoint::number=0;Point::Point(constPoint&p){

X=p.X;

Y=p.Y;

number++;

showmsg("copyconstruction");

)

voidPoint::showmsg(constchar*p/*=NULL*/){

if(P)

cout«p«":";

cout«number«endl;

)

voidfunl(Pointp){

p.showmsg("insidefunl()");

)

intmain(){

PointA(lz2);

PointB(A);

funl(A);

return0;}

6.#include<iostream>

usingnamespacestd;

intmain(){

inti=0;int*p=&i;

int&c=i;

cout«"i="«i«",*p=,,«*p«",c="«c«endl;

(*p)++;

cout«,'i=,,«i«",*p="«*p«",c="«c«endl;

C++;

,

cout«'i="«i«"z*p="«*p«"/c="«c«endl;

return0;}

7.voidchangpointerl(int**x){

(*x)++;

**x=l;

)

voidchangpointer2(int*&x){

x++;

*x=2;

)

intmain(){

intiData[3]={0};

int*p=iData;

inti;

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

cout«"iData["«i«"]="«iData[i]«"

cout«endl;

changpointerl(&p);

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

cout«"iData["«i«"]="«iData[i]«"

cout«endl;

changpointer2(p);

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

cout«"iData["«i«"]="«iData[i]«"

cout«endl;

return0;}

8.#include<iostream>

usingnamespacestd;

classStudent{

staticintnumber;

public:

Student(){

number++;

show("Student");

)

~Student(){

number-;

show("〜Student”);

)

staticvoidshow(constchar*str=NULL){

if(str)

cout«str«":";

cout«"number="«number«endl;

)

);

intStudent::number=0;Studentf(Studentx){

x.show(Hxinsidef()");

returnx;

)

intmain(){

Studenthl;Studenth2=f(hl);

Student::show("aftercallf()");

return0;}

解答:

1.

2.

3.

4.

5.

6.

7.

8.

二.完成程序题

1.定义一个二维坐标点类,并统计当前用此类定义的点对象数目。

#include<iostream.h>

classPoint{

staticintcount;〃统计点数

intx,y;

public:

_____________________〃构造函数

(

count++;〃每创建一个对象,数目加1

x=ix;y=iy;

}

____________________〃拷贝构造函数

(

count++;

x=p.x+l;y=p.y-l;}

voidprint()

(

cout<<ix<<,<<iy<<endl;〃显示点坐标

________________〃显示点数

)

};

intmain()

(

Pointa(3,5);

________________〃利用拷贝构造函数定义对象b

a.print();

b.print();

return0;}

2.include<iostream.h>

//辅助函数:交换x和y的值

template<classT>

voidSwap_______________________

Ttemp;

temp=x;

x=y;

y=temp;

)

//用起泡法对数组A的n个元素进行排序

voidBubbleSort(TA[],intn)

(

inti,j;

intlastExchangelndex;

i=n-1;

while(i>0)

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

if(A[j+l]<A[j])

(

Swap(A[j],A[j+l]);

lastExchangelndex=j;

}

for(intk=0;k<n;k++)

cout«A[k]«"

cout«endl;

)

}

voidmain()

(

inti;

intdatal[]={lz3,5,7,9,1143,15,17,19,2,4,6,8,10,12,14,16,18,20);

cout<<“排序前的数据:"«endl;

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

cout«datal[i]«"

cout«endl;

cout«"开始排序«endl;

cout<<”排序后的数据:"<<endl;

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

cout«datal[i]«"

cout«endl;

}

3.#include<iostream>

usingnamespacestd;

classbase{

inti;

public:

base(intx):i(x){}

intgeti(){returni;}

virtualchar*show()const{

return"base";

}

);

classdl:{〃虚公有继承

intidl;public:

dl(intx=l):{}

char*show()const{

return"dl";

)

};

classd2:{//虚公有继承

intid2;public:

d2(intx=2):{}

char*show()const{

return"d2";

}

};

classm:publicdl,publicd2{intim;

public:

m(intx=0):{}

char*show()const{

returnd2::show();

)

);

intmain(){

mml;cout«ml.show()«endl;

cout«ml.geti()«endl;

dldll;cout«dll.geti()«endl;

cout«dll.show()«endl;

return0;}

4.include<iostream.h>

classShape

public:

Shape(){}

~Shape(){}

virtualfloatGetArea()=0;

virtualfloatGetPerim()=0;

);

classCircle:publicShape

(

public:

Circle(floatradius):___________________

(}

〜Circle。。

{return3.14*itsRadius*itsRadius;}

{return6.28*itsRadius;}

温馨提示

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

评论

0/150

提交评论