C++填空与编程Word格式文档下载.docx

上传人:b****6 文档编号:16215715 上传时间:2022-11-21 格式:DOCX 页数:53 大小:30.95KB
下载 相关 举报
C++填空与编程Word格式文档下载.docx_第1页
第1页 / 共53页
C++填空与编程Word格式文档下载.docx_第2页
第2页 / 共53页
C++填空与编程Word格式文档下载.docx_第3页
第3页 / 共53页
C++填空与编程Word格式文档下载.docx_第4页
第4页 / 共53页
C++填空与编程Word格式文档下载.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

C++填空与编程Word格式文档下载.docx

《C++填空与编程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++填空与编程Word格式文档下载.docx(53页珍藏版)》请在冰豆网上搜索。

C++填空与编程Word格式文档下载.docx

在C++语言中,编程的单位是__类__。

19.类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的_数据成员_,共同行为被描述为类中的__成员函数__。

20.类的具体表现是通过定义_成员函数_来操作的。

21.对类中的成员函数和属性的访问是通过_private__、__public__和__protected_这3个关键字来控制的。

22.一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为__private__权限,而把成员函数(方法)定义为__public__权限。

23.在类定义中,数据和成员函数默认权限是__private__。

24.类中构造函数有__1个或N__个,析构函数有__1__个。

25.类中的构造函数是一个特殊的成员函数,它由类的对象__生成__时调用,它的作用是__初始化__。

26.在定义类的对象时,C++程序将自动调用该对象的_构造__函数初始化对象自身。

27.在撤销类的对象时,C++程序将自动调用该对象的_析构__函数。

28.__new__运算符对指定类型对象动态分配内存并返回__true或false__。

29.__delete__运算符删除动态分配的内存空间。

30.在类中定义和实现的函数称为_内联函数__。

31.非成员函数应声明为类的_友元函数__才能访问这个类的private成员。

面向对象编程程序设计复习题

二、编程题

1.试定义一个表示学生成绩的结构体,要求包含学号(no)、姓名(name)、数学成绩(math)、英语成绩(eng)、C++语言成绩(c)和三门课程的总分(sum),再定义两个变量(s1,s2)。

#include<

iostream>

usingnamespacestd;

structstudent

{

intno;

charname[20];

doublemath,eng,c;

doublesum;

};

intmain()

students1,s2;

return0;

}

2.定义结构体类型structcard,代表一张扑克牌的结构,结构体中包含两个成员:

牌的花色hua(定义字符类型)和面值no(定义整型),再定义一个结构变量deck,代表一张牌。

structcard

charhua;

carddeck={'

t'

13};

cout<

<

deck.hua<

'

\t'

deck.no<

endl;

3.定义一个第1题的结构体类型的结构体数组stud,输入学生三门课成绩,然后按总分成绩排序后输出学生成绩。

doublemath;

doubleeng;

doublec;

studenta={001,"

zhang"

78,86,99,(99+86+78)};

studentb={002,"

li"

89,64,60,(89+64+60)};

studentc={003,"

chen"

99,77,55,(55+77+99)};

studentd=a;

"

按总分排名如下:

if(b.sum>

a.sum)

{d=a;

a=b;

b=d;

}//确保a.sum>

=b.sum;

if(c.sum>

{

cout<

c.no<

ends<

c.name<

c.math<

c.eng<

c.c<

c.sum<

a.no<

a.name<

a.math<

a.eng<

a.c<

a.sum<

b.no<

b.name<

b.math<

b.eng<

b.c<

b.sum<

}

elseif(c.sum>

b.sum)

else

4.定义一个学生类,其中有3个数据成员:

学号、姓名、年龄,以及若干成员函数。

同时编写main函数使用这个类,实现对学生数据的赋值和输出。

#include<

string>

classstudent

intnum;

stringname;

intage;

public:

student(){num=0;

name='

\0'

;

age=0;

student(int,string,int);

voidshow();

student:

student(inta,stringb,intc):

num(a),name(b),age(c){}

voidstudent:

show()

studentnumber:

num<

name:

name<

age:

age<

students1(200803986,"

梅寒芳"

23);

s1.show();

5.计算两点之间的距离。

可以定义点类(Point),再定义一个类(Distance)描述两点之间的距离,其数据成员为两个点类对象,两点之间距离的计算可设计由构造函数来实现。

cmath>

classpoint

doublex,y;

public:

point():

x(0),y(0){}

point(doublea,doubleb):

x(a),y(b){}

doublegetx(){returnx;

doublegety(){returny;

voidsetx(){cin>

>

x;

voidsety(){cin>

y;

classDistance

pointa,b;

doubledis;

Distance();

Distance(point,point);

Distance:

Distance()

dis=0;

dis<

Distance(pointm,pointn)

a=m,b=n;

dis=sqrt(pow(a.getx()-b.getx(),2)+pow(a.gety()-b.gety(),2));

a.setx(),a.sety();

b.setx(),b.sety();

Distance(a,b);

6.编写一个程序,设计一个产品类Product,要求包含数据成员:

产品名称,产品单价,剩余产品数量,同时要求有构造函数,析构函数,显示剩余产品数量的成员函数。

//简洁写法:

//

////////////////////////////////////////////////

classProduct

doubleprice;

intleavings;

Product():

price(0),name("

\0"

),leavings(0){}

Product(stringa,doubleb,intc):

name(a),price(b),leavings(c){}

voidshow(){cout<

price<

voidshowl();

~Product(){}

voidProduct:

showl()

leavings:

leavings<

Producta("

computer"

3998,1);

a.show();

a.showl();

////////////////////////////////////////////////////

//复杂一点的算法:

////

///////////////////////////////////////////////////

iostream.h>

#include"

algorithm"

//由于<

不支持string,所以本类中的name是用数组装的。

//关于类中的数组初始化问题请注意。

price(0),leavings(0){memset(name,0,sizeof(name));

}//来自周老师

Product(chara[],doubleb,intc):

price(b),leavings(c){strcpy(name,a);

}//这一行也值得注意

friendistream&

operator>

(istream&

Product&

);

//只能重载为友元函数!

friendostream&

operator<

(ostream&

istream&

in,Product&

p)

in>

p.name>

p.price>

p.leavings;

returnin;

ostream&

out,Product&

out<

Productname:

p.name<

\n'

<

Productprice:

p.price<

Productleavings:

p.leavings<

returnout;

a<

Productb;

cin>

b;

7.定义盒子Box类,要求具有以下成员:

可设置盒子形状;

可计算盒子体积;

可计算盒子的表面积。

classbox

doublex,y,z;

box():

x(0),y(0),z(0){}

box(inta,intb,intc):

x(a),y(b),z(c){}

voidsetx(inta){x=a;

voidsety(inta){y=a;

voidsetz(inta){z=a;

doubleacea();

doublevolume();

doublebox:

acea()

return2*(x*y+y*z+z*x);

volume()

returnx*y*z;

boxbox_1(2,3,4);

acea="

box_1.acea()<

volume="

box_1.volume()<

******************"

box_1.setx(5);

box_1.sety(6);

8.编写一个程序计算两个给定的长方形的周长和面积,要求定义一个长方形rectangle的类。

#definepi3.14

classShape//抽象基类

Shape(){};

virtualdoubleGetArea(){return0;

virtual~Shape()=0;

classCircle:

publicShape//从抽象基类继承得到圆

intr;

Circle():

r(0){}

Circle(inta):

r(a){}

doubleGetArea(){returnpi*r*r;

classRectangle:

publicShape//从shape抽象类继承得到长方形类

intx,y;

Rectangle():

Rectangle(inta,intb):

doubleGetArea(){returnx*y;

classSquare:

publicRectangle//从长方形继承得到正方形(其实应该是长方形继承正方形更好,但是无奈题目要求这么来~~

Square():

Rectangle(){}

Square(inta):

Rectangle(a,1){}//注意这一行!

doubleGetArea(){returnpow(Rectangle:

GetArea(),2);

Squarea(10);

a.GetArea()<

9.声明一个Shape基类,在此基础上派生出Rectangle和Circle类,二者都有GetArea()函数计算对象的面积。

使用Rectangle类创建一个派生类正方形Square类。

//virtual~Shape()=0;

//这儿不好~一群殴去掉才能运行~我是画蛇添足了~但是这确实是个问题~~~

doubleGetArea(){returnx*y;

Shape*p;

//建立一个边长为10的正方形对象

p=&

a;

//两个不需要重载的运算符

p->

GetArea()<

//求面积

Rectangleb(5,6);

//建立一个长宽分别为5、6的长方型对象

Circlec(9);

//建立一个半径为9的圆对象

c;

10.声明一个哺乳动物Mammal类,再由此派生出狗Dog类,声明一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。

classmammal

mammal()//默认构造函数

mammal'

sconstructor"

~mammal()

adestucor"

classdog:

publicmammal

dog()

dog'

~dog()

sdestructor"

doga;

/*

1、结论:

先构造后析构,后构造先析构

2、子类会调用父类构造函数(细节自己试验去)

11.定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。

classperson

charsex;

person(){}

person(string,char,int);

voidsetname(stringa){name=a;

}//这三个

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

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1