用c语言实现这个程序
时间: 2024-10-06 07:03:50 浏览: 12
在C语言中,可以使用标准库函数`strtol`来处理字符串形式的十六进制数到十进制的转换。这里是一个简单的示例程序,用于解决这个问题:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 自定义函数将十六进制字符串转换为整数
long long hex_to_decimal(const char *hex) {
char negative = 0;
if (*hex == '-') { // 检查负数标志
negative = 1;
hex++;
}
unsigned long long result = strtoull(hex, NULL, 16); // 使用strtoul进行转换
return negative ? -result : result; // 如果是负数,取反
}
int main() {
int num_tests;
scanf("%d", &num_tests);
while (num_tests--) {
char hex_input[9];
scanf("%s", hex_input); // 读取输入的十六进制字符串
hex_input[strcspn(hex_input, "\n")] = '\0'; // 移除潜在的换行符
long long decimal = hex_to_decimal(hex_input);
printf("%llx\n", decimal); // 输出转换后的十六进制数(添加前缀 '0x')
}
return 0;
}
```
这个程序首先定义了一个辅助函数`hex_to_decimal`,它接受一个十六进制字符串作为输入,通过`strtoull`函数转换为无符号长整型,再根据输入字符串的负号标志判断是否为负数。
`main`函数会循环读入测试案例数,然后读取每一个十六进制字符串并调用`hex_to_decimal`函数进行转换。最后,它使用`printf`函数输出结果,并在前面加上前缀 "0x" 显示为十六进制。
阅读全文