进制转换
#include <iostream>
#include <stdio.h>
#include <stack.h>
#include <assert.h>
#include <math.h>
using namespace std;
int main()
{
char digit[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
cout <<"输入待转换整数: ";
char c;
char a[80];
char b[80];
int i=0,j=0,length;
while ((c = getchar())!='\n') //输入
{a[i]=c;
i++;
}
length=i; //输入的数的位数 0~i-1
for(j=0;j<length;j++) //转化成数值
{
if( a[j]>='0' && a[j]<='9')
b[j] = a[j]-'0';
else if( a[j]>='a'&&a[j]<='f' )
b[j] = a[j] -'a' +10;
else if( a[j]>='A'&&a[j]<='F' )
b[j] = a[j] -'A' +10;
else
continue;
}
cout<<"输入的数是多少进制N:";
int n;
cin>>n;
assert((n>1)&&(n<=16));
int num=0;
for(i=0,j=length-1;j>=0;j--,i++)//输入的数转成十进制
{
num+=b[i]*pow(n,j);
}
cout <<"转换成进制数M: ";
int m;
cin >>m;
cout <<endl;
assert((m>1)&&(m<=16));
stack<char> stk;
char remain;
while (num!=0)//转成M进制
{
remain = digit[num%m];
stk.push(remain);
num/= m;
}
cout <<"结果: ";//输出结果
while(!stk.empty())
{
cout <<stk.top();
stk.pop();
}
cout <<endl;
return 0;
}

浙公网安备 33010602011771号