题目链接:进制转换
题目思路:就和数学题一样正常计算就行,找个数组存一下余数,倒着输出就行。
注意:ABCDE要特判;要特判负数;要特判n=0;(一开始用的while循环就把n=0这种情况给漏掉了ORZ)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, r;
int a[10200];
int f = 1; //判断是否为负数
int cnt = 0; //存余数
scanf("%d%d", &n, &r);
if(n<0)
{
n = -n;
f = 0;
}
for(;;) //while循环会把n=0的情况漏掉,但for循环不会;
{
a[cnt++] = n%r;
n = n / r;
if(n==0)break;
}
if(f==0)printf("-");
for(int i = cnt-1; i >= 0; i--) //转换
{
switch(a[i])
{
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[i]);
}
}
printf("\n");
return 0;
}