#include<stdio.h>
#include<string.h>
int int_pow(int x,int y)//用于计算倍数
{
int i,result=1;
for(i=1;i<=y;i++)
{
result*=x;
}
return result;
}
void dtox(int dnum,int jz)//十进制转换成任意进制
{
char xnum[100];
int i=0,j=0;
while(dnum>=jz)
{
if(dnum%jz<=9)
xnum[j++]=dnum%jz;//+48;
else
xnum[j++]=dnum%jz-10+'A';//超过9
dnum=dnum/jz;
}
if(dnum<=9)
xnum[j]=dnum+'0';//加上字符零是为了将数字变为字符
else
xnum[j]=dnum-10+'A';
for(i=j;i>=0;i--)
{
printf("%c",xnum[i]);
}
}
int xtod(char num[],int jz)//将输入的数转换为十进制
{
int dnum=0,i,n=0,b;
for(i=0;;i++)
{
if(num[i]=='\0')break;
else n++;//计算num的长度
}
for(i=n-1;i>=0;i--)
{
if(num[n-i-1]>='a')
b=num[n-i-1]-'a'+10;
else if(num[n-i-1]>='A')
b=num[n-i-1]-'A'+10;
else
b=num[n-i-1]-'0';//减去字符零是为了将字符变为数字
dnum=dnum+b*int_pow(jz,i);
}
return dnum;
}
int main()
{
char num[100];
int jz1,jz2;
printf("请输入要转换的数:");
scanf("%s",num);
printf("输入数的进制:");
scanf("%d",&jz1);
printf("要转化得进制:");
scanf("%d",&jz2);
dtox(xtod(num,jz1),jz2);
getchar();
return 0;
}