C++ 实现两个 k 进制数的加法运算

本文提供了一个用 C++ 编写的程序,用于计算两个 k 进制数的和。程序首先将 k 进制数转换为十进制数,然后将十进制数的和转换为 k 进制数,最后输出结果。

#include <iostream>
#include <string>
using namespace std;

// 将字符转换为对应的数值
int charToNum(char c) {
    if (c >= '0' && c <= '9') {
        return c - '0';
    } else if (c >= 'A' && c <= 'Z') {
        return c - 'A' + 10;
    } else if (c >= 'a' && c <= 'z') {
        return c - 'a' + 10;
    }
    return 0;
}

// 将数值转换为对应的字符
char numToChar(int num) {
    if (num >= 0 && num <= 9) {
        return num + '0';
    } else if (num >= 10 && num <= 35) {
        return num - 10 + 'A';
    }
    return '0';
}

// 将k进制数转换为十进制数
int kToDecimal(string num, int k) {
    int result = 0;
    int power = 1;
    for (int i = num.length() - 1; i >= 0; i--) {
        result += charToNum(num[i]) * power;
        power *= k;
    }
    return result;
}

// 将十进制数转换为k进制数
string decimalToK(int num, int k) {
    string result = "";
    while (num > 0) {
        result = numToChar(num % k) + result;
        num /= k;
    }
    return result;
}

// 计算两个k进制数的和
string add(string num1, string num2, int k) {
    int decimal1 = kToDecimal(num1, k);
    int decimal2 = kToDecimal(num2, k);
    int sum = decimal1 + decimal2;
    return decimalToK(sum, k);
}

int main() {
    string num1, num2;
    int k;
    cout << "请输入第一个k进制数:";
    cin >> num1;
    cout << "请输入第二个k进制数:";
    cin >> num2;
    cout << "请输入k的值:";
    cin >> k;
    string result = add(num1, num2, k);
    cout << "两个k进制数的和为:" << result << endl;
    return 0;
}

运行程序后,按照提示输入两个 k 进制数和 k 的值,程序将输出它们的和。

程序解释:

  • charToNum(char c) 函数将字符转换为对应的数值。
  • numToChar(int num) 函数将数值转换为对应的字符。
  • kToDecimal(string num, int k) 函数将 k 进制数转换为十进制数。
  • decimalToK(int num, int k) 函数将十进制数转换为 k 进制数。
  • add(string num1, string num2, int k) 函数计算两个 k 进制数的和。

程序示例:

输入:

请输入第一个k进制数:123
请输入第二个k进制数:456
请输入k的值:10

输出:

两个k进制数的和为:579
C++ 实现两个 k 进制数的加法运算

原文地址: https://www.cveoy.top/t/topic/bWo2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录