第9周编程作业
本作业是在线评测形式。提交源程序,系统自动评测,可多次提交。输出格式严格按题目要求,参考给出的样例。大小写、中英文、空格数量都必须严格。
依照学术诚信条款,我保证此作业是本人独立完成的。
温馨提示:
1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
1设计Person类(20分)
题目内容:
设计一个Person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。
根据类的封装性要求,把name、age、sex声明为私有的数据成员,声明公有的成员函数Register()、ShowMe()来访问这些属性,在Register()函数中对数据成员进行初始化。person1通过cin来得到信息,person2通过Register(“Zhang3”,
19, ‘m’) 来得到信息。
输入格式:
person1的信息
输出格式:
person1和person2的信息
输入样例:
Li4 18 f
输出样例:
Li4 18 f
Zhang3 19 m
时间限制:500ms内存限制:32000kb
C++
#include
using namespace std;
class Person{
char name[20],sex;
int age;
public:
void Set(){
cin>>name>>age>>sex;
}
void Register(char *a,int ag,char c){
char *a1=a,*na=name;
while(*a1){
*na=*a1;
na++;a1++;
}
*na='\0';
age=ag;
sex=c;
}
void ShowMe(){
cout<<name<<" "<<age<<" "<<sex<<endl;
}
};
int main()
{
Person person1,person2;
person1.Set();
// char x[]={"Zang3"};
person2.Register("Zhang3",19,'m');
person1.ShowMe();
person2.ShowMe();
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 236kb
7
用例2通过 2ms 236kb
7
用例3通过 2ms 256kb
6
提交答案本次得分/总分:20.00/20.00分
2设计Dog类(20分)
题目内容:
设计一个Dog类,包含name、age、sex和weight等属性以及对这些属性操作的方法。实现并测试这个类。
根据类的封装性要求,把name、age、sex和weight声明为私有的数据成员,编写公有成员函数setdata()对数据进行初始化,GetName()、GetAge()、GetSex()和GetWeight()获取相应属性。初始化数据由用户输入。
输入格式:
Dog类对象的初始化数据
输出格式:
根据Dog类对象的初始化数据输出一句话,请严格按照格式输出,句末有点号。
输入样例:
ahuang 3 m 2.4
输出样例:
It is my dog.
Its name is ahuang.
It is 3 years old.
It is male.
It is 2.4 kg.
时间限制:500ms内存限制:32000kb
C++
#include
using namespace std;
class Person{
char name[20],sex;
int age;double wt;
public:
void Set(){
cin>>name>>age>>sex>>wt;
}
void Register(char *a,int ag,char c){
char *a1=a,*na=name;
while(*a1){
*na=*a1;
na++;a1++;
}
*na='\0';
age=ag;
sex=c;
}
void ShowMe(){
cout<<"It is my dog."<<endl;
cout<<"Its name is "<<name<<"."<<endl;
cout<<"It is "<<age<<" years old."<<endl;
cout<<"It is "<<sex<<"ale."<<endl;
cout<<"It is "<<wt<<" kg."<<endl;
}
};
int main()
{
Person person1,person2;
person1.Set();
// char x[]={"Zang3"};
// person2.Register("Zang3",19,'m');
person1.ShowMe();
// person2.ShowMe();
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 3ms 364kb
20
提交答案本次得分/总分:20.00/20.00分
3设计并测试Trapezium类(20分)
题目内容:
设计并测试一个名为Trapezium的梯形类,其属性为梯形的四个顶点的坐标。该梯形上边和下边均和x轴平行。
根据类的封装性要求,在类的声明中用8个私有的整型变量表示4个点的坐标值,声明成员函数initial(int,int,int,int,int,int,int,int)初始化数据成员,函数GetPosition(int&,int&,int&,int&,int&,int&,int&,int&)读取坐标值,函数Area()计算面积。
输入格式:
梯形四个顶点的坐标,
输出格式:
梯形的面积,依次为左上(x1,y1)、右上(x2,y2)、左下(x3,y3)和右下(x4,y4)角的顶点。
输入样例:
3 2 5 2 1 -4 7 -4
输出样例:
24
时间限制:500ms内存限制:32000kb
C++
#include
#include
using namespace std;
class Person{
double a[19] ;
public:
void Set(){
for(int i=1;i<=8;++i)cin>>a[i];
}
void ShowMe(){
cout<<(fabs(a[1]-a[3])+fabs(a[5]-a[7]))*fabs((a[2]-a[6])/2);
}
};
int main()
{
Person person1,person2;
person1.Set();
person1.ShowMe();
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 3ms 256kb
7
用例2通过 3ms 232kb
7
用例3通过 2ms 364kb
6
提交答案本次得分/总分:20.00/20.00分
4设计MyTime类(20分)
题目内容:
设计一个MyTime类,成员函数SetTime()设置时间,print_12()以12(0-11)小时制显示时间(AM上午,PM下午),print_24()以24(0-23)小时制显示时间。
输入格式:
所需设置时间的时、分、秒
输出格式:
按照12小时制和24小时制依次显示时间,注意时间格式中的冒号是英文冒号,时分秒都是两位,AM,PM前有一个空格,晚上12:00是00:00:00 AM,中午十二点是00:00:00 PM。
输入样例:
13 23 34
输出样例:
01:23:34 PM
13:23:34
时间限制:500ms内存限制:32000kb
C++
#include
using namespace std;
class MyTime
{
int h,f,m;
public:
void SetTime(){
cin>>h>>f>>m;
}
void Show(){
if(h%12<10)cout<<0;
cout<<h%12<<":";
if(f<10)cout<<0;
cout<<f<<":";
if(m<10)cout<<0;
cout<<m;
if(h<12)cout<<" AM\n";
else cout<<" PM\n";
if(h<10)cout<<0;
cout<<h<<":";
if(f<10)cout<<0;
cout<<f<<":";
if(m<10)cout<<0;
cout<<m<<endl;
}
};
int main()
{
MyTime mt;
mt.SetTime();
mt.Show();
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 3ms 236kb
7
用例2通过 2ms 236kb
6
用例3通过 2ms 236kb
6
用例4通过 2ms 368kb
1
提交答案本次得分/总分:20.00/20.00分
5设计Weekday类(20分)
题目内容:
设计一个Weekday类,成员函数SetDay()设置星期几,IncDay()前进一天,NowDay()打印当前是星期几。
输入格式:
用户输入一个数字,0表示星期日,1表示星期一,类推,6表示星期六,用该数字初始化Weekday类
输出格式:
使用中文打印出从当日起连续3天是星期几(不够三天时,循环)
输入样例:
0
输出样例:
星期日
星期一
星期二
时间限制:500ms内存限制:32000kb
C++
#include
using namespace std;
class MyTime
{ int e;
char wk[7][4]={"日","一","二","三","四","五","六"};
public:
void SetTime(){
cin>>e;
}
void Show(){
cout<<"星期"<<wk[e%7] <<endl;
cout<<"星期"<<wk[(e+1)%7] <<endl;
cout<<"星期"<<wk[(e+2)%7] <<endl;
}
};
int main()
{
MyTime mt;
mt.SetTime();
mt.Show();
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 244kb
7
用例2通过 7ms 256kb
7
用例3通过 2ms 372kb
6
提交答案本次得分/总分:20.00/20.00分