题目的主要信息:

  • 采用封装的思想设计一个立方体类(Cube),成员变量有:长(length)、宽(width)、高(height),都为 int 类型
  • 成员方法有:设置长宽高的方法、获取长宽高方法、获取表面积的方法(getArea)、获取体积的方法(getVolume)

具体做法:

构建一个类,最主要的就是构建成员变量和成员方法。

对于变量而言,一般我们封装的变量不会允许外界直接访问,只能由成员方法来访问,因此我们将其设置为private,增加三个int型变量:length、width、height。

对于方法而言,有的方法也不允许外界访问,只能由类的成员方法访问,这类方法也设置为private,其他方法我们设置为public,方便外界可以访问这些方法。本题中的方法,因为外界都要访问,因此设置为public。

我们仔细看主函数,因此成员变量都是private的,不允许外界访问,我们只能调用类似setLength的成员方法来访问变量,将外界的值复制给变量,因此我们添加了三个设置值的成员方法。同时,主函数要获取长宽高,因此我们还需要三个获取长宽高值的成员方法,直接返回即可。

然后还有计算表面积和体积的成员方法,表面积我们返回2(lengthwidth+lengthheight+widthheight)2*(length*width+length*height+width*height)2(lengthwidth+lengthheight+widthheight),体积我们返回lengthwidthheigthlength*width*heigthlengthwidthheigth

alt

#include <iostream>
using namespace std;

class Cube {
    // write your code here......
private:
    int length, width, height; //成员变量

public:
    void setLength(int l){  //设置长
        length = l;
    }
    
    void setWidth(int w){ //设置宽
        width = w;
    }
    
    void setHeight(int h){ //设置高
        height = h;
    }
    
    int getLength(){ //获取长
        return length;
    }
    
    int getWidth(){ //获取宽
        return width;
    }
    
    int getHeight(){  //获取高
        return height;
    }
    
    int getArea(){ //获取表面积
        return 2 * (length * width + length * height + width * height); //表面公式
    }
    
    int getVolume(){ //获取体积
        return length * width * height; //体积公式
    }
};

int main() {

    int length, width, height; //输入长宽高
    cin >> length;
    cin >> width;
    cin >> height;

    Cube c; //将长宽高输入到类中
    c.setLength(length);
    c.setWidth(width);
    c.setHeight(height);
    //获取长宽高及表面积体积
    cout << c.getLength() << " "
        << c.getWidth() << " "
        << c.getHeight() << " "
        << c.getArea() << " "
        << c.getVolume() << endl;
    return 0;
}

复杂度分析:

  • 时间复杂度:O(1)O(1)O(1),常数时间
  • 空间复杂度:O(1)O(1)O(1),常数空间