【问题描述】 将一个十六进制数转换成十进制数。 【输入形式】 输入一个大于等于0的十六进制数,最多4位,数字中如果有字母,用大写字母。 【输出形式】 一个整数。 【样例输入】 100F 【样例输出】 4111 #include <stdio.h> #define N 4 int HexToDec(char *p); int main() { int x; char a[N+1]; scanf("%s",a);
时间: 2024-03-23 10:39:11 浏览: 57
【问题回答】
你的问题是将一个十六进制数转换成十进制数,输入一个大于等于0的十六进制数,最多4位,数字中如果有字母,用大写字母。对应的C语言代码如下:
```c
#include <stdio.h>
#include <math.h>
int hexToDec(char hex[]){
int len = 0, i, dec = 0;
while(hex[len] != '\0'){
len++;
}
for(i = 0; hex[i] != '\0'; i++){
if(hex[i] >= '0' && hex[i] <= '9'){
dec += (hex[i] - 48) * pow(16, len-1);
}else if(hex[i] >= 'A' && hex[i] <= 'F'){
dec += (hex[i] - 55) * pow(16, len-1);
}
len--;
}
return dec;
}
int main(){
char hex[5];
scanf("%s", hex);
printf("%d", hexToDec(hex));
return 0;
}
```
输入样例:100F
输出样例:4111
这个代码的实现过程是:首先获取输入的十六进制数的长度,然后从高位到低位遍历每一位数值,如果是数字,则计算出对应的十进制值加到结果上;如果是字母,则计算出对应的十进制值加到结果上。最后返回计算结果。
阅读全文