关于数制转换问题:编写一个函数itob(n,s,b) 使输入的整数n转化成为以b为基的字符串并存到字符串s中。特别地,itob(n,s,16)用于把n格式化成十六进制整数字符串并存在s中。
我是这么写的:
#include<stdio.h>
#include<string.h>
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;
}
}
int itob(int n,char s[],int b)
{int t,i=-1,a;
t=n;
if (b>0&&b<=10)
do
{i++;
a=t%b;
s[i]=a+'0';
}
while ((t/=b)>0);
else if (b>10&&b<=16)
do
{i++;
switch(a=t%b)
{case 10:s[i]='A';break; case 11:s[i]='B';break; case 12:s[i]='C';break;
case 13:s[i]='D';break; case 14:s[i]='E';break; case 15:s[i]='F';break;
default:s[i]=a+'0';
}
}
while ((t/=b)>0);
s[i+1]='\0';
reverse(s);
}
main()
{int n,b;
char s[200];
printf("Input n,b:");
scanf("%d%d",&n,&b);
itob(n,s,b);
printf("Result:%s\n",s);
}
但总觉得太麻烦了,不知有没有更好的写法?
望高手指教哦!