LHL'PTA 实验4. 类和对象(一)

实验4. 类和对象(一)

6-1 使用类计算矩形的面积 (10分)

定义并实现一个矩形类,有长和宽两个属性,由成员函数计算矩形的面积。

矩形类Rectang接口定义如下:
class Rectangle {
public:
void setLength(int l);//设置矩形的长度
void setWidth(int w); //设置矩形的宽度
int getArea(); //计算并返回矩形的面积
private:
int length, width; //矩形的长度和宽度
};

请实现Rectangle类的成员函数。

裁判测试程序样例:
#include
using namespace std;

class Rectangle {
public:
void setLength(int l);//设置矩形的长度
void setWidth(int w); //设置矩形的宽度
int getArea(); //计算并返回矩形的面积
private:
int length, width; //矩形的长度和宽度
};

int main()
{
Rectangle r;
int len, w;
cin >> len >> w;//LHL
r.setLength(len);
r.setWidth(w);
cout << r.getArea() << “\n”;

return 0;

}

/* 你的代码将嵌在这里 */

输入样例:

10 20

输出样例:

200


   void Rectangle::setLength(int l)//设置矩形的长度
{
    length=l;//LHL
}
   void Rectangle::setWidth(int w) //设置矩形的宽度
{
     width=w;
}
   int Rectangle::getArea()   //计算并返回矩形的面积
{
     return width*length;
}

6-2 Point类的声明和实现 (10分)

定义一个Point类,代表平面上的一个点,其横坐标和纵坐标分别用x和y表示,设计Point类的成员函数,实现并测试这个类。 主函数中输入两个点的坐标,计算并输出了两点间的距离。请根据主函数实现Point类。

裁判测试程序样例:
#include
#include
#include
using namespace std;

//你的代码将被嵌在这里

int main()
{
Point p1, p2;
double x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
p1.setX(x1);
p1.setY(y1);
p2.setX(x2);
p2.setY(y2);
double x = p1.getX() - p2.getX();
double y = p1.getY() - p2.getY();
double len = sqrt(x * x + y * y);
cout << fixed << setprecision(2) << len << endl;
return 0;
}

输入样例:

0 0 3 3

输出样例:

4.24

class Point{
    double x;
    double y;
  public:
     void setX(double a)
     {
       x=a;
     }
     void setY(double b)
     {
       y=b;
     }
     double getX()
     {
       return x;
     }
     double getY()
     {//LHL
       return y;
     }

};

6-3 类的声明与成员函数的实现–Car类 (10分)

本题要求根据给定的Car类的声明,实现其成员函数。

类和函数接口定义:
class Car //定义类Car
{
//成员函数
public:
void disp_welcomemsg(); //显示欢迎信息
int get_wheels(); //返回汽车的车轮数量
void set_wheels(int); //设置汽车的车轮数量
//数据成员
private:
int m_nWheels; //汽车的车轮数量
};

其中,成员函数void disp_welcomemsg()显示一条欢迎信息“Welcome to the car world!”。 成员函数int get_wheels()返回Car类的私有数据成员m_nWheels。 成员函数int set_wheels(int)用指定的形参初始化数据成员m_nWheels。

裁判测试程序样例:
#include
using namespace std;

class Car //定义类Car
{
//成员函数
public:
void disp_welcomemsg(); //显示欢迎信息
int get_wheels(); //返回汽车的车轮数量
void set_wheels(int); //设置汽车的车轮数量
//数据成员
private:
int m_nWheels; //显示汽车的车轮数量
};

/* 请在这里填写答案 */

int main()
{
int n;
cin >> n;
Car mycar; //定义类对象mycar
mycar.disp_welcomemsg(); //访问成员函数,显示欢迎信息
mycar.set_wheels(n); //访问成员函数,设置车轮数量
//访问成员函数,显示车轮数量
cout << "wheels = " << mycar.get_wheels() << endl;
return 0;
}

输入样例:

4

输出样例:

Welcome to the car world!
wheels = 4

void Car::disp_welcomemsg()
{
    cout<< "Welcome to the car world!" << endl;
}
 
int Car::get_wheels()
{
    return this->m_nWheels;
}
 
void Car::set_wheels(int n)//LHL
{
    this->m_nWheels = n;
}

```7-1 设计Person类 (20分)

设计一个Person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。

要求:(1)把name、age、sex声明为私有的数据成员,分别表示姓名、年龄、性别;

(2)定义公有的成员函数Register、ShowMe,Register函数的功能是对数据成员进行初始化,ShowMe函数的功能是输出这些数据成员。

(3)主函数中定义的对象person1通过键盘输入来得到信息,person2通过Register(“xiaoming”, 20, ‘f’) 来得到信息。

输入格式:

person1的name、age、sex值

输出格式:

person1和person2的所有属性,属性之间用空格隔开

输入样例:

zhangsan 18 m

输出样例:

zhangsan 18 m

xiaoming 20 f


#include <iostream>
#include<cstring>
using namespace std;
class Person
{
	char Name[20];
	int Age;//LHL
	char Sex;
public:
	void Register(char *name,int age,char sex);
	void ShowMe();
};
void Person::Register(char *name,int age,char sex)
{
	strcpy(Name,name);
	Age=age;
	Sex=sex;
};
void Person::ShowMe()
{
	cout<<Name<<" "<<Age<<" "<<Sex<<endl;
};
int main()
{
	char name[20];
	int age;
	char sex;
	Person person1,person2;
	cin>>name>>age>>sex;
	person1.Register(name,age,sex);
	char name2[20]="Zhang3";//LHL
	person2.Register("Zhang3",19,'m');
	person1.ShowMe();
	person2.ShowMe();
	return 0;

}

7-2 设计Dog类 (20分)

题目内容: 设计一个Dog类,包含name、age、sex和weight等属性以及对这些属性操作的方法,在主函数测试这个类。

1、根据类的封装性要求,把name、age、sex和weight声明为私有的数据成员;

2、编写公有成员函数setdata对数据进行初始化,GetName、GetAge、GetSex和GetWeight等函数获取相应属性。初始化数据由用户输入。

输入格式:

Dog类对象的初始化数据

输出格式:

根据Dog类对象的初始化数据输出Dog的属性,请严格按照格式输出,句末有点号。

输入样例1:

wangwang 2 m 3.1

输出样例1:

It is my dog.
Its name is wangwang.
It is 2 years old.
It is male.
It is 3.1 kg.

输入样例2:

dingdang 3 f 3.6

输出样例2:

It is my dog.
Its name is dingdang.
It is 3 years old.
It is female.
It is 3.6 kg.

#include <iostream>
using namespace std;

class Dog
{
private:
    string name;
    int age;//LHL
    char sex;
    double weight;
public:
    void setdata(string dogName,int dogAge,char dogSex,double dogWeight)
    {
        name = dogName;
        age = dogAge;
        sex = dogSex;
        weight = dogWeight;
    }
    string GetName()
    {
        return name;
    }
    int GetAge()
    {
        return age;
    }
    char GetSex()
    {
        return sex;
    }
   double GetWeight()
    {
        return weight;
    }
};

int main()
{
    Dog dog;
    string cinName;
    int cinAge;
    char cinSex;//LHL
    double cinWeight;
    cin>>cinName>>cinAge>>cinSex>>cinWeight;
    dog.setdata(cinName, cinAge, cinSex, cinWeight);
    cout<<"It is my dog."<<endl;
    cout<<"Its name is "<<dog.GetName()<<"."<<endl;
    cout<<"It is "<<dog.GetAge()<<" years old."<<endl;
    if(dog.GetSex()=='m'){
        cout<<"It is male."<<endl;
    }else{
        cout<<"It is female."<<endl;
    }
    cout<<"It is "<<dog.GetWeight()<<" kg."<<endl;
    return 0;
}

7-3 设计MyTime类 (30分)

题目内容: 设计一个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

#include<iostream>
using namespace std;

class MyTime
{
private:
    int hour;
    int minute;
    int second;
public:
    void SetTime(int,int,int);
    void print_12();
    void print_24();
};
void MyTime::SetTime(int _hour,int _minute,int _second)
{
    hour = _hour;
    minute = _minute;
    second = _second;//LHL
}
void MyTime::print_12()
{
    int tempHour;
    hour>=12?tempHour=hour-12:tempHour=hour;
    if(tempHour<10){
        cout<<'0';
    }
    cout<<tempHour<<':';
    if(minute<10){
        cout<<'0';
    }
    cout<<minute<<':';
    if(second<10){
        cout<<'0';
    }
    cout<<second;
    if(hour>12||((hour==12)&&((minute>0)||(second>0)))){
        cout<<" "<<"PM"<<endl;
    }else{
        cout<<" "<<"AM"<<endl;
    }

}
void MyTime::print_24()
{
    if(hour<10){
        cout<<'0';
    }
    cout<<hour<<':';
    if(minute<10){
        cout<<'0';
    }
    cout<<minute<<':';
    if(second<10){
        cout<<'0';
    }
    cout<<second<<endl;
}

int main()
{
    int h,m,s;//LHL
    cin>>h>>m>>s;
    MyTime mt;
    mt.SetTime(h, m, s);
    mt.print_12();
    mt.print_24();
    return 0;
}

发布了40 篇原创文章 · 获赞 19 · 访问量 2720

猜你喜欢

转载自blog.csdn.net/Simple_questions/article/details/105225036