原理其实是先把数换算成该进制下的几或十几,再用字母输出。
#include<stdio.h>
int main()
{
long n;
int a[1000],b,i,j,r;
int times;
scanf("%d",×);
while (times--)
{
scanf("%ld%d",&n,&r);
i=0;
if(n<0){n=-n;printf("-");} if(n==0) printf("0"); while(n>0)
{
b=n%r;
a[i++]=b;
n=n/r;
}
i=i-1;
for(j=i;j>=0;j--)
{
switch(a[j])
{
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
default :printf("%d",a[j]);
}
}
printf("\n");
}
return 0;
}
《NOJ1012 进制转换》有1个想法