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