《面向对象程序设计》编程题复习及其答案.docx

上传人:b****4 文档编号:24484984 上传时间:2023-05-28 格式:DOCX 页数:40 大小:19.62KB
下载 相关 举报
《面向对象程序设计》编程题复习及其答案.docx_第1页
第1页 / 共40页
《面向对象程序设计》编程题复习及其答案.docx_第2页
第2页 / 共40页
《面向对象程序设计》编程题复习及其答案.docx_第3页
第3页 / 共40页
《面向对象程序设计》编程题复习及其答案.docx_第4页
第4页 / 共40页
《面向对象程序设计》编程题复习及其答案.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

《面向对象程序设计》编程题复习及其答案.docx

《《面向对象程序设计》编程题复习及其答案.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》编程题复习及其答案.docx(40页珍藏版)》请在冰豆网上搜索。

《面向对象程序设计》编程题复习及其答案.docx

《面向对象程序设计》编程题复习及其答案

《面向对象程序设计》复习题

1、(C++的输入输出)天猫优惠券,我就要券

定义一个函数max,实现输入两个数a、b,比较并从小到大输出。

2、(函数的重载)

(1)定义一个带两个参数的函数max,输出最大值。

(2)再定义一个带三个参数的函数max,输出最大值。

(3)主函数测试之。

3、(有默认参数的函数)

将题2用带默认参数的函数实现。

4、(变量的引用)

(1)定义一个swap1函数,以普通形参传入两个变量a、b,互换a、b的值。

(2)定义一个swap2函数,以指针形参传入两个变量a、b,互换a、b的值。

(3)定义一个swap3函数,以引用形参输入两个变量a、b,互换a、b的值。

(4)主函数定义两个变量x、y传入三个函数,观察x、y值前后的变化。

5、(类的定义)

定义一个student类,数据成员包括:

学号num,姓名name,年龄age,性别sex,成员函数包括:

(1)set函数,键盘输入学号,姓名,年龄,性别

(2)display函数,输出学生信息。

6、(构造函数和析构函数)

定义一个student类,数据成员包括:

学号num,姓名name,年龄age,性别sex,成员函数包括:

(1)构造函数,初始化学号,姓名,年龄,性别

(2)display函数,输出学生信息。

(3)析构函数,输出学生学号。

(4)主函数定义多个对象,并注意构造函数和析构函数的调用顺序。

7、(构造函数的重载)

在题6基础上增加一个默认构造函数,实现构造函数的重载

8、将题6用带默认参数的构造函数实现。

9、(对象数组和对象的动态建立及释放)

在题8基础上,实现如下主函数:

(1)在主函数中定义一个包含三个学生的数组,并初始化之。

(2)在主函数中定义一个student类指针p并用new运算符分配动态内存

(3)用delete删除p指向的动态内存。

(4)观察构造函数和析构函数的调用。

10、(复制构造函数)

在题8基础上新增加一个复制构造函数,并主函数新增复制构造对象。

11、(静态成员)

定义一个student类,数据成员包括:

学号num,姓名name,成绩score,累加总分sum,累计人数count。

成员函数包括:

构造函数统计人数count;

(1)非静态成员total函数,求sum。

(2)静态成员average函数,求平均成绩。

(3)主函数定义包含3个学生的数组,求三个学生的平均成绩。

12、(友元函数)

定义一个Time类,私有数据成员包括:

时hour、分minute、秒second

成员函数:

构造函数Time()

定义一个友元函数display,使之访问私有成员输出时分秒。

13、(运算符重载)

(1)定义一个复数类,实现对“+”,>>,<<的重载,使之可实现以下主函数。

intmain()

{

Complexa(3,4),b(1,2),c,d,e,f;

c=a+b;

d=a+5;

e=3+b;

cin>>f;

cout<

return0;

}

(2)定义一个Time类,实现对“++”的前缀、后缀重载。

P134

i++:

单目运算符天猫优惠券,我就要券

14、(单继承及派生类构造函数)

(1)定义一个person类,数据成员包括:

姓名name,年龄age,性别sex

成员函数:

构造函数及display函数

(2)定义一个派生类student,公有继承与person类,新增成员:

专业major,入学日期enterdate(Date类自定义)。

(3)主函数定义student对象,各类构造函数的调用顺序。

15、(多继承)

在14题基础上由person类再派生出teacher类,新增成员:

职称title,工资wage

16、(虚继承)

由student类和teacher类共同派生出graduate类,新增成员:

年级grade,将person类定义成虚基类,实现用虚继承解决二义性。

17、(抽象类及多态性)

定义一个抽象基类Shape,由它派生出5个派生类,Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangel(三角形)。

用虚函数分别计算几何图形面积,并求他们的和。

要求定义一个基类指针,使它指向每一个派生类对象,体现其多态性。

1、#include

usingnamespacestd;

voidmax()

{

inta,b;

cout<<"请输入两个数:

"<

cin>>a>>b;

if(a>b)

cout<

else

cout<

}

intmain()

{

max();

return0;

}

2、#include

usingnamespacestd;

voidmax(inta,intb)

{

if(a>b)

cout<

else

cout<

}

voidmax(inta,intb,intc)

{

if(a>b&&a>c)

cout<

elseif(b>c)

cout<

else

cout<

}

intmain()

{

max(2,5);

max(7,5,3);

return0;

}

3、#include

usingnamespacestd;

voidmax(inta,intb,intc=0)

{

if(a>b&&a>c)

cout<

elseif(b>c)

cout<

else

cout<

}

intmain()

{

max(2,5);

max(7,5,3);

return0;

}

4、#include

usingnamespacestd;

voidswap1(inta,intb)

{

inttemp;

temp=a;

a=b;

b=temp;

}

voidswap2(int*a,int*b)

{

inttemp;

temp=*a;

*a=*b;

*b=temp;

}

voidswap3(int&a,int&b)

{

inttemp;

temp=a;

a=b;

b=temp;

}

intmain()

{

intx,y;

x=5;y=7;

swap1(x,y);

cout<<"x="<

x=5;y=7;

swap2(&x,&y);

cout<<"x="<

x=5;y=7;

swap3(x,y);

cout<<"x="<

return0;

}

5、#include

#include

usingnamespacestd;

classstudent

{

private:

intnum;

stringname;

intage;

charsex;

public:

voidset()

{

cout<<"请输入:

学号,姓名,年龄,性别(form)"<

cin>>num>>name>>age>>sex;

}

voiddisplay()

{

cout<<"学号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"性别:

"<

}

};

intmain()

{

students;

s.set();

s.display();

return0;

}

6、#include

#include

usingnamespacestd;

classstudent

{

private:

intnum;

stringname;

intage;

charsex;

public:

/*voidset()

{

cout<<"请输入:

学号,姓名,年龄,性别(form)"<

cin>>num>>name>>age>>sex;

}

*/

student(intnum,stringname,inta,ints)

{

cout<<"调用构造函数num="<

this->num=num;

this->name=name;

age=a;

sex=s;

}天猫优惠券,我就要券

voiddisplay()

{

cout<<"学号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"性别:

"<

}

~student()

{

cout<<"析构函数学号:

"<

}

};

intmain()

{

students(1001,"张三",25,'f'),s1(1002,"李四",24,'m');

//s.set();

s.display();

s1.display();

return0;

}

7、#include

#include

usingnamespacestd;

classstudent

{

private:

intnum;

stringname;

intage;

charsex;

public:

/*voidset()

{

cout<<"请输入:

学号,姓名,年龄,性别(form)"<

cin>>num>>name>>age>>sex;

}

*/

student()

{

cout<<"调用构造函数num="<<0<

num=0;

name="";

age=18;

sex='f';

}

student(intnum,stringname,inta,ints)

{

cout<<"调用构造函数num="<

this->num=num;

this->name=name;

age=a;

sex=s;

}

voiddisplay()

{

cout<<"学号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"性别:

"<

}

~student()

{

cout<<"析构函数学号:

"<

}

};

intmain()

{

students(1001,"张三",25,'f'),s1(1002,"李四",24,'m'),s2;

//s.set();

s.display();

cout<

s1.display();

cout<

s2.display();

cout<

return0;

}

8、#include

#include

usingnamespacestd;

天猫优惠券,我就要券

classstudent

{

private:

intnum;

stringname;

intage;

charsex;

public:

student(intnum=0,stringname="",inta=18,ints='f')

{

cout<<"调用构造函数num="<

this->num=num;

this->name=name;

age=a;

sex=s;

}

voiddisplay()

{

cout<<"学号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"性别:

"<

}

~student()

{

cout<<"

}

};

intmain()

{

students(1001,"张三",25,'f'),s1(1002,"李四",24,'m'),s2;

//s.set();

s.display();

cout<

s1.display();

cout<

s2.display();

cout<

return0;

}

9、#include

#include

usingnamespacestd;

classstudent

{

private:

intnum;

stringname;

intage;

charsex;

public:

student(intnum=0,stringname="",inta=18,ints='f')

{

cout<<"调用构造函数num="<

this->num=num;

this->name=name;

age=a;

sex=s;

}

voiddisplay()

{

cout<<"学号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"性别:

"<

}

~student()

{

cout<<"析构函数学号:

"<

}

};

intmain()

{

students[3]={student(1001,"张三",25,'f'),student(1002,"李四",24,'m')};

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

{

s[i].display();

cout<

}

student*p;

p=newstudent(1003,"王五",23,'f');

p->display();

cout<

deletep;

return0;

}

10、#include

#include

usingnamespacestd;

classstudent

{

private:

intnum;

stringname;

intage;

charsex;

public:

student(intnum=0,stringname="",inta=18,ints='f')

{

cout<<"调用构造函数num="<

this->num=num;

this->name=name;

age=a;

sex=s;

}

student(student&s)

{

num=s.num;

name=s.name;

age=s.age;

sex=s.sex;

}

voiddisplay()

{

cout<<"学号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"性别:

"<

}

~student()

{

cout<<"析构函数学号:

"<

}

};

intmain()

{

students1(1001,"张三",25,'f');

students2(s1);

s1.display();

s2.display();

return0;

}

11、

#include

#include

usingnamespacestd;

classstudent

{

private:

intnum;

stringname;

floatscore;

staticfloatsum;

staticintcount;

public:

student(intnum=0,stringname="",floats=80)

{

this->num=num;

this->name=name;

score=s;

count++;

}

voiddisplay()

{

cout<<"学号:

"<

cout<<"姓名:

"<

cout<<"成绩:

"<

}

voidtotal();

staticfloataverage();

};

floatstudent:

:

sum=0.0;

intstudent:

:

count=0;

voidstudent:

:

total()

{

sum+=score;

}

floatstudent:

:

average()

{

returnsum/count;

}

intmain()

{

students[3]={student(1001,"张三",87),student(1002,"李四"),student(1003,"王五",90)};

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

{

s[i].total();

}

cout<<"平均成绩:

"<

:

average()<

return0;

}

12、

#include

//#include

//usingnamespacestd;

classTime

{

private:

inthour;

intminute;

intsecond;

public:

Time(inth=12,intm=0,ints=0)

{

hour=h;

minute=m;

second=s;

}

friendvoiddisplay(Time&);

};

voiddisplay(Time&t)

{

cout<

}

intmain()

{

Timet,t1(13,12,22);

display(t);

display(t1);

return0;

}

13、

(1)

//方法1:

多次重载+

#include

//#include

//usingnamespacestd;

classComplex

{

private:

floatreal;

floatimage;

public:

Complex(floatreal,floatimage)

{

this->real=real;

this->image=image;

}

Complex()

{

real=0;

image=0;

}

friendComplexoperator+(Complex&a,Complex&b);

friendComplexoperator+(Complex&a,floatb);

friendComplexoperator+(floata,Complex&b);

friendostream&operator<<(ostream&output,Complexa);

friendistream&operator>>(istream&input,Complexa);

};

Complexoperator+(Complex&a,Complex&b)

{

returnComplex(a.real+b.real,a.image+b.image);

}

Complexoperator+(Complex&a,floatb)

{

returnComplex(a.real+b,a.image);

}

Complexoperator+(floata,Complex&b)

{

returnComplex(b.real+a,b.image);

}

ostream&operator<<(ostream&output,Complexa)

{

if(a.image>0)

{

output<

}

else

{

output<

}

returnoutput;

}

istream&operator>>(istream&input,Complexa)

{

input>>a.real>>a.image;

returninput;

}

intmain()

{

Complexa(3,4),b(1,2),c,d,e,f;

c=a+b;

d=a+5;

e=3+b;

cout<

cin>>f;

cout<

return0;

}

//方法2:

使用转换构造函数实现

#include

classComplex

{

private:

floatreal;

floatimage;

public:

Complex(floatreal,floatimage)

{

this->real=real;

this->image=image;

}

Complex()

{

real=0;

image=0;

}

//定义转换构造函数

Complex(floatr)

{

real=

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

当前位置:首页 > 医药卫生 > 临床医学

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

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