码迷,mamicode.com
首页 > 其他好文 > 详细

用递归的方式将数字的各个位数转换为字符串

时间:2014-12-04 19:31:44      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   sp   div   问题   log   代码   

遇到一个问题,需求是将形如434的数字转换成 si san si这种形式。

一开始想的是用循环取余的方式,

 1 void ReadOut (int Sum) {
 2     
 3     static char str[10][5] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
 4     
 5     while (Sum > 0) {
 6         std::cout  << str[Sum%10] <<   ;
 7         Sum /= 10;
 8     }
 9     
10     return ;
11 }

后来发现,这种方式是从低位开始往高位输出,正好输出反了,一开始想Fix这个问题,想着找个方法把字符串反向排序一下,但是觉得这样做不优雅。

不过最后发现我可以把ReadOut这个函数递归调用,也就是说ReadOut (1234),相当于ReadOut(ReadOut(123)4),代码如下:

 1 void ReadOut (int Sum) {
 2     
 3     static char str[10][5] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
 4     
 5     
 6     if (Sum > 10) {
 7         ReadOut(Sum/10);
 8         std::cout <<   << str[Sum%10];
 9     } else {
10         std::cout << str[Sum%10];
11     }
12     
13     return ;
14 }

至此,这个问题就解决啦。

用递归的方式将数字的各个位数转换为字符串

标签:style   blog   ar   color   sp   div   问题   log   代码   

原文地址:http://www.cnblogs.com/smallcorpse/p/4143520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!