c语言十六进制转十进制且能输入多组
时间: 2024-10-07 12:03:35 浏览: 30
C语言 进制转换
在C语言中,你可以通过遍历输入的十六进制字符串并转换每个字符来将其转换成对应的十进制数。这里有一个简单的函数示例,它接受用户输入的一组十六进制数字,并逐个转换它们:
```c
#include <stdio.h>
#include <string.h>
// 十六进制到十进制的转换函数
int hex_to_dec(char hex_digit) {
if (hex_digit >= '0' && hex_digit <= '9') {
return hex_digit - '0'; // 对于0-9,无需特殊处理
} else if (hex_digit >= 'A' && hex_digit <= 'F') {
return hex_digit - 'A' + 10; // 对于A-F,加上10对应10-15
} else if (hex_digit >= 'a' && hex_digit <= 'f') {
return hex_digit - 'a' + 10; // 对于a-f,同样加10对应10-15
}
// 如果不是有效的十六进制字符,返回0表示错误
return 0;
}
int main() {
char input[100];
int decimal = 0;
printf("请输入一组十六进制数(如:4A1B):");
fgets(input, sizeof(input), stdin); // 接收用户输入
size_t len = strlen(input);
for (size_t i = 0; i < len; i++) {
if (input[i] != '\n' && isxdigit(input[i])) { // 跳过换行符并检查是否为十六进制字符
decimal = decimal * 16 + hex_to_dec(input[i]);
}
}
printf("等效的十进制数是:%d\n", decimal);
return 0;
}
```
在这个程序中,用户可以输入一组以空格分隔的十六进制数字,例如 "4A1B"。然后程序会将这些十六进制值相加,得到最终的十进制结果。
阅读全文