#include <iostream> using namespace std; class Rectangle { /********* Begin *********/ //在此处声明Rectangle类 public: int height; int width; void Set(int h, int w); int GetArea(int height, int width); /********* End *********/ }; /********* Begin *********/ //在此处定义Rectangle类 void Rectangle::Set(int h, int w) { height = h; width = w; } void Rectangle::GetArea(int height, int width) { int area; area = height * width; return area; } /********* End *********/ int main() { int h, w, area; cin >> h >> w ; Rectangle rec; //设置一个 h*w 的 Rectangle 对象 /**************begin***********/ rec.Rectangle(h, w); // 返回矩形面积,并赋值给area /**************begin***********/ rec.GetArea(h, w); /**************end***********/ cout << "长方形的面积为:" << area << endl; }
时间: 2023-07-18 07:45:35 浏览: 151
这段代码存在一些语法错误,我来帮你修正一下:
```
#include <iostream>
using namespace std;
class Rectangle {
public:
int height;
int width;
void Set(int h, int w);
int GetArea();
};
void Rectangle::Set(int h, int w) {
height = h;
width = w;
}
int Rectangle::GetArea() {
int area;
area = height * width;
return area;
}
int main() {
int h, w, area;
cin >> h >> w ;
Rectangle rec;
rec.Set(h, w);
// 返回矩形面积,并赋值给area
area = rec.GetArea();
cout << "长方形的面积为:" << area << endl;
}
```
修正后的代码中,Rectangle 类中的 GetArea 函数已经修改为不带参数,因为已经在 Set 函数中设置了对应的长和宽。在主函数中,使用对象 rec 调用 Set 函数和 GetArea 函数,并将返回值赋值给 area 变量,最后输出矩形面积。
相关问题
要求如下:编写一个能计算不同形状的面积数组的小程序,定义抽象类Shape,由它派生出5个派生类:Circle(圆),Square(正方形),Rectangle(矩形),Trapezoid(梯形),Triangle(三角形),用虚函数area()分别计算几种图形的面积,并求他们的和,要求使用基类指针数组,使它的每个元素都指向一个派生类对象。根据上述要求完善下列代码 #include <iostream> using namespace std; #include<string> #include"time.h" #include"math.h" #define PI 3.1415926; //请在begin和end之间填入代码 /begin***/ /end/ int main() { double r,h,e1,e2,e3,eup,ebo,w; cin>>r; Circle c(r); cin>>w; Square sq(w); cin>>e1>>e2>>e3; Triangle tr(e1,e2,e3); cin>>w>>h; Rectangle re(w,h); cin>>eup>>ebo>>h; Trapezoid trap(eup,ebo,h); double sum=0; /begin/ /*end/ cout<<"area sum="<<sum; }
/begin***/
class Shape{
public:
virtual double area() = 0; //纯虚函数,用来计算面积
};
class Circle : public Shape{
private:
double radius;
public:
Circle(double r){
radius = r;
}
double area(){ //计算圆的面积
return PI * pow(radius,2);
}
};
class Square : public Shape{
private:
double width;
public:
Square(double w){
width = w;
}
double area(){ //计算正方形的面积
return pow(width,2);
}
};
class Rectangle : public Shape{
private:
double width;
double height;
public:
Rectangle(double w, double h){
width = w;
height = h;
}
double area(){ //计算矩形的面积
return width * height;
}
};
class Trapezoid : public Shape{
private:
double upperEdge;
double bottomEdge;
double height;
public:
Trapezoid(double u, double b, double h){
upperEdge = u;
bottomEdge = b;
height = h;
}
double area(){ //计算梯形的面积
return (upperEdge + bottomEdge) * height / 2;
}
};
class Triangle : public Shape{
private:
double edge1;
double edge2;
double edge3;
public:
Triangle(double e1, double e2, double e3){
edge1 = e1;
edge2 = e2;
edge3 = e3;
}
double area(){ //计算三角形的面积
double p = (edge1 + edge2 + edge3) / 2;
return sqrt(p * (p - edge1) * (p - edge2) * (p - edge3));
}
};
/*end*/
int main() {
double r,h,e1,e2,e3,eup,ebo,w;
cin>>r;
Circle c(r);
cin>>w;
Square sq(w);
cin>>e1>>e2>>e3;
Triangle tr(e1,e2,e3);
cin>>w>>h;
Rectangle re(w,h);
cin>>eup>>ebo>>h;
Trapezoid trap(eup,ebo,h);
double sum=0;
Shape* pShapes[5]; //定义基类指针数组
pShapes[0] = &c; //将派生类对象的地址赋值给基类指针数组元素
pShapes[1] = &sq;
pShapes[2] = &tr;
pShapes[3] = &re;
pShapes[4] = &trap;
for(int i=0; i<5; i++){
sum += pShapes[i]->area(); //调用虚函数计算面积
}
cout<<"area sum="<<sum;
return 0;
}
#include <iostream> using namespace std; int main() { int n = 1; for (int i = 1; i <= 7; i++) { for (int j = 1; j <= n; j++) { cout << "*"; } cout << endl; if (i < 4) { n += 2; } else { n -= 2; } } return 0; }其他C++的编程方法
除了上面的代码,C++ 还有很多其他的编程方法。下面列举一些比较常用的:
1. 使用函数
在 C++ 中,可以通过定义函数来对一段重复使用的代码进行封装和抽象。函数可以接受输入参数,并返回一个值。例如,下面的代码定义了一个函数 `sum`,用于计算两个整数的和:
```cpp
int sum(int a, int b) {
return a + b;
}
```
可以在 `main` 函数中调用这个函数:
```cpp
int main() {
int a = 1;
int b = 2;
int c = sum(a, b);
cout << c << endl; // 输出 3
return 0;
}
```
2. 使用类和对象
C++ 是一种面向对象的编程语言,可以使用类和对象来封装代码和数据。类是一种数据类型,可以定义成员变量和成员函数。对象是类的一个实例,可以访问类的成员变量和成员函数。例如,下面的代码定义了一个类 `Rectangle`,用于表示矩形:
```cpp
class Rectangle {
public:
int width;
int height;
int area() {
return width * height;
}
};
```
可以在 `main` 函数中创建一个 `Rectangle` 对象,设置它的宽度和高度,并计算它的面积:
```cpp
int main() {
Rectangle r;
r.width = 3;
r.height = 4;
int a = r.area();
cout << a << endl; // 输出 12
return 0;
}
```
3. 使用指针
指针是一种特殊的变量,它存储了另一个变量的内存地址。可以通过指针来访问另一个变量的值和地址。例如,下面的代码定义了一个指针 `p`,指向一个整型变量 `n`:
```cpp
int n = 10;
int* p = &n;
```
可以通过 `p` 来访问 `n` 的值和地址:
```cpp
cout << *p << endl; // 输出 10
cout << p << endl; // 输出 n 的地址
```
4. 使用 STL
STL(Standard Template Library)是 C++ 的标准库之一,提供了许多常用的数据结构和算法。例如,可以使用 `vector` 来存储一组元素:
```cpp
#include <vector>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl; // 输出 1 2 3 4 5
return 0;
}
```
可以使用 `sort` 算法对这些元素进行排序:
```cpp
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v = {5, 4, 3, 2, 1};
sort(v.begin(), v.end());
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl; // 输出 1 2 3 4 5
return 0;
}
```
这些只是 C++ 中的一部分编程方法,还有很多其他的方法,需要根据具体的应用场景进行选择。
阅读全文