坑点:
temp 可以使 0,但是 temp / 16最终为 0;所以temp 不能进入 while 循环,故特判
总结
- 其余进制表示为十六进制,需要考虑到字母的表示
- 要及时停止没有输出的任何东西的代码,因为它可能在无限循环
#include <iostream>
using namespace std;
int main() {
int temp = 0;
cin >> temp;
string str = "";
if (temp == 0) {
printf("0");
} else {
while (temp > 0) {
if (temp % 16 <= 9) {
str += (temp % 16) + '0';
} else {
str += (temp % 16) - 10 + 'A';
}
temp /= 16;
}
int n = str.length();
for (int i = n - 1; i >= 0; i--) {
cout << str[i];
}
}
return 0;
}