C++里的进制转换问题

C++进制转换代码,要求:输入A进制的B,和目标进制M,输出B转成M进制的结果,(M<32)
(备注:不要使用系统进制转换函数,纯代码)

https://blog.csdn.net/jiahuan_/article/details/120351926?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-120351926-blog-104459294.235%5Ev38%5Epc_relevant_default_base&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-120351926-blog-104459294.235%5Ev38%5Epc_relevant_default_base&utm_relevant_index=1

【以下回答由 GPT 生成】

解决方案

你可以使用以下步骤来实现进制转换的功能:

  1. 首先,你需要编写一个函数来将一个十进制数转换为其他进制数。这个函数可以采用整数除法和取余运算来实现。具体步骤如下:
string DecimalToBase(int num, int base) {
    string result = "";

    while (num > 0) {
        int remainder = num % base;

        if (remainder < 10) {
            result = to_string(remainder) + result;   // 添加余数到结果的最前面
        } else {
            result = char('A' + remainder - 10) + result;   // 添加对应的字母到结果的最前面
        }

        num = num / base;   // 更新被除数
    }

    return result;
}
  1. 然后,你可以编写一个函数来将其他进制数转换为十进制数。这个函数需要通过乘法和加法运算来实现。具体步骤如下:
int BaseToDecimal(string num, int base) {
    int result = 0;
    int power = 1;

    for (int i = num.length() - 1; i >= 0; i--) {
        if (num[i] >= '0' && num[i] <= '9') {
            result += (num[i] - '0') * power;
        } else if (num[i] >= 'A' && num[i] <= 'Z') {
            result += (num[i] - 'A' + 10) * power;
        }

        power *= base;
    }

    return result;
}
  1. 最后,你可以编写一个主函数来获取输入和输出结果。具体步骤如下:
#include <iostream>
using namespace std;

int main() {
    int baseA, baseM;
    int numberB;

    cout << "请输入目标进制(小于32):";
    cin >> baseM;

    cout << "请输入需要转换的数的原始进制:";
    cin >> baseA;

    cout << "请输入需要转换的数:";
    cin >> numberB;

    string result = DecimalToBase(numberB, baseA);

    cout << "转换后的结果为:" << result << endl;

    return 0;
}

这样,你就可以实现一个简单的进制转换程序了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^