用c语言编写一个,10进制转为16进制的程序,包括小数部分
时间: 2023-05-24 14:06:35 浏览: 85
以下是一个将十进制数转换为十六进制数的C程序,如果需要转换的数字是小数,则输出在十六进制下的近似值:
```
#include <stdio.h>
#include <math.h>
int main(void) {
double dec, frac;
int i, j;
char hex[20];
printf("Enter a decimal number: ");
scanf("%lf", &dec);
i = (int) dec;
frac = dec - i;
// 将整数部分转换为十六进制
j = 0;
while (i != 0) {
int remainder = i % 16;
if (remainder < 10) {
hex[j++] = 48 + remainder;
} else {
hex[j++] = 55 + remainder;
}
i /= 16;
}
// 反转整数部分得到正确的十六进制
printf("Hexadecimal equivalent of %lf: 0x", dec);
for (int k = j - 1; k >= 0; k--) {
printf("%c", hex[k]);
}
// 如果有小数部分,将它转换为十六进制
if (frac != 0.0) {
printf(".");
// 显示小数部分的前八位
for (int l = 0; l < 8; l++) {
frac *= 16;
int digit = (int) frac;
if (digit < 10) {
printf("%c", 48 + digit);
} else {
printf("%c", 55 + digit);
}
frac -= digit;
}
}
printf("\n");
return 0;
}
```
这个程序首先获取需要转换的十进制数并将其分为整数和小数两部分。然后,它将整数部分转换为十六进制,并反转字符串以得到正确的代码。最后,如果有小数部分,则将它转换为十六进制,并输出在小数点前添加一个“.”的格式下的结果。