C++编程题,要所有代码加注释,急求!

编程实现一个计算人民币加减运算的程序,包含对人民币中的圆,角,分的计算。能正确的将分,角进位到元。要求必须使用面向对象编程的方法编程,使用类和运算符重载的知识。必须进行加减法和赋值两种运算。谢?~

#include<iostream>
using namespace std;
class Money
{
public:
Money(int pYuan=0, int pJiao=0, int pFen=0);
Money& operator + (Money& money);
Money& operator-(Money& money); //也可以用友元函数实现
void operator=(Money& money); //赋值运算符只能作为成员函数,而不能做友元函数
friend ostream& operator<<(ostream& output, Money& money);
private:
int yuan;
int jiao;
int fen;
};
Money::Money(int pYuan, int pJiao, int pFen)
{
yuan = pYuan;
jiao = pJiao;
fen = pFen;
}
Money& Money::operator +(Money& money)
{
int yuan;
int jiao;
int fen;
yuan = this->yuan + money.yuan;
jiao = this->jiao + money.jiao;
fen = this->fen + money.fen;
if(fen >= 10)
{
jiao += 1;
fen -= 10;
}
if(jiao >= 10)
{
yuan += 1;
jiao -= 10;
}
return Money(yuan, jiao, fen);
}

Money& Money::operator-(Money& money)
{
int yuan;
int jiao;
int fen;
fen = this->fen - money.fen;
if(fen < 0)
{
this->jiao -= 1;
fen += 10;
}
jiao = this->jiao - money.jiao;
if(jiao < 0)
{
this->yuan -= 1;
jiao += 10;
}
yuan = this->yuan - money.yuan;

return Money(yuan, jiao, fen);
}

void Money::operator=(Money& money)
{
yuan = money.yuan;
jiao = money.jiao;
fen = money.fen;
}
ostream& operator<<(ostream& output,Money& money)
{
output<<money.yuan<<"元"<<money.jiao<<"角"<<money.fen<<"分"<<endl;
return output;
}

void main()
{
Money money1(3,6,4);
Money money2(1,7,9);
Money money3;
Money money4;
Money money5;
money3=money1+money2;
money4=money1-money2;
money5=money4;
cout<<money3;
cout<<money4;
cout<<money5;
}
在VS2005中编译没问题,如果在VC6.0中有问题将头两行换为
#include<iostream.h>即可追问

不能执,改成行#include出现这个错误warning C4172: returning address of local variable or temporary,但能执行,不过运行结果是错的

追答

把引用去掉:
#include
class Money
{
public:
Money(int pYuan=0, int pJiao=0, int pFen=0);
Money operator + (Money& money);
Money operator-(Money& money); //也可以用友元函数实现
void operator=(Money& money); //赋值运算符只能作为成员函数,而不能做友元函数
friend ostream& operatoryuan + money.yuan;
jiao = this->jiao + money.jiao;
fen = this->fen + money.fen;
if(fen >= 10)
{
jiao += 1;
fen -= 10;
}
if(jiao >= 10)
{
yuan += 1;
jiao -= 10;
}
return Money(yuan, jiao, fen);
}

Money Money::operator-(Money& money)
{
int yuan;
int jiao;
int fen;
fen = this->fen - money.fen;
if(fen jiao -= 1;
fen += 10;
}
jiao = this->jiao - money.jiao;
if(jiao yuan -= 1;
jiao += 10;
}
yuan = this->yuan - money.yuan;

return Money(yuan, jiao, fen);
}

void Money::operator=(Money& money)
{
yuan = money.yuan;
jiao = money.jiao;
fen = money.fen;
}
ostream& operator<<(ostream& output,Money& money)
{
output<<money.yuan<<"元"<<money.jiao<<"角"<<money.fen<<"分"<<endl;
return output;
}

void main()
{
Money money1(3,6,4);
Money money2(1,7,9);
Money money3;
Money money4;
Money money5;
money3=money1+money2;
money4=money1-money2;
money5=money4;
cout<<money3;
cout<<money4;
cout<<money5;
}

温馨提示:内容为网友见解,仅供参考
无其他回答

急求一个 C++ 大程序的源代码(代码量尽量大些),要求有注释·有流程
头文件1:#include "IntContainer.h"template<class T> IntContainer<T>::IntContainer(int size){ increaseSize = size;quantity=increaseSize;count=0;storage = new T[quantity];cout<<"构造函数"<<storage<<endl;}template<class T> void IntContainer<T>::add(T element){ if (count>= q...

给我的C++程序加一个主函数,再帮我把我整个的程序注释一下。急!!!
String & operator= (const char *s) { \/\/操作符 = 的重载方法1 int len = strlen(s) ;\/\/delete h ; \/\/这句话不用要 h = new char[len] ;t = h + len ;memcpy(h , s , sizeof(char)*len) ;return (String)h; \/\/这里加上return } String & operator= (const S...

C++,哪位大侠帮忙把下面这个程序每行注释下,谢谢!
void convert(char *str)\/\/函数名,参数是字符串指针 { while (*str != '\\0') {\/\/当指针没有指向字符串结尾时继续循环,UTF8\/UTF32字符串结尾不是\\0,因此这个方法在字符串存在中文时可能出错。if (*str >= 'a' && *str <= 'z')\/\/如果指针当前指向的字符是小写字符 str += 'A' ...

...来判断该正整数是否为完美数,并要求附有源代码注释
int n = 0; \/\/ 记录输入的正整数int sum = 0; \/\/ 记录真因数的和scanf("%d", &n); \/\/ 输入nfor(int i = 2; i < n;i++) \/\/ 循环求出所有真因数{ if(n % i == 0) { \/\/ 余数为0说明i是真因数 sum = sum + i; \/\/ 求和 }}if(sum ==...

c++语言程序题 怎样输入和输出?完整程序加注释
include<stdio.h> int main() {int a,b; scanf("%d%d",&a,&b); printf("%.3f%%",100.0*b\/a); \/\/%.3f输出3位小数 %%输出一个% return 0; }

按程序注释中的提示补充代码使程序完整, 求救,刚学C++有点不太懂?
\/\/代码1:输入5门课程的名称和课时数 cout << "输入5门课程的名称和课时数" << endl;string buf; int num;for (int i = 0; i < 5; i++){ cin >> buf >> num;courses[i].setCName(buf);courses[i].setHours(num);} } \/\/代码2:定义一个成员函数获取courses[5]中的某个课程...

为代码添加多行注释的语法(代码如何多行注释)
一般在VS编写C++程序时可以使用“\/\/”或“\/**\/”来注释相应的,在matlab了里面可以使用“%”来注释使用方式相同。将光标放在需要注释的行中,按Ctrl+R,将该行变为注释。取消注释也是一样的,快捷键为Ctrl+T。首先在m文件中输入下面的代码:x=-pi:pi\/10:piy=sin(x)plot(x,y,--rs,...

还是不太明白呀,c++,求详细注释
} i--; 此时i =2 和x相等,所以不进入循环了,返回t,所以为3 最后一个1 = Fd(3,3),直接不进入循环,返回t的初始值1 其他类似推导以理解…… 其实子函数实现的就是求 y\/1 * (y-1)\/2 * (y-2)\/3 …* (x+1)\/(y-x+1)即y!\/((y-x)!*x!) = 杨辉三角定义的每个数 ...

c++新手问题编程输出100以内的素数,请注释...
include<iostream> using namespace std;int main(){ int j;for(int i=2;i<100;i++) \/\/第一循环是从2-100个数 { for(j=2;j<=i\/2;j++) \/\/第二个循环是判断i的值是不是素数.{ if(i%j==0) \/\/如果被整除 那么就不是素数.跳出 break;} if(j>i\/2) \/\/判断上面循环是...

c++求写详细注释
以下是代码的详细注释:include<iostream> using namespace std;int i=0; \/\/定义全局变量i,用于计数 void move(char start,char end) \/\/定义函数move,用于打印移动过程 { i=i+1; \/\/每调用一次move函数,i自增1 } void HanNuoTa(int n,char A,char B,char C) \/\/定义函数HanNuoT...

相似回答