问题描述:
设计函数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);
void f(int sum,int n);
int main() {
int number,n,m;
scanf("%d %d %d",&number,&n,&m);
numConvert(number,n,m);
return 0;
}
int numConvert(int number,int n,int m){
int a1=number;
int i,sum=0;
for(i=-1;a1>0;i++){
a1/=10;
}
for(a1=number;i>=0;i--){
sum*=n;
sum+=a1/pow(10,i);
a1%=(int)pow(10,i);
}
f(sum,m);
}
void f(int sum,int m){
int r;
r=sum%m;
if(sum>=m){
f(sum/m,m);
}//利用递归函数反向计算
printf("%d",r);
}