我被困在一个项目中,我必须打印出10-16之间任何基数的任何数字。问题在于,在那些基础中,您必须在前面添加一个字母,我真的不太了解如何使用递归。如果我在16的底数中做246,则得到156。我知道实际答案应该是F6。转换时15转换为F。但是我该怎么办?在哪里添加代码?
int conversionFunction(int num, int base)
{
if (num == 0)
return 0;
int x = num % base;
num /= base;
if (x < 0)
num = num + 1;
conversionFunction(num, base);
if (x < 0){
cout << x+(base * -1);
}
else{
cout << x;
return x;
}
}
答案 0 :(得分:2)
请考虑打印一个字符而不是打印数字 x的可能性。 Look at the ASCII table,请注意数字0-9具有连续的数值,字母A-Z也是如此。
您可以利用该属性:
if (x < 10) cout << '0' + x; // prints a character!
else cout << 'A' + (x - 10); // prints a character!