编写C语言程序,以字符串形式输入一个十六进制数,将其转化为十进制后输出
时间: 2024-12-08 08:13:19 浏览: 23
c语言编程题:从键盘输入一个十进制数,将其转换为二进制、八进制和十六进制数,并同时输出。
4星 · 用户满意度95%
在C语言中,你可以通过循环遍历输入的十六进制字符串,然后利用`strtol()`函数将每个字符转换成对应的十六进制数字,并累加到结果中。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 十六进制转十进制的辅助函数
int hex_to_dec(char ch) {
if (ch >= '0' && ch <= '9') {
return ch - '0';
} else if (ch >= 'A' && ch <= 'F') {
return ch - 'A' + 10;
} else if (ch >= 'a' && ch <= 'f') {
return ch - 'a' + 10;
}
// 如果不是有效的十六进制字符,返回0
return 0;
}
int main() {
char hex_str[50];
printf("请输入一个十六进制数(以0x开头): ");
fgets(hex_str, sizeof(hex_str), stdin); // 防止读取换行符
// 去掉前缀"0x"
hex_str[strlen(hex_str) - 2] = '\0';
int decimal_num = 0;
for (int i = 0; hex_str[i]; i++) {
decimal_num *= 16;
decimal_num += hex_to_dec(hex_str[i]);
}
printf("十进制表示为:%d\n", decimal_num);
return 0;
}
```
这个程序首先提示用户输入十六进制数,然后去掉前缀"0x",接着逐个字符处理字符串,将其转换为十进制数值并累计。最后,输出转换后的十进制值。
阅读全文