请编写程序,输入十六进制数,输出对应的十进制数。 输入格式 十六进制非负整数 输出格式 对应的十进制非负整数 输入样例 13Ba 输出样例 5050请使用C语言,不使用函数
时间: 2024-09-24 18:07:48 浏览: 41
```c
#include <stdio.h>
#include <string.h>
int hex_to_dec(char hex[]) {
int len = strlen(hex);
int decimal = 0;
int base = 1;
for (int i = len - 1; i >= 0; i--) {
switch (hex[i]) {
case '0':
decimal += base * (hex[i] - '0');
break;
case '1':
decimal += base * 16;
break;
case '2':
decimal += base * 17;
break;
case '3':
decimal += base * 18;
break;
case '4':
decimal += base * 19;
break;
case '5':
decimal += base * 20;
break;
case '6':
decimal += base * 21;
break;
case '7':
decimal += base * 22;
break;
case '8':
decimal += base * 23;
break;
case '9':
decimal += base * 24;
break;
case 'A':
decimal += base * 25;
break;
case 'B':
decimal += base * 26;
break;
case 'C':
decimal += base * 27;
break;
case 'D':
decimal += base * 28;
break;
case 'E':
decimal += base * 29;
break;
case 'F':
decimal += base * 30;
break;
default:
printf("Invalid hexadecimal digit '%c'\n", hex[i]);
return -1;
}
base *= 16;
}
return decimal;
}
int main() {
char hex_input[10];
printf("请输入一个十六进制数(例如:13Ba):");
scanf("%s", hex_input);
int decimal_num = hex_to_dec(hex_input);
if (decimal_num != -1) {
printf("转换后的十进制数是:%d\n", decimal_num);
}
return 0;
}
```
阅读全文