请编写程序,输入十六进制数,输出对应的十进制数。 输入格式 十六进制非负整数 输出格式 对应的十进制非负整数 输入样例 13Ba 输出样例 5050 使用C语言
时间: 2024-09-23 07:14:09 浏览: 44
C++实现十六进制字符串转换为十进制整数的方法
在C语言中,可以使用标准库中的函数`strtol()`或`std::stoi()`来将十六进制转换成十进制。这里是一个简单的程序示例:
```c
#include <stdio.h>
#include <string.h> // 需要用到strlen函数
int main() {
char hex_input[16]; // 假设输入最多15位十六进制数
long decimal_output; // 存储结果的变量
// 输入十六进制数
fgets(hex_input, sizeof(hex_input), stdin);
// 移除换行符
hex_input[strcspn(hex_input, "\n")] = '\0';
// 将十六进制转为十进制
if (sscanf(hex_input, "%lx", &decimal_output) == 1) { // sscanf用于解析格式化的输入
decimal_output = atol(hex_input); // 再次转换为long类型,以消除可能的符号问题
printf("%ld\n", decimal_output); // 输出结果
} else {
printf("Invalid input format.\n"); // 输入不是有效的十六进制
}
return 0;
}
```
这个程序首先获取用户输入的十六进制数,然后使用`sscanf()`函数尝试解析输入为十六进制格式的数值。如果解析成功,就将其转换为`long`类型的十进制数,并输出。如果输入格式不正确,会提示"Invalid input format."。
注意:`%lx`是`scanf`和`sscanf`用于读取十六进制数的格式,`atol()`函数用于去除潜在的负号影响。
阅读全文