敲代码是真的累,这章要打好多字
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取余就行