#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*练习3-5*/
/*将整数转化为b为底数的字符串形式*/
/*借用了reverse函数,以及*/
/*仍然使用abs(n%b) 以及 n/=b, 添加了n-10+'A'的分支*/
void reverse(char s[]);
void itob(int n, char s[], int b);
int main()
{
char b[20] = {0};
int a = 31;
itob(a, b, 16);
printf("%s\n", b);
return 0;
}
void reverse(char s[])
{
int i, j, c;
for(i = 0, j = strlen(s)-1; i < j; i++, j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
void itob(int n, char s[], int b)
{
int i = 0, sign = n;
do{
if(abs(n%b)<10)
s[i++] = abs(n%b) + '0';
else
s[i++] = abs(n%b) - 10 + 'A';
}while(n/=b);
if(sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}