问题描述:
设计函数int numConvert(int number,int n,int m),用于将n进制的数number转化为m进制的数并返回,其中2<=n<=10,2<=m<=10。例如将二进制数110转化为三进制时,即调用numConvert(110,2, 3),函数返回值为20。可以推断出,返回值肯定在int型变量范围内。
输入与输出要求:
输入三个正整数number、n和m,三个整数的意义如题目叙述。输出转化后的结果。
程序运行效果:
Sample 1:
110 2 3↙
20
Sample 2:
666666 9 10↙
398580
#include<stdio.h>
#include<math.h>
int numConvert(int number,int n,int m);
int main()
{
int number,n,m;
scanf("%d%d%d",&number,&n,&m);
printf("%d\n",numConvert(number,n,m));
return 0;
}
int numConvert(int number,int n,int m)
{
int i,count=0,number10=0;
i=number;
while(i!=0)
{
number10+=(i%10)*(int)pow((int)n,(int)count);
count++;
i=i/10;
}//十进制转换完毕
int p=1,re=0;
while(p<=number10)
{
p=p*m;
}
p=p/m;
while(p>=1)
{
re=number10/p+re*10;
number10%=p;
p/=m;
}
return re;
//十进制转换其他进制完毕
}