主要是运用了get10方法 把我们输入的数值全部转换为10进制
运用了put方法把最终的num结果由10进制转化为我们输入的进制数.
运用了主方法,也没啥,就是调用了switch方法,进行逐个比对.并在主方法里面调用get10方法和put方法.
#include<iostream>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define ll long long
ll jinzhi=10,num;
ll get10(){
ll p=1,sum=0;
string s;
cin>>s;
for(int i=s.length()-1;i>=0;i--){
if(s[i]<='9') {sum+=p*(s[i]-'0');}
else {sum+=p*(s[i]-'A'+10);}
p*=jinzhi;
}
return sum;
}
void put(){
string s;
ll n=num;
if(n==0) s="0";
while(n){
char c;
ll a=n%jinzhi;
if(a<=9) c='0'+a;
else c=a-10+'A';
s=c+s;
n=n/jinzhi;
}
cout<<s<<endl;
}
int main(){
int n;
cin>>n;
string s;
while(n--){
int select;
cin>>s;
if(s=="CLEAR"){select=0;num=0;}
else if(s=="CHANGE") scanf("%lld",&jinzhi);
else if(s=="ADD") select=1;
else if(s=="SUB") select=2;
else if(s=="MUL") select=3;
else if(s=="DIV") select=4;
else if(s=="MOD") select=5;
else if(s=="NUM"){
switch(select){
case 0:num=get10();break;
case 1:num+=get10();break;
case 2:num-=get10();break;
case 3:num*=get10();break;
case 4:num/=get10();break;
case 5:num%=get10();break;
}
}
else if(s=="EQUAL")
put();
}
return 0;
}