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;
 }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章