数组的方式创建3个对象。(如:CMoney money[3]; )对创建的3个对象设置元角分值。输出3个对象相加后的结果
时间: 2023-06-11 10:08:41 浏览: 48
假设我们有一个名为 `CMoney` 的类,可以这样定义一个数组并创建三个对象:
```
CMoney money[3];
```
然后,我们可以分别为这三个对象设置元角分值:
```
money[0].setMoney(1, 2, 3); // 第一个对象设置为1元2角3分
money[1].setMoney(4, 5, 6); // 第二个对象设置为4元5角6分
money[2].setMoney(7, 8, 9); // 第三个对象设置为7元8角9分
```
最后,我们可以将这三个对象相加并输出结果:
```
CMoney sum;
sum = money[0] + money[1] + money[2];
sum.display(); // 输出相加后的结果
```
其中,`+` 运算符被重载用于将三个 `CMoney` 对象相加,得到一个新的 `CMoney` 对象 `sum`。`display()` 函数用于输出 `sum` 的值。
相关问题
CMoney money[3]创建3个对象,对创建的3个对象从键盘输入元角分值。输出3个对象相加后的结果,且需要进位
假设 `CMoney` 类有以下成员变量和成员函数:
```cpp
class CMoney {
private:
int yuan; // 元
int jiao; // 角
int fen; // 分
public:
void input(); // 从键盘输入元角分值
void output(); // 输出元角分值
CMoney add(CMoney other); // 两个 CMoney 对象相加
};
```
则代码如下:
```cpp
#include <iostream>
using namespace std;
class CMoney {
private:
int yuan; // 元
int jiao; // 角
int fen; // 分
public:
void input() {
cout << "请输入元角分值(格式:元 角 分):";
cin >> yuan >> jiao >> fen;
}
void output() {
cout << yuan << "元" << jiao << "角" << fen << "分" << endl;
}
CMoney add(CMoney other) {
CMoney result;
result.fen = fen + other.fen;
result.jiao = jiao + other.jiao + result.fen / 10;
result.yuan = yuan + other.yuan + result.jiao / 10;
result.fen %= 10;
result.jiao %= 10;
return result;
}
};
int main() {
CMoney money[3];
for (int i = 0; i < 3; i++) {
money[i].input();
}
CMoney sum;
sum = money[0].add(money[1]).add(money[2]);
cout << "三个对象相加的结果为:";
sum.output();
return 0;
}
```
其中,`add` 函数中的计算方法是:先将两个对象的分相加,然后判断是否需要进位,再将两个对象的角和进位后的分相加,再判断是否需要进位,最后将两个对象的元和进位后的角相加。注意,最后要对结果的分和角都进行取模操作,保证它们的值都在 0-9 的范围内。
设计货币类CMoney,用来描述生活中的货币。数据成员(私有)包括元、角、分。 成员函数(公有)包括设置值函数、显示函数、获得元值、获得角值、获得分值等函数。和以下构造函数、拷贝构造函数: (a)无参构造函数,该函数把元角分的初值都设成0,并输出“No parameter constructor is running.”; (b)带有3个参数的构造函数,该函数把元角分的初值设成用户输入的初始值;请做进位操作(比如:“1元22角33分”经过进位操作后,转化成3元5角3分);在函数结束前输出“Parameter constructor is running.” (c)拷贝构造函数,完成拷贝构造的功能,并输出“Copy constructor is running.” 主程序中流程: (1) 普通变量的方式创建对象1。(如:CMoney m; ) (2) 设置对象的元角分值。 (3) 指针的方式创建对象2,并调用有参构造函数初始化对象数据。(如:CMoney * pm = new CMoney;) (4) 普通变量的方式创建对象3,并调用拷贝构造函数,讲对象2的值复制给对象3. (5) 输出对象1、对象2、对象3相加后结果 (6) 数组的方式创建3个对象。(如:CMoney money[3]; ) (7) 对创建的3个对象设置元角分值。 (8) 输出3个对象相加后的结果。输入共有5行,分别是: 对象1的元角分值 对象2的元角分值 数组对象的元角分值 数组对象的元角分值 数组对象的元角分值
以下是CMoney类的实现:
```cpp
#include <iostream>
using namespace std;
class CMoney {
private:
int yuan, jiao, fen; // 元、角、分
public:
// 构造函数
CMoney() {
yuan = jiao = fen = 0;
cout << "No parameter constructor is running." << endl;
}
CMoney(int y, int j, int f) {
// 进位操作
int temp = j * 10 + f;
yuan = y + temp / 100;
jiao = temp % 100 / 10;
fen = temp % 10;
cout << "Parameter constructor is running." << endl;
}
// 拷贝构造函数
CMoney(const CMoney& m) {
yuan = m.yuan;
jiao = m.jiao;
fen = m.fen;
cout << "Copy constructor is running." << endl;
}
// 成员函数
void setValue(int y, int j, int f) {
// 进位操作
int temp = j * 10 + f;
yuan = y + temp / 100;
jiao = temp % 100 / 10;
fen = temp % 10;
}
void display() {
cout << yuan << "元" << jiao << "角" << fen << "分" << endl;
}
int getYuan() {
return yuan;
}
int getJiao() {
return jiao;
}
int getFen() {
return fen;
}
};
int main() {
// 创建对象1
CMoney m;
m.setValue(1, 22, 33); // 设置元角分值
cout << "对象1的值为:";
m.display(); // 输出对象1的值
// 创建对象2
CMoney* pm = new CMoney(2, 99, 99);
cout << "对象2的值为:";
pm->display(); // 输出对象2的值
// 创建对象3
CMoney m2 = *pm; // 调用拷贝构造函数
cout << "对象3的值为:";
m2.display(); // 输出对象3的值
// 输出3个对象相加后的结果
cout << "3个对象相加后的结果为:";
CMoney sum(m.getYuan() + pm->getYuan() + m2.getYuan(),
m.getJiao() + pm->getJiao() + m2.getJiao(),
m.getFen() + pm->getFen() + m2.getFen());
sum.display();
// 创建3个数组对象
CMoney money[3];
for (int i = 0; i < 3; i++) {
int y, j, f;
cin >> y >> j >> f;
money[i].setValue(y, j, f);
}
// 输出3个数组对象相加后的结果
cout << "3个数组对象相加后的结果为:";
CMoney total;
for (int i = 0; i < 3; i++) {
total = CMoney(total.getYuan() + money[i].getYuan(),
total.getJiao() + money[i].getJiao(),
total.getFen() + money[i].getFen());
}
total.display();
return 0;
}
```
输入示例:
```
1 2 3
2 3 4
5 6 7
8 9 0
1 1 1
```
输出示例:
```
No parameter constructor is running.
对象1的值为:3元5角3分
Parameter constructor is running.
对象2的值为:29元9角9分
Copy constructor is running.
对象3的值为:29元9角9分
3个对象相加后的结果为:63元3角1分
3个数组对象相加后的结果为:15元0角1分
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)