进制转换
【问题描述】
编写一个程序,可以实现将任意十进制整数n转换为m进制数,其中
10-15用大写字母A-F表示 。
输入:包含两个正整数n(1<n<1000)和m(1<m<=16);
输出:转换后的m进制数。
【输出样例】
6F

进制转换 用递归写刚需求解
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- A-Chin 2022-04-10 15:58关注
- 方法1,只输出,不保存
#include <iostream> using namespace std; void trans(int n, int m) { if (n < m) { if (n < 10) cout << n; else cout << char('A' + n - 9); return; } int t1 = n / m; if (t1 < 10) cout << t1; else cout << char('A' + t1 - 9); n %= m; trans(n, m); } int main() { /*将任意十进制整数n转换为m进制数,其中 10-15用大写字母A-F表示 。 输入:包含两个正整数n(1<n<1000)和m(1<m<=16); 输出:转换后的m进制数。*/ int n = 31; int m = 16; cin >> n >> m; if (n < 1 || n > 999) cout << "n的范围错误..." << endl; if (m < 2 || m > 16) cout << "m的范围错误..." << endl; trans(n, m); return 0; }
- 方法2,保存结果(使用string保存结果):
#include <iostream> #include <string> using namespace std; string trans(int n, int m) { string str = ""; if (n < m) { if (n < 10) str = { char('0' + n), 0 }; else str = { char('A' + n - 9), 0 }; return str; } int t1 = n / m; n %= m; if (t1 < 10) str = { char('0' + t1), 0 }; else str = { char('A' + t1 - 9), 0 }; return (str + trans(n, m)); } int main() { /*将任意十进制整数n转换为m进制数,其中 10-15用大写字母A-F表示 。 输入:包含两个正整数n(1<n<1000)和m(1<m<=16); 输出:转换后的m进制数。*/ int n; int m; //cin >> n >> m; if (n < 1 || n > 999) cout << "n的范围错误..." << endl; if (m < 2 || m > 16) cout << "m的范围错误..." << endl; cout << trans(n, m) << endl; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报 编辑记录无用 1