将2 8 16进制转化成十进制c语言程序
时间: 2023-12-26 20:06:22 浏览: 83
以下是将2进制、8进制和16进制转换成十进制的C语言程序:
```c
#include <stdio.h>
#include <math.h>
int binToDec(long long bin); // 二进制转十进制
int octToDec(int oct); // 八进制转十进制
int hexToDec(char hex[]); // 十六进制转十进制
int main() {
long long bin;
int oct;
char hex[10];
printf("请输入一个二进制数: ");
scanf("%lld", &bin);
printf("%lld(2) = %d(10)\n", bin, binToDec(bin));
printf("请输入一个八进制数: ");
scanf("%o", &oct);
printf("%o(8) = %d(10)\n", oct, octToDec(oct));
printf("请输入一个十六进制数: ");
scanf("%s", hex);
printf("%s(16) = %d(10)\n", hex, hexToDec(hex));
return 0;
}
int binToDec(long long bin) {
int dec = 0, i = 0, rem;
while (bin != 0) {
rem = bin % 10;
bin /= 10;
dec += rem * pow(2, i);
++i;
}
return dec;
}
int octToDec(int oct) {
int dec = 0, i = 0, rem;
while (oct != 0) {
rem = oct % 10;
oct /= 10;
dec += rem * pow(8, i);
++i;
}
return dec;
}
int hexToDec(char hex[]) {
int dec = 0, i = 0, len;
len = strlen(hex);
for (i = 0; hex[i] != '\0'; ++i) {
if (hex[i] >= '0' && hex[i] <= '9') {
dec += (hex[i] - '0') * pow(16, len - 1 - i);
}
else if (hex[i] >= 'A' && hex[i] <= 'F') {
dec += (hex[i] - 'A' + 10) * pow(16, len - 1 - i);
}
else if (hex[i] >= 'a' && hex[i] <= 'f') {
dec += (hex[i] - 'a' + 10) * pow(16, len - 1 - i);
}
}
return dec;
}
```
输入要转换的数,程序会输出其对应的十进制数。其中,`binToDec()`函数将二进制转换成十进制,`octToDec()`函数将八进制转换成十进制,`hexToDec()`函数将十六进制转换成十进制。
阅读全文