进制转换(16-10) : 输入不超过5位数的一个十六进制数,输出转换后的十进制数(提示用字符数组接 示例: 输入格式: 12A 输出格式: After:298 示例: 输入格式: 12a 输出格式: After:298 输入格式: 78R 输出格式: error! 请用c语言
时间: 2023-07-31 21:09:33 浏览: 97
好的,以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int hexToDec(char hex[]) {
int dec = 0, len = strlen(hex);
for (int i = 0; i < len; i++) {
int digit;
if (hex[i] >= '0' && hex[i] <= '9') {
digit = hex[i] - '0';
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
digit = hex[i] - 'a' + 10;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
digit = hex[i] - 'A' + 10;
} else {
printf("error!\n");
return -1;
}
dec = dec * 16 + digit;
}
return dec;
}
int main() {
char hex[6];
scanf("%s", hex);
printf("After:%d\n", hexToDec(hex));
return 0;
}
```
思路是将十六进制数转换为十进制数,具体实现是遍历十六进制数的每一位,根据其数字或字母对应的十进制数进行转换,最后将所有位的结果相加即可。如果输入的十六进制数不合法(即包含非十六进制数的字符),则输出错误提示。