#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;
}
C语言学习笔记--2,8,16进制转10进制
最新推荐文章于 2024-05-28 17:16:29 发布