C++ 信息学奥赛 1161
#include <iostream> using namespace std; void trans(int num, int bin) { // 进行进制除法获取商和余数 int dis = num / bin; // 商 int rem = num % bin; // 余数 // 如果商不比进制数小,说明还可以继续进制除法,递归调用 // 商比进制数小,说明没办法继续除,本商即为进制除法的末尾,需要输出 if(dis >= bin) trans(dis, bin); else { /* 数字只有0-9,10以后与字母的对应关系: 数字 字母 ASCII码值 10 A 65 11 B 66 12 C 67 ... 可以看出其差值为55,因此超过10的数字应+55转字符输出 */ if(dis<10) cout << dis; else cout << char(dis+55); } // 不管是否继续递归,本次的余数都应输出,且在递归之后 if(rem < 10) cout << rem; else cout << char(rem+55); } int main() { int num,bin; cin >> num >> bin; trans(num, bin); return 0; }