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.