【腾讯2015校园招聘技术类】第24题

Markdown博文大赛开启中国云计算大会最新议题5月问答又送C币咯!做Hadoop工程师,冲击40万年薪游戏和图形开发研讨会

【腾讯2015校园招聘技术类】第24题

分类:算法设计ACM

题目:请设计一个函数可以把10进制的正整数转换为4位定长的36进制字符串

36进制的规则为:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

举例说明:

1="0001"

10="000A"

20="000k"

35="000Z"

36="0010"

100="002S"

2000="01JK"

代码如下

#include<iostream>using namespace std;char* tenTo36(int key){ char *num36=new char[5]; num36[0]=num36[1]=num36[2]=num36[3]=’0′; num36[4]=’\0′; int i=3; int tmp=key; while(i>=0&&tmp>0) { num36[i–]=(tmp%36>9)?(‘A’+tmp%36-10):(‘0’+tmp%36);tmp=tmp/36; } return num36;}int main(void){cout<<"输入十进制数"<<endl;int key;cin>>key;char * tmp=new char[5];tmp=tenTo36(key);printf("%s\n",tmp);return 0;}

上面这种方法是一个很通用的方法:

那么下面对上面算法改进,,使其适应任何进制

#include<iostream>using namespace std;char* tenTo36(int key){printf("您要变成几进制(2到36进制)?\n");int scale;scanf("%d",&scale);if(scale>=2&&scale<=10){char *num36=new char[9];for(int i=0;i<=7;i++)num36[i]=’0′;num36[8]=’\0′;int i=7;int tmp=key;while(i>=0&&tmp>0){num36[i–]=’0’+tmp%scale;tmp=tmp/scale;}return num36;}else{char *num36=new char[5];for(int i=0;i<=3;i++)num36[i]=’0′;num36[4]=’\0′;int i=3;int tmp=key;while(i>=0&&tmp>0){ {num36[i–]=(tmp%scale>9)?(‘A’+tmp%scale-10):(‘0’+tmp%scale);tmp=tmp/scale;}}return num36;}}int main(void){cout<<"输入十进制数"<<endl;int key;cin>>key;char * tmp;tmp=tenTo36(key);printf("%s\n",tmp);return 0;}

上一篇字符串指针与字符串数组区别

顶0踩0

主题推荐猜你在找

查看评论

* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

核心技术类目

不论你在什么时候开始,重要的是开始之后就不要停止

【腾讯2015校园招聘技术类】第24题

相关文章:

你感兴趣的文章:

标签云: