今天做题发现的进制转换模板,马一下#include<bits/stdc++.h>using namespace std;string num;//转10进制int convert(string num,int r){ int n=0,s=1; int len=num.length(); for(int i=len-1;i>=0;i--) { //16进制特判 if(num[i]<='F'&&num[i]>='A') { n+=(num[i]-'A'+10)*s; s*=r; } //普通转换 else { n+=(num[i]-'0')*s; s*=r; } } return n; } //输出函数 void output(stack<int> s) { while(!s.empty()) { if(s.top()<10) { cout<<s.top(); } else if(s.top()>=10) { cout<<(char)(s.top()+'A'-10); } s.pop(); } cout<<endl; } //10进制转换m进制void work(int n,int r) { stack<int> s; while(n>0) { s.push(n%r); n/=r; } output(s); } int main() { int oldr,newr; cin>>oldr; cin>>num; cin>>newr; int n=convert(num,oldr); int lenn=num.length(); work(n,newr); return 0; }