这道题考察的主要是通过辗转相除法进行进制转化,同时需要注意的一点就是辗转相除法获得的每位数字必须逆序输出,这就需要我们用一个数字保存,另外还有一个需要注意的地方就是输出的时候,如果进制大于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); } }