描述
输入一个十进制非负整数,将其转换为其他进制数。
例如
输入:65535
输出:FFFF
采用除基取余法,将输入的原始数字对基数取余,将每次所求得的余数保存在一个数组中,最后将数组倒序输出即可,如果要转换成十六进制,则要进行另外处理。
#include <iostream>
using namespace std;
int main() {
int initNum;//原始数
int R; //基数
int finalNum[31] = {0};//保存余数
cout << "请输入十进制数:" << endl;
cin >> initNum;
cout << "请输入要转化的进制R:" << endl;
cin >> R;
int i;
if (initNum == 0) { //对输入的0进行特别处理
i = 0;
} else
i = 0;
for (; initNum != 0; i++) {
finalNum[i] = initNum % R;//取余
initNum = initNum / R;//取商
}
for (int j = i - 1; j >= 0; --j) {//输出
switch (finalNum[j]) {//十六进制处理
case 10:
cout << "A";
break;
case 11:
cout << "B";
break;
case 12:
cout << "C";
break;
case 13:
cout << "D";
break;
case 14:
cout << "E";
break;
case 15:
cout << "F";
break;
default:
cout << finalNum[j];
}
}
return 0;
}
注:默认输入的数为非负整数。