写一个函数char * fun(int value, int radix).输入为一个整数和一个代表进制的整数,如71,7。 71表示要转化的数,7代表要转化成7进制数。输出一个字符串指针,字符串为整数value转化为radix进制后的数字序列。小于10进制数用0~9表示,10进制~35进制用a~z表示。例如71用35进制表示为21,71用36进制表示为1z。
char* fun(int value, int radix)
{
int i,j;
char map[36];
static char ss[100] = {0};
char c;
if(radix > 36 || radix <= 1)
{
return NULL;
}
for(i = 0; i < 36; i++)
{
if(i < 10)
{
map[i] = '0' + i;
}
else
{
map[i] = 'a' + i - 10;
}
}
i = 0;
while(value > 0)
{
ss[i++] = map[value % radix];
value /= radix;
}
for(j = 0; j < i / 2; j++)
{
c = ss[j];
ss[j] = ss[i - j -1];
ss[i - j - 1] = c;
}
return ss;
char* fun(int value, int radix)
{
int i,j;
char map[36];
static char ss[100] = {0};
char c;
if(radix > 36 || radix <= 1)
{
return NULL;
}
for(i = 0; i < 36; i++)
{
if(i < 10)
{
map[i] = '0' + i;
}
else
{
map[i] = 'a' + i - 10;
}
}
i = 0;
while(value > 0)
{
ss[i++] = map[value % radix];
value /= radix;
}
for(j = 0; j < i / 2; j++)
{
c = ss[j];
ss[j] = ss[i - j -1];
ss[i - j - 1] = c;
}
return ss;
}
以上程序在VC6上编译通过,关于用户传递的不合法的进制数例如1或大于36的数,返回NULL不是好的处理方法,应该还有更好的方法。