阿 力 2021-12-12 22:32 采纳率: 0%
浏览 29

c++: 五、八、十、十二、十六进制数之间相互转换

1.输出操作菜单:
A. 5进制数---> 8进制数
B. 5进制数---> 10进制数
C. 5进制数---> 12进制数
D. 5进制数---> 16进制数
E. 8进制数---> 5进制数
F. 8进制数---> 10进制数
G. 8进制数---> 12进制数
……
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;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月12日

悬赏问题

  • ¥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打包时,为什么有的依赖打不进去包