需要求3个长方体的体积,请编写一个基于对象的程序。数据成员包含length、width、height。要求用成员函数实现以下功能:
(1)由键盘分别输入长方体的长、宽、高(要求校验输入数据的合法性,如果任一数据小于0,则长宽高直接置为0,并显示"ERROR!",否则显示"OK!");
(2)计算长方体的体积;
(3)输出长方体的体积(先输出长宽高信息,再输出体积)。
函数接口定义:
类和函数接口:
class Cube{
public:
void set_value(int len,int wd,int ht);
int cal_volume();
void show();
private:
int length,width,height;
};
注意,不要在set_value函数中使用cin输入数据赋值,输入数据的功能在main函数中提供。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子:
int main() {
int x,y,z; Cube c;
cin>>x>>y>>z;
c.set_value(x,y,z);
c.show();
return 0;
} /* 请在这里填写答案 */
输入样例1:
在这里给出一组输入:
1 2 3
输出样例1:
在这里给出相应的输出:
OK!
length=1 width=2 height=3 volume=6
输入样例2:
在这里给出一组输入:
1 2 -3
输出样例1:
在这里给出相应的输出:
ERROR!
length=0 width=0 height=0 volume=0
我的代码:
void Cube::set_value(int length,int width,int height)
{
if((length<0)||(width<0)||(height<0))
{
length=0;
width=0;
height=0;
cout<<"ERROR!"<<endl;
}
else
cout<<"OK!"<<endl;
}
int Cube::cal_volume()
{
return (length*width*height);
}
void Cube::show()
{
cout<<"length="<<length<<' '<<"width="<<width<<' '<<"height="<<height<<' '<<"volume="<<cal_volume()<<endl;
}
我的输出:
OK!
length=21914 width=-1022258528 height=32766 volume=1302157184
我的疑惑:
为什么我的length,width,height没有被我在main函数中输入的x,y,z数值覆盖掉,而是随机生成的。但是如果在set_value函数中使用cin输入数据赋值它的结果就是正确的。(O……O)不明白(O^O)。让我去问一下老师.......
——2022.3.22留
我学成归来了!!
正确代码
void Cube::set_value(int x,int y,int z)
{
length=x;
width=y;
height=z;
if((length<0)||(width<0)||(height<0))
{
length=0;
width=0;
height=0;
cout<<"ERROR!"<<endl;
}
else
cout<<"OK!"<<endl;
}
int Cube::cal_volume()
{
return (length*width*height);
}
void Cube::show()
{
cout<<"length="<<length<<' '<<"width="<<width<<' '<<"height="<<height<<' '<<"volume="<<cal_volume()<<endl;
}
(注:红色为更改后的代码。)
我的反思:
类外函数不可以直接调用class中的private中的数据,只有通过public中的成员函数才可以使用。所以更改后的代码将main函数中的x,y,z和private中的length,width,height联系了起来,使x,y,z的赋值可以传到class中。
——2022.3.24留