1.十进制转m进制
[代码实现]
#include<iostream>
#include<cstdio>
#include<stack> /*STL的栈*/
using namespace std;
int main()
{
stack<int> ans;
int n,m;
cin>>n>>m;
while (n) /*碾转相除法*/
{
ans.push(n%m);
n/=m;
}
while (!(ans.empty()))
{
if (ans.top()>=10)
printf("%c",'A'+ans.top()-10); /*十六进制:0,1,2,3,4,5,6,7,8,9,10,A,B,C,D,E,F 注意格式控制%c*/
else
printf("%d",ans.top());
ans.pop();
}
return 0;
}
2.m进制转十进制
[代码实现]
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int main()
{
int a[100];
int m,sum=0;
string n;
cin>>n>>m;
a[0]=n.size(); /*把n的长度存在a[0]*/
for(int i=1;i<=a[0];i++)
{
if(n[a[0]-i]>='0'&&n[a[0]-i]<='9') /*注意一个n[a[0]-i]倒序*/
sum=sum+pow(m,i-1)*(n[a[0]-i]-'0');
else
sum=sum+pow(m,i-1)*(n[a[0]-i]-'A'+10);
}
cout<<sum;
}