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