题目描述请你编一程序实现两种不同进制之间的数据转换。输入共三行第一行是一个正整数表示需要转换的数的进制 n 2≤n≤16第二行是一个 n 进制数若 n10 则用大写字母 A∼F 表示数码 10∼15并且该 n 进制数对应的十进制的值不超过 109第三行也是一个正整数表示转换之后的数的进制 m 2≤m≤16。输出一个正整数表示转换之后的 m 进制数。样例输入 复制16FF2样例输出 复制111111
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int charToNum(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else {
return c - 'A' + 10;
}
}
char numToChar(int num) {
if (num >= 0 && num <= 9) {
return num + '0';
} else {
return num - 10 + 'A';
}
}
string convertToDecimal(string num, int base) {
int decimal = 0;
int power = 1;
for (int i = num.size() - 1; i >= 0; i--) {
decimal += charToNum(num[i]) * power;
power *= base;
}
return to_string(decimal);
}
string convertToBase(string num, int base) {
int decimal = stoi(num);
string result = "";
while (decimal > 0) {
int remainder = decimal % base;
result += numToChar(remainder);
decimal /= base;
}
reverse(result.begin(), result.end());
return result;
}
int main() {
int n;
cin >> n;
string num;
cin >> num;
int m;
cin >> m;
string decimalNum = convertToDecimal(num, n);
string result = convertToBase(decimalNum, m);
cout << result << endl;
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/iV2V 著作权归作者所有。请勿转载和采集!