小张同学最近正在学习进制转换,他已经掌握了各种进制转的技巧。面对众多的进制转换问题,小张觉得逐一计算效率不高,还是写个程序计算起来更快。
请你帮助小张同学编程,将无符号整数n,转化成在b进制下的表示。
例如: n为10,b为2,则转化后为1010。
又如:n为10,b为16,则转化后为0XA。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, D;
vector<int> outcome;
cout << "输入要转换的整数和进制" << endl;
cin >> n >> D;
for (; n > 0;)
{
outcome.push_back(n % D);
n /= D;
}
for (vector<int>::iterator it = outcome.end(); it != outcome.begin();)
{
--it;
if ((*it) < 10)
cout << *it;
else
cout << (char)((*it) - 10 + 'A');
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
#include <bits/stdc++.h>
using namespace std;
void f(int a,int x)
{
int ans[10005];
int cnt = 0;
while(a!=0){
ans[++cnt] = a%x;
a/=x;
}
if(x==16)cout<<"0X";
for(int i=cnt;i>=1;i--){
if(ans[i]==10)cout<<'A';
else if(ans[i]==11)cout<<'B';
else if(ans[i]==12)cout<<'C';
else if(ans[i]==13)cout<<'D';
else if(ans[i]==14)cout<<'E';
else if(ans[i]==15)cout<<'F';
else cout<<ans[i];
}
}
int main()
{
int n;
cin>>n;
int a,x;
while(n--){
cin>>a>>x;
f(a,x);
cout<<endl;
}
return 0;
}