定义一个小猫类,包含私有数据成员:小猫的重量,小猫的总数和猫的总重量,公有成员函数:设置小猫的重量,设置小猫的总数和总重量,获取小猫的总数,输出小猫信息等。
编写main函数完成类的测试。
语法要求:
应用静态成员知识完成。
输入格式:
第1行输入现有小猫的数量和总重
第2行输入新增小猫数量n[0,100]
随后n行输入n只小猫的重量
输出格式:
有新增小猫时按如下格式输出:
新增小猫的信息如下:
重量:?千克
重量:?千克
重量:?千克
现有小猫的信息如下:
?只小猫的总重量是:?千克
无新增小猫时按如下格式输出:
无新增小猫.
重量:?千克
重量:?千克
重量:?千克
现有小猫的信息如下:
?只小猫的总重量是:?千克
输入样例1:
在这里给出一组输入。例如:
6 7.8
3
1.1
1.5
1.3
输出样例1:
在这里给出相应的输出。例如:
新增小猫的信息如下:
重量:1.1千克
重量:1.5千克
重量:1.3千克
现有小猫的信息如下:
9只小猫的总重量是:11.7千克
输入样例2:
在这里给出一组输入。例如:
6 10.2
0
输出样例2:
在这里给出相应的输出。例如:
无新增小猫.
现有小猫的信息如下:
6只小猫的总重量是:10.2千克
--------------------------------------------------------------------------------------------------------------------------------
答案
#include <iostream>
#include <vector>
#include <memory>
using namespace std;
class Cat
{
private:
static double kg;
static int n;
double m;
public:
Cat(double _m):m(_m){}
static void setnm(int num,double _m)
{
n = num;
kg = _m;
}
static void show()
{
cout << "现有小猫的信息如下:" << endl;
cout << n << "只小猫的总重量是:" << kg << "千克" << endl;
}
void setNM()
{
kg = kg + m;
n++;
}
double getm()
{
return m;
}
};
int Cat::n = 0;
double Cat::kg = 0;
int main()
{
int num;
double _kg;
int c;
double _m;
cin >> num >> _kg>>c;
Cat::setnm(num, _kg);
vector<unique_ptr<Cat>> C;
if (c == 0)
{
cout << "无新增小猫." << endl << endl;
Cat::show();
}
else if (c > 0)
{
for (int i = 0; i < c; i++)
{
cin >> _m;
C.push_back(make_unique<Cat>(_m));
C[i]->setNM();
}
cout << "新增小猫的信息如下:" << endl;
for (size_t i = 0; i < C.size(); ++i)
{
cout << "重量:" << C[i]->getm() << "千克" << endl;
}
cout << endl;
Cat::show();
}
}