输入一个十进制数N,将它转换成R进制数输出。在10≤R≤16 的情况下,用’A’表示10,用’B’表示11,用’C’表示12,用’D’表示13,用’E’表示14,用’F’表示15。
输入包含两个整数N(N≤10000)和R(2≤R≤16)。 注意,N有可能是负整数。
输出一行,表示转换后的数。
23
12
1B
进制转换:原进制数通过辗转相除,取余,逆置余数序列的过程得到新的进制的数。
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int N,R,a;
char b[105];
cin>>N>>R;
if(N<0){
cout<<"-";
N = -N;
}
int c = 0;
while(N){
a = N % R;
if(a < 10){
b[c++] = '0' + a; //0的Ascall码+a表示0~9的数字
}
else{
b[c++] = 'A' + a - 10; // 表示A~F字母
}
N /= R;
}
if(c == 0){
cout<<0;
}
for(int i = c-1;i >= 0;i --){
cout<<b[i];
}
return 0;
}