1.输出操作菜单:
A. 5进制数---> 8进制数
B. 5进制数---> 10进制数
C. 5进制数---> 12进制数
D. 5进制数---> 16进制数
E. 8进制数---> 5进制数
F. 8进制数---> 10进制数
G. 8进制数---> 12进制数
……
0.退出
![](https://profile-avatar.csdnimg.cn/1beee941c16c4b5aaf9c62f3d0da23e8_weixin_62113571.jpg!4)
c++: 五、八、十、十二、十六进制数之间相互转换
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- _GX_ 2021-12-13 06:20关注
// g++ -Wall -std=c++17 main.cpp #include <iostream> #include <tuple> #include <vector> int to_int(const std::string &s, int b) { int n = 0; for (auto c : s) n = n * b + c - '0'; return n; } std::string to_string(int n, int b) { const char *c = "0123456789ABCDEF"; std::string s; do { auto m = n % b; s.push_back(c[m]); n /= b; } while (n != 0); return std::string(s.rbegin(), s.rend()); } int main() { auto bases = {5, 8, 10, 12, 16}; std::vector<std::tuple<int, int>> conversions; for (auto src : bases) { for (auto tar : bases) { if (src == tar) continue; conversions.push_back({src, tar}); } } while (1) { int index = 0; for (auto [src, tar] : conversions) { std::cout << static_cast<char>('A' + index) << ". " << src << "进制数 ---> " << tar << "进制数\n"; index++; } std::cout << "0. 退出\n"; printf("输入选项: "); char ch; std::cin >> ch; if (ch == '0') break; index = ch - 'A'; auto [src, tar] = conversions[index]; std::cout << "输入" << src << "进制数: "; std::string string; std::cin >> string; int num = to_int(string, src); std::cout << "转换为" << tar << "进制数结果是: " << to_string(num, tar) << std::endl; } return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 求解决为什么json数据完整,却解析失败
- ¥15 打开Smart schedule运行examples/transformer-xl/scripts/run_enwik8_base_moe.sh 报错
- ¥15 求一个C# sm4 加密解密的代码
- ¥15 想做个网络加速器,怎么实现
- ¥20 centos7下载mysql提示DNS解析异常
- ¥20 vx转账功能对方不能领取
- ¥15 vue2+codemirror 运行后页面光标太大了
- ¥15 pdfjs库如何在前端实现打印、旋转等功能
- ¥15 combobox数据绑定问题
- ¥15 maven打包时,为什么有的依赖打不进去包