十进制与任意进制的互相转换
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
using namespace std;
int fact(int n,int p) //十进制转为任意进制 (n是十进制数,p是要转化进制选择)
{
int res;
if(n<p)
return n;
else
return n%p+fact(n/p,p)*10;
}
int inv_fact(int p,int n) //任意进制转为十进制
//p代表当前的数字进制,n代表当前p进制下的数字表示
{
char s[20];
int result=0;
int temp=0;
sprintf(s,"%d",n);
int len=strlen(s); //为获取数字的长度,进行数字转字符串,用strlen求长度
//cout<<len<<endl;
for(int i=0;i<len;i++)
{
temp=n%10;
n=n/10;
result=result+temp*pow(p,i);
}
cout<<result;
}
int main()
{
int m;
int p;
cout<<"十进制转为任意进制"<<endl;
cin>>m>>p;
cout<<fact(m,p)<<endl;
cout<<"任意进制转为十进制"<<endl;
cin>>m>>p;
inv_fact(m,p);
}



浙公网安备 33010602011771号