19_2.cpp

来自「本文档是(作者:钱能)《C++程序设计教程》课后习题答案。 选题编辑:张朝阳 」· C++ 代码 · 共 38 行

CPP
38
字号
//19_2.cpp

#include <iostream.h>
#include <iomanip.h>

class RMB{
public:
  RMB(double v =0.0):yuan(v){ jf =(v-yuan)*100+0.5; }
  operator double(){  return yuan+jf/100.0; }
  void display(ostream& out)
  {
    int n=1;   //为了用两字节的¥符号,得先求整数部分位数...
		for(int x=yuan; x/10; x/=10)	n++;
		
		if(n>5){ out <<"*******.**"; return; }
    double t=yuan+jf/100.0;
		out <<setw(7-n) <<"¥" <<setiosflags(ios::fixed)
		    <<setprecision(2) <<setw(n+3) <<t;
	}
protected:
  unsigned int yuan;
  unsigned int jf;
};

ostream& operator <<(ostream& oo, RMB& d)
{
  d.display(oo);
  return oo;
}

void main()
{
  RMB rmb(1.5);
  cout <<"Initially rmb = " <<rmb <<"\n";
  rmb =2.0*rmb;
  cout <<"then rmb = " <<rmb <<"\n";
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?