C++ 实现两个 k 进制数的加法运算
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
原文地址: https://www.cveoy.top/t/topic/bWo2 著作权归作者所有。请勿转载和采集!