热门

最新

红包

立Flag

投票

同城

我的

发布
qq_74326233
祁煜的奇遇
3 年前
trueqq_74326233

今天做题发现的进制转换模板,马一下
#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;
}

CSDN App 扫码分享
分享
1
点赞
打赏
  • 复制链接
  • 举报
下一条:
深度學習
立即登录