在进行十进制转换成n<10进制问题时,我们通常将需要转换的数字除以n,进而能够得到一个商和余数,然后将余数保留在一个新创造的数组中,通过不断的对商进行除以n,得到新的商和余数,余数再次进行保存,我们可以得到一个数组,将数组进行逆序输出就可以得到我们想要的结果。但与普通的二进制和八进制等问题不同,在转换成n>10进制数时,余数就应该用A,B,C等英文字母表示,如果用阿拉伯数字就对应着10,11,12等,可以创建一个数组Hex[16]={‘0‘,‘1’,‘2’,...‘E’,'F'};逆序输出时将存储的余数譬如x[i]放到数组Hex中形成Hex[x[i]]进行输出即可。
#include<stdio.h>
int main()
{
char Hex[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//Hex[1]='1'而不是1,如果是后者则是将ASCII码值为1的数赋给Hex[1]
int x[20];
int n, b,i=0;
scanf_s("%d", &n);//输入十进制要转换成多少进制
scanf_s("%d", &b);//输入需要转换进制的数字
do
{
x[i++] = b % n;
b = b / n;
} while (b);
for (i--; i >= 0; i--)
printf("%c", Hex[x[i]]);
return 0;
这里可能是VS2022编译器出了点问题scanf需要改成scanf_s才能进行输入
输出结果如下