下面这个是本人一年前写的一个可以把十进制转换成1-16进制的一个进制转换器。
#define N 100
void main(void)
{
int c=0,i,j,k,a[N];
long num;
char A,B,C,D,E,F;
printf("please input the number of you want to conversion\n"); /*输入要转换的十进制数*/
scanf("%ld",&num);
printf("\nplease input the number of scale\n"); /*输入要转换成几进制的数1-16*/
scanf("%d",&k);
for(j=0;j<N;j++)
{
a[j]=num%k; /*取余数赋值给数组a的成员*/
num=num/k; /*对数值num求商数,使其在下次循环时有一个新的值*/
if(num<k) /*当所要num的值小于要转换的进制数时跳出循环*/
continue;
c++; /*利用一个变量来计数,使下面输出数组进程可以有一个明确输出位数范围*/
}
for(i=c+1;i>=0;i--) /*倒输数组a,原理是数学的“除n取倒商法”*/
{
if(a[i]==10) /*十六进制中以字母ABCDEF代替9以上数字,所以在满足条件时输出字母代替10、11、12等数字*/
{printf("%c",65);}
else if(a[i]==11)
{printf("%c",66);}
else if(a[i]==12)
{printf("%c",67);}
else if(a[i]==13)
{printf("%c",68);}
else if(a[i]==14)
{printf("%c",69);}
else if(a[i]==15)
{printf("%c",70);}
else
printf("%d",a[i]); /*若没有大于9的数字,则按整形数据输出*/
}
getch();
}
温馨提示:答案为网友推荐,仅供参考