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