问题描述
输入一个十进制整数N,将它转换成R进制数输出。
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N和R(2<=R<=36).
输出
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,16用G表示等等)。
输入样列
7 2
23 12
-4 3
输出样例
111
1B
-11
这个代码可以转换正数,但是负数转化不了
#include<stdio.h>
#include<string.h>
void fun(int n,int th,char a[])
{
char t;
int len,k,i;
i=0;
do{
k=n%th;
if(k>=-9&&k<=-1){
a[i]=-(k+'0');
}
else if(k>=0&&k<=9){
a[i]=k+'0';
}
else{
a[i]=k-10+'A';
}
n=n/th;
i++;
}while(n!=0);
a[i]='\0';
len=strlen(a);
for(i=0;i<len/2;i++){
t=a[i];
a[i]=a[(len-1)-i];
a[(len-1)-i]=t;
}
}
int main()
{
int n,th;
char str[100];
while(1){
scanf("%d%d",&n,&th);
fun(n,th,str);
puts(str);
}
return 0;
}