解题思路:
(1)将十进制数n转换为r进制数的方法是,n除以r取余数作为转换后的数的最低位。若商不为0,则用商继续除以r,取余数做最低位,直到商为0为止。 其中,对于16进制大于9的六个数用A、B、C、D、E、F表示。
(2)如果使用递归,则求得的余数序列为从高到低,直接输出即可。如果不使用递归,则余数的存储序列为从低到高,输出时需注意反向输出。
(3)遇到负数时,先将其转化为正数,再进行进制转换,输出时不要忘记输出负号“-”。
题意
将十进制数n转化为r进制数
Sample Input
7 2
23 12
-4 3
Sample Output
111
1B
-11
#include<stdio.h>
void fun(int a,int b)
{
if(a==0)
return ;
fun(a/b,b);
char ch;
if(a%b<10)
printf("%d",a%b);
else
printf("%c",'A'+a%b-10);
}
int main()
{
int n,r;
while(~scanf("%d %d",&n,&r))
{
if(n<0)
{
printf("-");
n=-1*n;
}
fun(n,r);
printf("\n");
}
}