进制转换
【问题描述】
编写一个程序,可以实现将任意十进制整数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
悬赏问题
- ¥15 如何使用simulink建立一个永磁同步直线电机模型?
- ¥30 天体光谱图的的绘制并得到星表
- ¥15 PointNet++的onnx模型只能使用一次
- ¥20 西南科技大学数字信号处理
- ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
- ¥30 STM32 INMP441无法读取数据
- ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗