学习笔记《计算机程序设计C++》第9周编程作业

第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分

你可能感兴趣的:(C++学习笔记)