将非负十进制整数n转换成b进制。(其中b=2~16)
算法思路:
使用字符数组存储每一位的元素,将整数num每次%b 就能得到当前位置上的b进制数,然后将num/b,再次进入函数递归调用,num==0时作为递归出口,我用了show()直接跳到另一个函数来结束递归调用。
//递归调用
void Transfer(int num /*要转换数*/, int b/*转换的进制*/, char last[]/*字符串*/, int unit/**/){
if (num == 0){
show(last, unit);
}
else{
int bite = num % b;
char bit = '0';
if (bite > 9){
bit = 'A' + (bite - 10);
last[unit] = bit;
}
else{
last[unit] = '0' + bite;
}
num /= b;
unit++;
Transfer(num, b, last, unit);
}
}
//非递归
void unTransfer(int num /*要转换数*/, int b/*转换的进制*/, char last[]/*字符串*/){
int bite;
char bit;
int i;
for (i = 0; num != 0; i++){
bite = num % b;
if (bite > 9){
last[i] = &