c语言写一个函数,能将二进制、八进制及十六进制数转换为十进制数输出。
时间: 2024-12-19 16:28:41 浏览: 4
C语言-顺序栈实现十进制转换为二进制-八进制-十六进制
在C语言中,我们可以编写三个函数分别处理二进制、八进制和十六进制到十进制的转换。这里提供一个基础的示例:
```c
#include <stdio.h>
#include <string.h>
// Function to convert binary to decimal
int binary_to_decimal(char *binary_str) {
int decimal = 0;
int base = 1, len = strlen(binary_str);
for (int i = len - 1; i >= 0; i--) {
if (binary_str[i] == '1') {
decimal += base;
}
base <<= 1;
}
return decimal;
}
// Function to convert octal to decimal
int octal_to_decimal(char *octal_str) {
int decimal = 0;
int base = 1, len = strlen(octal_str);
for (int i = len - 1; i >= 0; i--) {
if (isdigit(octal_str[i])) {
decimal += (octal_str[i] - '0') * base;
} else if (octal_str[i] == '8') {
decimal += 8 * base;
}
base *= 8;
}
return decimal;
}
// Function to convert hexadecimal to decimal
int hex_to_decimal(char *hex_str) {
int decimal = 0;
int base = 1, len = strlen(hex_str);
for (int i = len - 1; i >= 0; i--) {
if (isxdigit(hex_str[i])) {
int digit_val = hex_str[i] <= '9' ? hex_str[i] - '0' : hex_str[i] - 'A' + 10;
decimal += digit_val * base;
} else if (hex_str[i] == 'F') {
decimal += 15 * base;
}
base *= 16;
}
return decimal;
}
int main() {
char binary[] = "1010";
char octal[] = "12";
char hex[] = "A";
printf("Binary to Decimal: %d\n", binary_to_decimal(binary));
printf("Octal to Decimal: %d\n", octal_to_decimal(octal));
printf("Hexadecimal to Decimal: %d\n", hex_to_decimal(hex));
return 0;
}
```
这个程序定义了三个函数,每个函数接收一个字符串形式的数值并返回相应的十进制表示。注意,输入的字符串应该只包含有效的二进制、八进制或十六进制字符。
阅读全文