2022.6.15 AC代码
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
//进制转换
char ba[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J' };
int main()
{
int n, base;
cin >> n >> base; //待转换的数字 和 进制
cout << n << "="; //转换前
vector <int> res;
while (n)
{
int sh = n / base; //商
int yu = n % base; //余数
if (yu < 0)
sh += 1, yu -= base;
res.push_back(yu);
n = sh;
}
reverse(res.begin(), res.end());
//for (int i=0;i<res.size();i++) //法1
// printf("%c", ba[res[i]]);
for (auto x : res) //范围for
printf("%c", ba[x]);
printf("(base%d)", base);
return 0;
}
合理的代码应该是
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
//进制转换
char ba[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J' };
int main()
{
int n, base;
cin >> n >> base; //待转换的数字 和 进制
cout << n << "="; //转换前
vector <int> res;
while (n)
{
int sh = n / base; //商
int yu = n % base; //余数
if (yu < 0)
sh += 1, yu -= base;
res.push_back(yu);
n = sh;
}
if (res.empty())
cout << 0;
else {
reverse(res.begin(), res.end());
for (auto x : res) //范围for
printf("%c", ba[x]);
}
printf("(base%d)", base);
return 0;
}