从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
回答不易,求求您采纳点赞哦
#include <stdio.h>
#include <ctype.h>
#include <math.h>
int hex2dec(char hex[]) {
int i, len, dec = 0, base = 1;
for (len = 0; hex[len] != '\0'; len++);
for (i = len - 1; i >= 0; i--) {
if (isdigit(hex[i]))
dec += (hex[i] - 48) * base;
else if (isalpha(hex[i]))
dec += (toupper(hex[i]) - 55) * base;
base *= 16;
}
return dec;
}
int main() {
char hex[8];
printf("Enter a hexadecimal number: ");
scanf("%s", hex);
printf("Decimal equivalent: %d\n", hex2dec(hex));
return 0;
}
该代码的作用是从键盘输入一个不超过8位的十六进制数字字符串,然后将其转换为十进制数并输出。
首先,使用scanf函数从键盘输入一个字符串,存入字符数组str中。
然后,通过循环依次处理str中每一个字符,判断该字符是否为十六进制的数字,如果是数字,则转换为数字值并累加到sum变量中;如果是字母,则将其转换为相应的数字值(AF对应的数字为1015),再累加到sum变量中。最后,循环结束后,输出sum变量的值,即为十进制的数字。