转换为十六进制为:100 点击复制后,将打开C知道体验页 | 用c语言编写一个把10进制的数(包括小数)转为16进制程序
时间: 2023-05-31 13:04:49 浏览: 95
以下是一个用C语言编写的将10进制数(包括小数)转为16进制的程序:
```c
#include <stdio.h>
int main()
{
double decimalNumber;
int integerPart;
double fractionalPart;
int i, j;
char hexadecimalNumber[20];
printf("请输入一个十进制数:");
scanf("%lf", &decimalNumber);
integerPart = (int)decimalNumber;
fractionalPart = decimalNumber - integerPart;
i = 0;
while (integerPart != 0)
{
int remainder = integerPart % 16;
if (remainder < 10)
{
hexadecimalNumber[i] = remainder + 48;
}
else
{
hexadecimalNumber[i] = remainder + 55;
}
i++;
integerPart /= 16;
}
hexadecimalNumber[i] = '\0';
printf("转换为十六进制为:%s", strrev(hexadecimalNumber));
if (fractionalPart != 0)
{
printf(".");
j = 0;
while (fractionalPart != 0 && j < 5)
{
fractionalPart *= 16;
int digit = (int)fractionalPart;
if (digit < 10)
{
printf("%d", digit);
}
else
{
printf("%c", digit + 55);
}
fractionalPart -= digit;
j++;
}
}
return 0;
}
```
代码解释:
1. 首先,我们定义了一个double类型的变量decimalNumber来存储用户输入的十进制数。
2. 然后,我们将十进制数的整数部分存储在一个int类型的变量integerPart中,并将十进制数的小数部分存储在一个double类型的变量fractionalPart中。
3. 接下来,我们使用一个循环来将integerPart转换为十六进制数。在每一次循环中,我们取integerPart除以16的余数,并将余数转换为十六进制数的字符形式存储在一个字符数组hexadecimalNumber中。如果余数小于10,则将其转换为对应的数字字符;否则,将其转换为对应的字母字符。然后,我们将integerPart除以16,以便在下一次循环中处理下一个位。
4. 在循环结束后,我们将字符数组hexadecimalNumber反转,并输出它作为十六进制数的字符串表示形式。
5. 如果fractionalPart不等于0,则表示输入的十进制数有小数部分。我们使用另一个循环来将fractionalPart转换为十六进制数的小数部分,并输出它作为字符串表示形式。在每一次循环中,我们将fractionalPart乘以16,并将结果的整数部分存储在一个int类型的变量digit中。然后,如果digit小于10,则将其输出为对应的数字字符;否则,将其输出为对应的字母字符。最后,我们将fractionalPart减去digit,并将j的值增加1,以便在下一次循环中处理下一个位。如果j的值达到5,则表示我们已经处理了小数部分的5个位,循环结束。
6. 最后,我们返回0,表示程序正常结束。
阅读全文