进制转换问题
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;
}
总结:在进制转化中,可以使用递归进行转化,同样也可以使用循环进行转换。
相关文章推荐
- 进制转换问题(段地址×16+偏移地址)
- 关于JS中各进制转换问题
- JS中字符问题(二进制/十进制/十六进制之间的转换),颜色进制转换
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 【Loadrunner】解决进制转换问题
- 栈,进制转换(用数组输出) 有个问题不明白,请高人指点
- 进制转换(字符串问题)
- 进制转换问题
- 进制转换问题求解
- C语言整数类型及printf格式化输出问题总结复习及进制转换的简单实现
- 进制转换问题
- HDU:2031 进制转换问题
- 进制转换问题
- js的大数运算 跟经典的收藏 结合前一篇的收藏 解决工作中的一个大数进制转换问题
- 黑马程序员5--进制转换问题
- 学校1022: 进制转换问题
- ——黑马程序员——C语言基础--进制转换问题
- 进制转换问题