用c++定义并实现一个矩形类,有长宽两个属性,由成员函数计算矩形面积
时间: 2023-06-06 08:07:17 浏览: 230
好的,这是一个编程问题,我可以回答。下面是一个用C语言定义并实现一个矩形类的代码:
```
#include <stdio.h>
typedef struct {
int length;
int width;
} Rectangle;
int area(Rectangle r) {
return r.length * r.width;
}
int main() {
Rectangle r;
r.length = 5;
r.width = 3;
printf("The area of the rectangle is %d.\n", area(r));
return 0;
}
```
在这个代码中,我们使用了一个结构体来定义矩形类,其中包含了长和宽两个属性。然后,我们定义了一个名为area的成员函数,用于计算矩形面积。最后,在主函数中,我们创建一个Rectangle类型的对象r,并调用area函数来计算矩形面积并输出结果。
希望这个回答能够帮到你!
相关问题
>类的创建和成员函数的调用; >验证类的成员函数操作数据成员 实验(1):定义一个学生类 CStudent ,具有五个数据成员:学号、姓名、语文、数学、英语三门课成绩。成员函数:初始化学生属性的函数 Init (),设置成绩的函数 SetScore (),输出成员值的函数 Print (),求每个学生的平均成绩 CalAvg ()和总分 CalSum ()。在主函数中定义两个学生对象,调用设置其属性和成绩,然后输出其分和平均成绩等详细信息。 实验(2):设计一个矩形类 CRectangle (由两个文件. h 和. cpp 组成),数据成员: m _ nLength (私有)、 m _ nWidth (私有)和 m _ strColor (公有)。成员函数: SetLengthWidth 、 GetLength 、 GetWidth 、 GetArea 、 ShowInfo 。并设计一个主函数来测试编写的类:创建对象→利用函数设置长宽,直接设置颜色→输出信息和面积→长宽扩大2倍→输出信息。
实验(1):
C++代码如下:
```cpp
#include <iostream>
#include <string>
using namespace std;
class CStudent {
public:
void Init(string id, string name) {
m_strID = id;
m_strName = name;
m_nChinese = 0;
m_nMath = 0;
m_nEnglish = 0;
}
void SetScore(int chinese, int math, int english) {
m_nChinese = chinese;
m_nMath = math;
m_nEnglish = english;
}
void Print() {
cout << "ID: " << m_strID << endl;
cout << "Name: " << m_strName << endl;
cout << "Chinese: " << m_nChinese << endl;
cout << "Math: " << m_nMath << endl;
cout << "English: " << m_nEnglish << endl;
cout << "Total score: " << CalSum() << endl;
cout << "Average score: " << CalAvg() << endl;
}
private:
string m_strID;
string m_strName;
int m_nChinese;
int m_nMath;
int m_nEnglish;
int CalSum() {
return m_nChinese + m_nMath + m_nEnglish;
}
double CalAvg() {
return (m_nChinese + m_nMath + m_nEnglish) / 3.0;
}
};
int main() {
CStudent stu1, stu2;
stu1.Init("001", "Alice");
stu2.Init("002", "Bob");
stu1.SetScore(90, 85, 95);
stu2.SetScore(80, 90, 85);
cout << "Student1's info:" << endl;
stu1.Print();
cout << "Student2's info:" << endl;
stu2.Print();
return 0;
}
```
输出结果如下:
```
Student1's info:
ID: 001
Name: Alice
Chinese: 90
Math: 85
English: 95
Total score: 270
Average score: 90
Student2's info:
ID: 002
Name: Bob
Chinese: 80
Math: 90
English: 85
Total score: 255
Average score: 85
```
实验(2):
CRectangle.h 文件代码如下:
```cpp
#pragma once
#include <string>
using namespace std;
class CRectangle {
public:
void SetLengthWidth(double len, double wid);
double GetLength() const;
double GetWidth() const;
double GetArea() const;
void ShowInfo() const;
void SetColor(string color);
private:
double m_nLength;
double m_nWidth;
string m_strColor;
};
```
CRectangle.cpp 文件代码如下:
```cpp
#include <iostream>
#include "CRectangle.h"
using namespace std;
void CRectangle::SetLengthWidth(double len, double wid) {
m_nLength = len;
m_nWidth = wid;
}
double CRectangle::GetLength() const {
return m_nLength;
}
double CRectangle::GetWidth() const {
return m_nWidth;
}
double CRectangle::GetArea() const {
return m_nLength * m_nWidth;
}
void CRectangle::ShowInfo() const {
cout << "Length: " << m_nLength << endl;
cout << "Width: " << m_nWidth << endl;
cout << "Color: " << m_strColor << endl;
cout << "Area: " << GetArea() << endl;
}
void CRectangle::SetColor(string color) {
m_strColor = color;
}
```
main.cpp 文件代码如下:
```cpp
#include <iostream>
#include "CRectangle.h"
using namespace std;
int main() {
CRectangle rect;
rect.SetLengthWidth(3, 4);
rect.SetColor("red");
cout << "Original info:" << endl;
rect.ShowInfo();
rect.SetLengthWidth(rect.GetLength() * 2, rect.GetWidth() * 2);
cout << "Doubled info:" << endl;
rect.ShowInfo();
return 0;
}
```
输出结果如下:
```
Original info:
Length: 3
Width: 4
Color: red
Area: 12
Doubled info:
Length: 6
Width: 8
Color: red
Area: 48
```
定义一个Point类,派生出Rectangle和Circle类,计算个派生类对象的面积Area()。 要求:①Point类,Rectangle和Circle类都有成员变量、成员函数; ②分别写出他们的构造函数和析构函数; ③在main函数中实现输出。 ④力争做到数据输入输出的直观性。
好的,我可以帮你解答这个问题。以下是代码实现:
```c++
#include <iostream>
using namespace std;
class Point{
protected:
int x, y;
public:
Point(int x = 0, int y = 0): x(x), y(y){}
~Point(){}
};
class Circle: public Point{
private:
int r;
public:
Circle(int x = 0, int y = 0, int r = 0): Point(x, y), r(r){}
~Circle(){}
double Area(){ return 3.14 * r * r; }
};
class Rectangle: public Point{
private:
int width, height;
public:
Rectangle(int x = 0, int y = 0, int width = 0, int height = 0): Point(x, y), width(width), height(height){}
~Rectangle(){}
double Area(){ return width * height; }
};
int main(){
int x, y, r, width, height;
cout << "请输入圆的坐标和半径:" << endl;
cin >> x >> y >> r;
Circle c(x, y, r);
cout << "圆的面积为:" << c.Area() << endl;
cout << "请输入矩形的坐标和长宽:" << endl;
cin >> x >> y >> width >> height;
Rectangle rct(x, y, width, height);
cout << "矩形的面积为:" << rct.Area() << endl;
return 0;
}
```
在这个程序中,我们定义了一个基类`Point`,它有两个属性:横坐标`x`和纵坐标`y`。然后我们又分别定义了两个派生类:`Circle`和`Rectangle`,它们都继承了基类`Point`。`Circle`类有一个半径属性`r`,而`Rectangle`类有两个属性:宽`width`和高`height`。
派生类中的`Area()`函数分别计算出圆和矩形的面积。在`main()`函数中,我们先要求用户输入圆的坐标和半径,然后创建一个`Circle`对象,并调用其`Area()`函数计算出其面积。接着,我们又要求用户输入矩形的坐标和长宽,创建一个`Rectangle`对象,并调用其`Area()`函数计算出其面积。最后将结果输出。
注意,我们在定义派生类的构造函数时,需要调用基类的构造函数来初始化基类的成员变量。同时,由于这些类没有需要释放的资源,所以它们的析构函数都是空的。
阅读全文