社区讨论

实在不知道错在哪里,求助

P1143进制转换参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lobzpcgn
此快照首次捕获于
2023/10/30 05:35
2 年前
此快照最后确认于
2023/11/04 10:51
2 年前
查看原帖
CPP
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int main () {
    int a, b, j = 0, sum = 0, cnt = 0, holder;
    string c, rem[10001];
    cin >> a >> c >> b;
    for (int i = 0; i < c.length(); i++){
        if (c[i] == '0') continue;
        if (c[i] == '1') sum += 1 * pow(a, i);
        else if (c[i] == '2') sum += 2 * pow(a, i);
        else if (c[i] == '3') sum += 3 * pow(a, i);
        else if (c[i] == '4') sum += 4 * pow(a, i);
        else if (c[i] == '5') sum += 5 * pow(a, i);
        else if (c[i] == '6') sum += 6 * pow(a, i);
        else if (c[i] == '7') sum += 7 * pow(a, i);
        else if (c[i] == '8') sum += 8 * pow(a, i);
        else if (c[i] == '9') sum += 9 * pow(a, i);
        else if (c[i] == 'A') sum += 10 * pow(a, i);
        else if (c[i] == 'B') sum += 11 * pow(a, i);
        else if (c[i] == 'C') sum += 12 * pow(a, i);
        else if (c[i] == 'D') sum += 13 * pow(a, i);
        else if (c[i] == 'E') sum += 14 * pow(a, i);
        else sum += 15 * pow(a, i);
    }
    while (sum != 0) {
        holder = sum % b;
        sum = sum / b;
        if (holder == 15) rem[cnt++] = 'F';
        else if (holder == 14) rem[cnt++] = 'E'; 
        else if (holder == 13) rem[cnt++] = 'D';
        else if (holder == 12) rem[cnt++] = 'C';
        else if (holder == 11) rem[cnt++] = 'B';
        else if (holder == 10) rem[cnt++] = 'A';
        else if (holder == 9) rem[cnt++] = '9';
        else if (holder == 8) rem[cnt++] = '8';
        else if (holder == 7) rem[cnt++] = '7';
        else if (holder == 6) rem[cnt++] = '6';
        else if (holder == 5) rem[cnt++] = '5';
        else if (holder == 4) rem[cnt++] = '4';
        else if (holder == 3) rem[cnt++] = '3';
        else if (holder == 2) rem[cnt++] = '2';
        else if (holder == 1) rem[cnt++] = '1';
        else rem[cnt++] = '0';
    }
    for (int i = cnt; i >= 0; i--) 
        cout << rem[i];
    return 0;
}
我是把string和int来回转换了两回,先把输入转成十进制,再转成要求的进制。谢谢大佬帮看!

回复

5 条回复,欢迎继续交流。

正在加载回复...