#include<stdio.h>
void decimalToAny(int n,int d)//10进制转换成任意进制
{
if(n==0)
return ;
else
{
decimalToAny(n/d,d);
if(d>=10)//如果是10进制以上
{
if(n%d>=10)
{
printf("%c",(char)((n%d-10)+'A'));
}
else//如果余数小于10,则直接输出
printf("%d",n%d);
}
//如果进制小于10,不会有字母的问题
else
printf("%d",n%d);
}
}
int main()
{
int n,d;
char again='y';
while(again=='y'||again=='Y')
{
printf("请输入十进制数:");
scanf("%d",&n);
printf("请输入要转换成几进制:");
scanf("%d",&d);
if(n==0)
{
printf("转换完成:0");
continue;
}
printf("转换完成:");
decimalToAny(n,d);
printf("\n");
printf("---------继续[y/n]?:");
scanf("%s",&again);
}
return 0;
}
测试:
请输入十进制数:10
请输入要转换成几进制:2
转换完成:1010
---------继续[y/n]?:y
请输入十进制数:12
请输入要转换成几进制:6
转换完成:20
---------继续[y/n]?:y
请输入十进制数:15
请输入要转换成几进制:16
转换完成:F
---------继续[y/n]?:y
请输入十进制数:16
请输入要转换成几进制:8
转换完成:20
---------继续[y/n]?:n