c语言编写程序,将十进制正整数转成十六进制字符串输出。效果如下:
时间: 2024-09-10 15:15:28 浏览: 70
在C语言中,你可以通过标准库函数`itoa()`来将十进制正整数转换为十六进制字符串,但这个函数在一些较旧的C标准中并未提供。所以,我们通常会自定义一个函数来实现这一功能。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 自定义的十进制转十六进制的函数
char* decimal_to_hexadecimal(int num) {
char hex[65], *ptr = hex;
if (num == 0)
return ptr;
// 处理负数和补零的情况
if (num < 0) {
*ptr++ = '-';
num = -num;
}
while (num != 0) {
int remainder = num % 16;
if (remainder < 10)
*ptr++ = '0' + remainder; // 0-9
else
*ptr++ = 'A' + remainder - 10; // A-F
num /= 16;
}
*ptr = '\0';
reverse(hex);
return hex;
}
// 反转字符串
void reverse(char* str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
int input;
printf("请输入一个十进制正整数:");
scanf("%d", &input);
char* result = decimal_to_hexadecimal(input);
printf("转换后的十六进制字符串为:%s\n", result);
free(result); // 如果你需要,记得释放内存
return 0;
}
```
在这个程序中,我们首先读取用户输入的十进制数字,然后将其转换为十六进制并打印出来。注意,`decimal_to_hexadecimal()`函数先处理了负数和补零的情况,然后循环除以16取余数,并将结果转换为对应的十六进制字符。
阅读全文