#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
string itos(int i)
{
switch(i)
{
case 0: return "零";
case 1: return "一";
case 2: return "二";
case 3: return "三";
case 4: return "四";
case 5: return "五";
case 6: return "六";
case 7: return "七";
case 8: return "八";
case 9: return "九";
default:return "";
break;
}
}
string iton(int num)
{
if(num==0)
{
return "元整";
}
switch (num%8)
{
case 0: return "亿";
case 1: return "十";
case 2: return "百";
case 3: return "千";
case 4: return "万";
case 5: return "十";
case 6: return "百";
case 7: return "千";
default: return "";
break;
}
}
string itol(long long n)
{
if (n==0)
{
return "零元整";
}
int i[30];
int l=0;//人民币的位数
int k=0;//连续的0的数量
string result("");
while (n!=0)
{
i[l]=n%10;
n=n/10;
// cout<<i[l];//测试用
l++;
}
for (int j=l-1;j>=0;j--)
{
if (i[j]==0&&j!=0)
{
k++;
switch (j%8)
{
case 0:result+=iton(j);break; //亿
case 4:if (k<4)
{
result+=iton(j); //万位数之前有4个0去掉万
}
break;
default:
if(i[j-1]!=0)
{
result+=itos(i[j]);//后面一位仍等于0,去掉这一位的零
}
break;
}
}
else
{
k=0;
if (i[j]!=0)
{
result+=itos(i[j])+iton(j); //最后一位不等于0
}
else
{
result+=iton(j); //最后一位等于0,把零去掉
}
}
}
return result;
}
int _tmain(int argc, _TCHAR* argv[])
{
long long n;
do
{
cout<<"please input a number(1~1000000000000000000):(0 to break)";
cin>>n;
cout<<itol(n);
} while (n);
getch();
return 0;
}
版权声明:本文为chjf290原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。