这道题考察的主要是通过辗转相除法进行进制转化,同时需要注意的一点就是辗转相除法获得的每位数字必须逆序输出,这就需要我们用一个数字保存,另外还有一个需要注意的地方就是输出的时候,如果进制大于10,则可能需要输出字母。
#include<bits/stdc++.h>
using namespace std;
int vis[100];//记录从低到高每位
void Help(int m,int n)
{
int a=m;
int d=0;
int temp;
while(a)//辗转相除法
{
temp=a%n;
a=a/n;
vis[d++]=temp;
}
if(n>9)//开始判断转化的进制是否可能输出字母,如果大于9则可能输出字母
{
for(int i=d-1;i>=0;i--)
{
if(vis[i]>=10)
{
char c='A'+vis[i]-10;//进行字母输出
cout<<c;
}
else
{
cout<<vis[i];
}
}
cout<<endl;
}
else
{
for(int i=d-1;i>=0;i--)
{
cout<<vis[i];
}
cout<<endl;
}
}
int main()
{
int m,n;
while(cin>>m>>n)
{
Help(m,n);
}
}
京公网安备 11010502036488号