admin管理员组文章数量:1794759
进制转换总结+蓝桥历届试题小计算器
进制转换总结
10进制数转换成K进制数:
string changetentok(long long num,int k){ while(num!=0){ int temp=num%k; num=num/k; if(temp<=9&&temp>=0) s.push_back(temp+'0'); else s.push_back(temp-10+'A'); } reverse(s.begin(),s.end()); return s; }k进制数转换成10进制数:
int changektoten(string str,int k){ long long ans=0; for(int i=0;i<str.length();i++){ if(str[i]>='0'&&str[i]<='9')ans=ans*k+(str[i]-'0'); else ans=ans*k+(str[i]-'A'+10); } return ans; }蓝桥历届试题 小计算器 (进制转换+模拟)**
题目:
题解:
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; long long change_num_k(string str,int k){ long long ans=0; for(int i=0;i<str.length();i++){ if(str[i]>='0'&&str[i]<='9') ans=ans*k+(str[i]-'0'); else ans=ans*k+(str[i]-'A'+10); } return ans; } string getans(long long num,int k){ if(num==0)return "0"; string ans; while(num){ int temp=num%k; if(temp>9) { ans.push_back(temp-10+'A'); } else { ans.push_back(temp+'0'); } num/=k; } reverse(ans.begin(),ans.end()); return ans; } long long calculator(long long a,long long b,int t){ if(t==1)return a+b; if(t==2)return a-b; if(t==3)return a*b; if(t==4)return a/b; if(t==5)return a%b; } int main(){ int n,k=10; string str,op; int t=0; int flag=0; long long num=0; scanf("%d",&n); while(n--){ cin>>op; //scanf("%s",&op); if(op=="NUM"){ //scanf("%d",&str); cin>>str; if(flag){ num=calculator(num,change_num_k(str,k),t); } else{ num=change_num_k(str,k); flag=1; } } else if(op=="CHANGE"){ scanf("%d",&k); } else if(op=="CLEAR"){ flag=0; } else if(op=="ADD"){ t=1; } else if(op=="SUB"){ t=2; } else if(op=="MUL"){ t=3; } else if(op=="DIV"){ t=4; } else if(op=="MOD"){ t=5; } else if(op=="EQUAL"){ cout<<getans(num,k)<<endl; } } return 0; }版权声明:本文标题:进制转换总结+蓝桥历届试题小计算器 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686576984a83750.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论