这个题利用栈的思想,先进后出。考虑n>0,n=0,n<0三种情况,还有就是十六进制的时候, 数字大于9的时候用字母表示。
#include <stdio.h>
int main()
{
int n,r;
int stac[100000];
while(~scanf("%d%d",&n,&r))
{
int top=0;
int flag=0;
if(n==0)
{
printf("0\n");
continue;
}
if(n<0)
{
n=-n;
flag=1;
}
while(n>0)
{
stac[top++]=n%r;
n/=r;
}
if(flag)
printf("-");
for(int i=top-1;i>=0;i--)
{
if(stac[i]>9)
printf("%c",stac[i]-10+'A');
else
printf("%d",stac[i]);
}
printf("\n");
}
return 0;
}