(进制转换)从键盘读入一个表示16进制整数的字符串,逐一将全部16进制位乘以其位权并求和,将该字符串转换成整数并按10进制输出其值。
时间: 2023-04-29 10:00:11 浏览: 468
首先需要了解16进制的位权,从右往左依次为16^、16^1、16^2、16^3...以此类推。
例如,16进制数x3F2的位权分别为2、16、384,将其乘以对应的位值,再求和,即可得到10进制的值。
具体实现可以使用循环遍历字符串中的每个字符,将其转换为对应的16进制数值,再乘以对应的位权,最后累加求和即可。
示例代码如下:
```
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
char hex[100];
int len, i, dec = ;
printf("请输入一个16进制数:");
scanf("%s", hex);
len = strlen(hex);
for (i = ; i < len; i++) {
int digit = ;
if (hex[i] >= '' && hex[i] <= '9') {
digit = hex[i] - '';
} 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;
}
dec += digit * pow(16, len - i - 1);
}
printf("转换后的10进制数为:%d\n", dec);
return ;
}
```
阅读全文