C++进制转换程序纠错

#include
using namespace std;

int main()
{
int i=0,r,n,a[10];
char b[16]={'1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
cin >> n>>r;
do{
a[i]=n%r;
n=n/r;
i++;
}while(n!=0);
for(--i;i>=0;--i)
{
n=a[i];
cout << b[n];
}
system("pause");
return 0;
}
运行结果下来是有偏差的

#include <iostream>
using namespace std;

int main()
{
    int i = 0, r, n, a[10];
    char b[17] = { '0', '1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
    cin >> n >> r;
    do {
        a[i] = n % r;
        n = n / r;
        i++;
    } while (n != 0);
    for (--i; i >= 0; --i)
    {
        cout << b[a[i]];
    }
    cout << endl;
    return 0;
}

img


在你的代码的基础上改的,任意进制都可以转换

cout有hex直接打印16进制啊。

// modify basefield
#include <iostream>     // std::cout, std::dec, std::hex, std::oct

int main () {
  int n = 70;
  std::cout << std::dec << n << '\n';
  std::cout << std::hex << n << '\n';
  std::cout << std::oct << n << '\n';
  return 0;
}

char b[16]={'1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
你少了一个0吧?会错位啊
char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632