#include <stdio.h>
#include <math.h>
int toDecimal(char num[], int base) {
int decimal = 0;
int power = 0;
int len = strlen(num);
for (int i = len - 1; i >= 0; i--) {
int digit;
if (num[i] >= '0' && num[i] <= '9') {
digit = num[i] - '0';
} else if (num[i] >= 'A' && num[i] <= 'F') {
digit = num[i] - 'A' + 10;
} else {
printf("Invalid input\n");
return -1;
}
decimal += digit * pow(base, power);
power++;
}
return decimal;
}
int main() {
char binary[32], octal[32], hexdecimal[32];
int decimal;
printf("Enter a binary number: ");
scanf("%s", binary);
decimal = toDecimal(binary, 2);
printf("Decimal equivalent: %d\n", decimal);
printf("Enter an octal number: ");
scanf("%s", octal);
decimal = toDecimal(octal, 8);
printf("Decimal equivalent: %d\n", decimal);
printf("Enter a hexadecimal number: ");
scanf("%s", hexdecimal);
decimal = toDecimal(hexdecimal, 16);
printf("Decimal equivalent: %d\n", decimal);
return 0;
}
结果
