手动输入带小数十进制转16进制C语言代码。不使用x,和>>
时间: 2024-03-23 18:36:46 浏览: 87
以下是将手动输入的小数转换为十六进制的 C 语言代码示例,不使用 `%x` 格式说明符和位运算符 `>>`:
```
#include <stdio.h>
int main() {
double decNum;
printf("Enter a decimal number: ");
scanf("%lf", &decNum);
// Convert decimal number to hexadecimal
unsigned char* p = (unsigned char*)&decNum;
char hex[32];
int idx = 0;
for (int i = sizeof(decNum) - 1; i >= 0; i--) {
int val = *(p + i);
int high = val / 16;
int low = val % 16;
hex[idx++] = (high < 10) ? (high + '0') : (high - 10 + 'A');
hex[idx++] = (low < 10) ? (low + '0') : (low - 10 + 'A');
}
hex[idx] = '\0';
printf("Hexadecimal equivalent = %s", hex);
return 0;
}
```
在此示例中,我们使用了 `double` 类型的变量 `decNum` 来存储手动输入的小数。然后,我们使用指针将 `decNum` 转换为 `unsigned char` 类型,并将结果存储在指针变量 `p` 中。接下来,我们使用循环将 `p` 中的每个字节转换为十六进制,并将它们存储在一个字符数组 `hex` 中。在转换过程中,我们使用条件运算符 `?:` 来将十进制值转换为相应的十六进制字符。最后,我们将字符数组 `hex` 输出到控制台上,以显示其十六进制等效项。
请注意,此示例同样适用于 `double` 类型的小数。
阅读全文