进制转换(低精度)

并不是某道题其实只是心血来潮随便写的QwQ(2333我才不会说我想发二进制说说来装B)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int primer(int a,int b)//快速幂将N进制转换成10进制 
{
	int r=1,base=a;
	while(b)
	{
		if (b&1) r*=base;
		base*=base;
		b>>=1;
	}
	return r;
}
int a[1001];
int changetoten(int m,int zj)//辗转相除将10进制转为m进制数 
{
	int cnt=0,ans=0;
	while(m)
	{
		cnt++;
		a[cnt]=m%10;
		m/=10;
	}
	for (int i=1;i<=cnt;i++)
	{
		ans+=a[i]*primer(zj,i-1);
	}
	return ans;
}
int b[1001];
int jz1;
int n;
int jz;
void changetoother(int m,int zj1)
{
	int cntt=0;
	while (m)
	{
		cntt++;
		b[cntt]=m%zj1;
		m/=zj1;
	}
	for (int i=cntt;i>=1;i--)
	cout<<b[i];
}
int main ()
{	
	cout<<"请输入待转换的数:"; 
	cin>>n;
	cout<<"请输入该数的进制:" ;
	cin>>jz;
	int k=changetoten(n,jz);	
	cout<<"请输入转换的进制:" ;
	cin>>jz1;
	cout<<"该数的"<<jz1<<"进制为:" ; 
	changetoother(k,jz1);
	return 0;
}


posted @ 2016-11-03 20:24  2000xyy  阅读(123)  评论(0编辑  收藏  举报