void decToBinary(int decimal)
{
int binary[32];
int cnt = 0;
while (decimal > 0)
{
binary[cnt] = decimal % 2; // 取模放在低位
decimal = decimal / 2; // 更新参数
cnt++;
}
printf("Binary equivalent: ");
for (int i = cnt - 1; i >= 0; i--) // 逆向输出
{
printf("%d", binary[i]);
}
printf("\n");
}
void decToOctal(int decimal)
{
int octal[100];
int cnt = 0;
while (decimal > 0)
{
octal[cnt] = decimal % 8; // 取模
decimal = decimal / 8; // 更新参数
cnt++;
}
printf("Octal equivalent: ");
for (int i = cnt - 1; i >= 0; i--)
{
printf("%d", octal[i]);
}
printf("\n");
}
void decToHex(int decimal)
{
char hex[100];
int cnt = 0;
while (decimal > 0)
{
int remainder = decimal % 16; // 对参数取模,余数
if (remainder < 10) // 余数小于10,存入ASCII码
{
hex[cnt] = remainder + '0';
}
else
{
hex[cnt] = remainder + 'A' - 10; // ASCII字母A-10输出字母
}
decimal = decimal / 16; // 更新参数
cnt++;
}
printf("Hexadecimal equivalent: ");
for (int i = cnt - 1; i >= 0; i--) // 的到结果要逆向输出
{
printf("%c", hex[i]);
}
printf("\n");
}
int main()
{
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
decToBinary(decimal);
decToOctal(decimal);
decToHex(decimal);
return 0;
}
运行结果:
总结:进制转换重点在于存入数组的时候输出要逆向输出,还有16进制转换的时候要判断余值是否是否小于10,因为16进制10~15要用字母表示 所以要加上他们的ASCII再减去10.
标签:10,cnt,转换,进制,int,decimal,printf From: https://www.cnblogs.com/ikunkunkun/p/18231020