学习笔记《计算机程序设计C++》第10周基础练习

第10周基础练习
本周练习题目与上周一致,主要是需要添加构造函数和析构函数。同学们可以在上周的程序基础上修改。

依照学术诚信条款,我保证此作业是本人独立完成的。

温馨提示:

1.本次作业属于Online Judge题目,提交后由系统即时判分。

2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。

1带构造函数的点类(10分)
题目内容:

定义平面点类POINT,点的x,y坐标是其数据成员,double类型,私有;成员函数有默认构造函数,带两参数设置点的x,y坐标的构造函数,set()设置点的x,y坐标,distance()计算和另一个点的距离,show()显示坐标的位置信息。成员函数均为公有,默认构造函数将点的坐标设为(0,0)。

编写主函数,输入两个点的坐标并由此定义两个点对象,依次两个点的坐标信息,计算并显示两个点的距离。主函数和运行结果如下下:

主函数:

运行结果:

输入:两行,每行是一个点的x,y坐标,用空格隔开。

输出:三行,前两行分别是两个点的坐标,在括号中用逗号隔开,是英文符号。第3行是两个点的距离,非负实数。

样例1输入:

0 0

1 1

样例1输出:

(0,0)

(1,1)

1.41421

参考程序(构造函数部分):

时间限制:500ms内存限制:32000kb
C++
#include
#include
using namespace std;
class POINT{
double x,y;
public: POINT(){
x=0,y=0;
}
POINT(double x0,double y0){
x=x0,y=y0;
}
void set(double x0,double y0);
double distance(POINT a);
void show();
double getx(){
return x;
}
double gety(){
return y;
}
};
double POINT::distance(POINT a){
return sqrt((x-a.getx())(x-a.getx())+(y-a.gety())(y-a.gety()));
}
void POINT::show(){
cout<<"("<<x<<","<<y<<")"<<endl;
}
int main(){
double x,y;
cin>>x>>y;
POINT a(x,y);
cin>>x>>y;
POINT b(x,y);
a.show();
b.show();
cout<<a.distance(b)<<endl;
return 0;}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 17ms 356kb
2
用例2通过 3ms 352kb
2
用例3通过 2ms 360kb
2
用例4通过 3ms 360kb
2
用例5通过 3ms 360kb
1
用例6通过 2ms 256kb
1
提交答案本次得分/总分:10.00/10.00分
2带构造函数的圆类(10分)
题目内容:

定义圆类CIRCLE,圆心坐标和半径是其数据成员,double类型,私有;成员函数有默认构造函数设置参数值均为0,三参数构造函数设置圆心坐标和半径,set()设置圆心坐标和半径,area()计算圆的面积,perimeter()计算周长,show()显示圆心和半径信息。成员函数均为公有。圆周率取3.14.

编写主函数,使用CIRCLE类定义一个圆的对象a(默认构造),输入一个圆的圆心和半径并由此定义另一个圆对象b,分别显示两个圆的静态成员信息信息,计算并显示圆的周长和面积。主函数和运行结果如下:

输入:圆心坐标和半径,用空格隔开。

输出:两组,每组三行,一行是圆心、半径,在括号中,用逗号隔开;一行是周长;一行是面积。

【提示】

样例1输入:

1 2 1

样例1输出:

(0,0,0)

0

0

(1,2,1)

6.28

3.14

时间限制:500ms内存限制:32000kb
C++
#include
#include
using namespace std;
class CIRCLE{
double x,y,r;
public: CIRCLE(){
x=0,y=0,r=0;
}
CIRCLE(double x0,double y0,double r0){
x=x0,y=y0,r=r0;
}
void set(double x0,double y0,double r0);
double area();
double perimeter();
void show();
double getx(){
return x;
}
double gety(){
return y;
}
};
double CIRCLE::area(){
return 3.14rr;
}
double CIRCLE::perimeter(){
return 6.28*r;
}
void CIRCLE::show(){
cout<<"("<<x<<","<<y<<","<<r<<")"<<endl;
}
int main(){
CIRCLE a;
double x,y,r;
cin>>x>>y>>r;
CIRCLE b(x,y,r);
a.show();
cout<<a.perimeter()<<endl;
cout<<a.area()<<endl;
b.show();
cout<<b.perimeter()<<endl;
cout<<b.area()<<endl;
return 0;}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 256kb
3
用例2通过 2ms 380kb
3
用例3通过 2ms 380kb
2
用例4通过 3ms 368kb
2
提交答案本次得分/总分:10.00/10.00分
3带拷贝构造函数和析构函数的矩形类(10分)
题目内容:

定义屏幕矩形类RECT,边和坐标轴平行,两个对角顶点坐标是其数据成员,int类型,私有;成员函数有默认构造设置所有数据成员值为0,四参数构造函数设置两个顶点坐标,拷贝构造函数,set()设置两个顶点坐标,area()计算面积,perimeter()计算周长,showinfo()显示两个顶点信息,show()显示由“*”组成的矩形(宽是矩形的宽度,高是矩形的高度),析构函数。成员函数均为公有,析构函数中显示两个顶点信

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值