第9周编程作业

敲代码是真的累,这章要打好多字

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

#include <iostream>
using namespace std;
class Person{
	private:
		char name[50];
		int age;
		char sex;
	public:
		void Register(const char n[], int num, char c);//最好带上const
		void ShowMe();
};
int main()
{
	Person person1, person2;
	char s[50];
	int num;
	char c;
	cin>>s>>num>>c;
	person1.Register(s,num,c);
	person2.Register("Zhang3", 19, 'm');
	person1.ShowMe();
	person2.ShowMe();
	return 0;
}
void Person::Register(const char n[], int num, char c)
{
	strcpy(name,n);//就是字符串赋值的作用
	age = num;
	sex = c;
}
void Person::ShowMe()
{
	cout<<name<<" ";
	cout<<age<<" ";
	cout<<sex<<endl;
}

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

#include <iostream>
using namespace std;
class Dog{
	private:
		char name[20];
		int age;
		char sex;
		double weight;
	public:
		void setdata();
		void GetName();
		void GetAge();
		void GetSex();
		void GetWeight();//输出格式一定要严格按照样例
};
int main()
{
	Dog dog;
	dog.setdata();
	cout<<"It is my dog."<<endl;
	dog.GetName();
	dog.GetAge();
	dog.GetSex();
	dog.GetWeight();
	return 0;
}
void Dog::setdata()
{
	cin>>name>>age>>sex>>weight;
}
void Dog::GetName()
{
	cout<<"Its name is "<<name<<"."<<endl;
}
void Dog::GetAge()
{
	cout<<"It is "<<age<<" years old."<<endl;
}
void Dog::GetSex()//male和female
{
	if(sex=='m')
		cout<<"It is male."<<endl;
	else
		cout<<"It is female."<<endl;
}
void Dog::GetWeight()
{
	cout<<"It is "<<weight<<" kg."<<endl;
}

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

#include <iostream>
using namespace std;
class Trapezium{
	private:
		int x1, y1, x2, y2;
		int x3, y3, x4, y4;
	public:
		void initial(int a1,int b1,int a2,int b2,int a3,int b3,int a4,int b4);
		void GetPosition(int& a1,int& b1,int& a2,int& b2,int& a3,int& b3,int& a4,int& b4);
		void Area();
};
int main()
{
	int a, b, c, d, e, f, g, h;
	cin>>a>>b>>c>>d>>e>>f>>g>>h;
	Trapezium t;
	t.initial(a,b,c,d,e,f,g,h);
	t.Area();
	return 0;
}
void Trapezium::initial(int a1,int b1,int a2,int b2,int a3,int b3,int a4,int b4)
{
	x1 = a1;
	y1 = b1;
	x2 = a2;
	y2 = b2;
	x3 = a3;
	y3 = b3;
	x4 = a4;
	y4 = b4;
}
void Trapezium::GetPosition(int& a1,int& b1,int& a2,int& b2,int& a3,int& b3,int& a4,int& b4)
{
	cout<<a1<<" "<<b1<<" "<<a2<<" "<<b2<<" ";
	cout<<a3<<" "<<b3<<" "<<a4<<" "<<b4<<endl;
}
void Trapezium::Area()
{
	double s = 1.0*(x2-x1+x4-x3)*(y1-y3)/2;
	cout<<s<<endl;
}
//题目不难,求梯形面积
//按照题目的要求,就写了这么多,应该适当简化来着

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

#include <iostream>
#include <cstdio>
using namespace std;
class MyTime{
	private:
		int hour;
		int min;
		int sec;
	public:
		void SetTime();
		void print_12();
		void print_24();
};
int main()
{
	MyTime clock;
	clock.SetTime();
	clock.print_12();
	clock.print_24();
	return 0;
}
void MyTime::SetTime()
{
	cin>>hour>>min>>sec;
}
void MyTime::print_12()
{
	if(hour>=12)//printf可以换成cout,但printf确实方便
		printf("%02d:%02d:%02d PM\n", hour%12, min, sec);
	else
		printf("%02d:%02d:%02d AM\n", hour, min, sec);
}
void MyTime::print_24()
{
	printf("%02d:%02d:%02d\n", hour, min, sec);
}
//格式问题,时分秒都要不足两位用0补齐

5.设计Weekday类(20分)

题目内容:

设计一个Weekday类,成员函数SetDay()设置星期几,IncDay()前进一天,NowDay()打印当前是星期几。

输入格式:

用户输入一个数字,0表示星期日,1表示星期一,类推,6表示星期六,用该数字初始化Weekday类

输出格式:

使用中文打印出从当日起连续3天是星期几(不够三天时,循环)

输入样例:

0

输出样例:

星期日

星期一

星期二

时间限制:500ms内存限制:32000kb

#include <iostream>
using namespace std;
class Weekday
{
	private:
		int date;
	public:
		void SetDay();
		void IncDay();
		void NowDay();
};
int main()
{
	Weekday day;
	day.SetDay();
	for(int i=0; i<3; i++)
	{
		day.NowDay();
		day.IncDay();
	}
	return 0;
}
void Weekday::SetDay()
{
	cin>>date;
}
void Weekday::IncDay()
{
	date++;
	date %= 7;//注意日期增加的时候有循环
}
void Weekday::NowDay()
{
	switch(date)
	{
		case 0:
			cout<<"星期日"<<endl;
			break;
		case 1:
			cout<<"星期一"<<endl;
			break;
		case 2:
			cout<<"星期二"<<endl;
			break;
		case 3:
			cout<<"星期三"<<endl;
			break;
		case 4:
			cout<<"星期四"<<endl;
			break;
		case 5:
			cout<<"星期五"<<endl;
			break;
		case 6:
			cout<<"星期六"<<endl;
			break;
	}
}
//加到7返回,对7取余就行
发布了28 篇原创文章 · 获赞 38 · 访问量 7181

猜你喜欢

转载自blog.csdn.net/weixin_45543556/article/details/105410253