实现如下函数:
void printInChinese(int num);
这个函数输入一个小于100000000(一亿)的正整数,并在屏幕上打印这个数字的中文写法。
例如:
17 -> 一十七
120 -> 一百二十
201 -> 二百零一
1074 -> 一千零七十四
65536 -> 六万五千五百三十六
1010101 -> 一百零一万零一百零一
提示:请注意‘零’的处理。
扩展:如果需要处理通用简化习惯,你将怎么处理,例如:
17 -> 十七
void printInChinese(int num);
这个函数输入一个小于100000000(一亿)的正整数,并在屏幕上打印这个数字的中文写法。
例如:
17 -> 一十七
120 -> 一百二十
201 -> 二百零一
1074 -> 一千零七十四
65536 -> 六万五千五百三十六
1010101 -> 一百零一万零一百零一
提示:请注意‘零’的处理。
扩展:如果需要处理通用简化习惯,你将怎么处理,例如:
17 -> 十七
120 -> 一百二
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s[9]={"亿","千","百","十","万","千","百","十",""};
string ch[10]={"零","一","二","三","四","五","六","七","八","九"};
int i,n;
string temp;
for(i=0;i<5;i++)
{
temp=s[i];
s[i]=s[8-i];
s[8-i]=temp;
}
while(1)
{
cout<<"输入数字:";
cin>>n;
if(n==-1)
return 1;
int a[10];
for(i=0;i<10;i++)
a[i]=0;
i=0;
while(n!=0)
{
a[i]=n%10;
n=n/10;
i++;
}
if(i==1)
{
cout<<ch[a[0]];
break;
}
int j=i-1;
while(j>=0)
{
if(a[j]==1&&s[j]=="十")
{
cout<<"十";
j--;
}
else
{
if(a[j]!=0)
{
cout<<ch[a[j]]<<s[j];
j--;
}
else
{
while(j>=0&&a[j]==0)
{
if(j==4&&(a[5]+a[6]+a[7]!=0))
cout<<s[4];
j--;
}
if(j>=0)
cout<<"零";
}
}
}
cout<<endl;
}
return 1;
}