hongxingb 2022-04-10 15:34 采纳率: 72.7%
浏览 18
已结题

进制转换 用递归写刚需求解

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

  • 写回答

1条回答 默认 最新

  • A-Chin 2022-04-10 15:58
    关注
    1. 方法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;
    }
    
    1. 方法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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 已采纳回答 4月10日
  • 创建了问题 4月10日

悬赏问题

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