#include <stdio.h>
int power(int,int);
int scale_first(int,int);
int scale_double(int,int);
int scale_all(int,int,int);
int main()
{
//给定一个 M 进制的数 x,实现对 x 向任意的一个非 M 进制的数的转换
int num,pow,answer; //数字,幂数,答案
int scale1,scale2; //被转数值进制和目的数值进制
int num1; //被转数值和目的数值
printf(" 进制转换器
");
printf("格式是:被转换数字 被转数字的进制 目的进制
");
printf("请输入以上格式(数字 进制 进制):");
scanf("%d%d%d",&num1,&scale1,&scale2);
answer = scale_all(num1,scale1,scale2);
printf("%d",answer);
}
int power(int num,int pow)
{
int answer=1;
if(pow==0)
{
return answer;
}
answer=num*power(num,pow-1);
}
int scale_first(int num,int sca) //sca是被转换数值的进制 ,num是被转换数值
{
int answer=1;
int digit=0;
int dec=0;
while(num!=0)
{
dec += num%10 * power(sca,digit);
digit++;
num/=10;
}
return dec;
}
int scale_double(int num,int sca) //sca是目的数值的进制,num是被转换数值
{
int answer=0;
int i=0;
int consult=1;
while(consult!=0)
{
answer += num%sca * power(10,i);
consult = num/sca;
num/=sca;
i++;
}
return answer;
}
int scale_all(int num1,int sca1,int sca2) //num1是被转换数值,sca1是被转换进制,sca2是目的进制
{
int dec;
int aim;
dec = scale_first(num1,sca1);
aim = scale_double(dec,sca2);
return aim;
}