C++ Practise4:大写金额转换

#include <iostream>
#include <math.h>
using namespace std;
void danwei(double i);// 输出元以上的单位
void danwei2(double i);// 输出角和分单位
void upcaseNumber(int i);// 输出大写金额
void main()
{
 int n =0;
 cout<<"请输入转换次数"<<endl;
 cin>>n;
 while(n>=1)
 {
  double x,i=10000000;
  int j=0;//记录错误次数
  cout<<"请输入转换金额"<<endl;
  cin>>x;

  if(x<=0){// 小于零
  cout<<"零元整"<<endl;
  }

  while(x>100000000){// 大于一亿,错误次数统计
   if(j>2){
    cout<<"错误输入已经3次,无权再输入"<<endl;
    return;//后面都不用执行了,所以不用break
   }
   cout<<"您输入的金额错误,金额不超过一亿,请重新输入"<<endl;
   cout<<"请输入金额,不超过一亿"<<endl;
   cin>>x;
   j++;
  }

  x=floor(x*100+0.5)/100;// 四舍五入

  int m=0;
  // 处理元以上
  while(i>=1)//不知道数字位数,不能用for,没有判定条件,所以用while
  {
   m = (int)floor(x/i);// 比如x=888,i=100 ,则m=8,
   if(m!=0)
   {
    upcaseNumber(m);
    danwei(i);
    x = x-m*i;
   }
   i=i/10;
  }
 
  // 处理角和分
  if(x!=0)// x存在角分的情况下
  {
   x=x*100;
   i=10;
   while(i>=1)
   {
    m = (unsigned int)floor((x+0.5)/i);// 比如x=888,i=100 ,则m=8,
    if(m!=0)
    {
     upcaseNumber(m);
     danwei2(i);
     x = x-m*i;  
    }
    i=i/10;
   }
  }
  cout<<"整";
  n--;
 }
}

void danwei(double i)
{
  if(i==10000000||i==1000)
  {
   cout<<"仟";
  }
  if(i==1000000||i==100)
  {
   cout<<"佰"; 
  }
  if(i==100000||i==10)
  {
   cout<<"十"; 
  }
  if(i==10000)
  {
   cout<<"万"; 
  }
  if(i==1)
  {
   cout<<"元";
  }

}

void danwei2(double i)
{
  if(i==10)
  {
   cout<<"角"; 
  }
  if(i==1)
  {
   cout<<"分";
  }

}

void upcaseNumber(int i)//输出大写数字
{
 switch(i)
 {
 case 0:
  cout<<"零";
  break;
 case 1:
  cout<<"壹";
  break;
 case 2:
  cout<<"贰";
  break;  
 case 3:
  cout<<"叁";
  break;  
 case 4:
  cout<<"肆";
  break;  
 case 5:
  cout<<"伍";
  break;  
 case 6:
  cout<<"陆";
  break;  
 case 7:
  cout<<"柒";
  break;  
 case 8:
  cout<<"捌";
  break;  
 case 9:
  cout<<"玖";
  break;
 }
}

你可能感兴趣的:(C++,include)