免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: zhaocong94005
打印 上一主题 下一主题

[C++] 瑞星面试题:输入十进制数字,用字符串八进制输出 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
41 [报告]
发表于 2008-08-11 17:48 |只看该作者
再来一个不用尾递归的版本:

  1. flw@debian:~/study$ cat dec2oct.hs
  2. #!/usr/bin/runhaskell

  3. import System.Environment

  4. main :: IO ()
  5. main = do
  6.     [decStr] <- getArgs
  7.     print $ decToOct $ read decStr

  8. decToOct    :: Integer -> String
  9. decToOct 0   = "0"
  10. decToOct dec = decToOct (dec `div` 8) ++ show (dec `mod` 8)
  11. flw@debian:~/study$ seq 1 10 100 | xargs -i ./dec2oct.hs '{}'
  12. "01"
  13. "013"
  14. "025"
  15. "037"
  16. "051"
  17. "063"
  18. "075"
  19. "0107"
  20. "0121"
  21. "0133"
  22. flw@debian:~/study$
复制代码

论坛徽章:
0
42 [报告]
发表于 2008-08-12 07:36 |只看该作者
7楼方法很好,不过真的用了很多库函数

论坛徽章:
0
43 [报告]
发表于 2008-08-12 09:51 |只看该作者
用static是为了demo简单,呵呵


const char* num_to_str(unsigned int num, size_t radix)
{

                static char buf[1024];
                char *pstr = buf + sizeof(buf) - 1;
                *pstr = 0;
                do{ *--pstr = "0123456789ABCDEF"[num%radix]; }while((num /= radix));

                return pstr;
}



const char* num_to_str(signed int num, size_t radix)
{
                static char buf[1024];
                bool neg = num < 0 ? num = -num : num;
               
                char *pstr = buf + sizeof(buf) - 1;
                *pstr = 0;
                do{ *--pstr = "0123456789ABCDEF"[num%radix]; }while((num /= radix));
                if(neg)*--pstr = '-';
                return pstr;
}

[ 本帖最后由 Solidus 于 2008-8-12 10:00 编辑 ]

论坛徽章:
0
44 [报告]
发表于 2008-08-12 10:05 |只看该作者
我很怀疑这玩意是不是瑞星的考题,LZ是不是拿来的作业题啊

论坛徽章:
0
45 [报告]
发表于 2008-08-12 10:19 |只看该作者
同意 jigloo  的方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP