您的位置:首页 > 其它

进制转换问题

2014-09-15 11:26 218 查看

腾讯笔试题---

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

36进制的规则为:“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",

举例说明:

1=‘0001’

10=‘000A’

20=‘000K’

35=‘000Z’

36=‘0010’

100=‘002S’

2000=‘0IJK’

C代码实现:
<pre name="code" class="cpp">#include<stdio.h>
#include<string.h>
void transfer(int N)
{
if(N<10)
{
printf("%04d",N);
}
/*   if(N>=10&&N<=35)
{
int i;
char name[36];
char ch='A';
for(i=10;i<36;i++)
{
name[i]=ch;
ch++;
}
printf("\"");
printf("%04c",name
);
printf("\"");
}*/
if(N>=10&&N<=35)
{
printf("\"");
printf("%04c",(char)(N+55));
printf("\"");
}
if(N>35)
{
int name1[10];
int i=0;
int j;
while(N>0)
{
name1[i++]=N%36;
N=N/36;
}
printf("\"");
if(i==1)
printf("000");
if(i==2)
printf("00");
if(i==3)
printf("0");
for(j=i-1;j>=0;j--)
{
if(name1[j]<10)
printf("%d",name1[j]);
if(name1[j]>=10&&name1[j]<36)
printf("%c",(char)(name1[j]+55));
}
printf("\"");
}
}
int main()
{
int N;
scanf("%d",&N);
printf("%d",N);
printf("=");
transfer(N);
return 0;
}



总结:在进制转化中,可以使用递归进行转化,同样也可以使用循环进行转换。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: