写一个C语言程序,二进制,八进制转化为十进制,十进制转化为二进制八进制,共四个算法程序
时间: 2024-10-15 17:28:43 浏览: 36
C语言实现十六进制数据转十进制数据
在C语言中,我们可以编写函数分别处理二进制、八进制到十进制的转换以及反过来的转换。这里我会提供两个基本的函数示例,一个是将二进制或八进制转换成十进制,另一个是从十进制转换回二进制或八进制。
首先,我们从二进制和八进制转成十进制:
```c
#include <stdio.h>
#include <string.h>
// Function to convert binary to decimal
int bin_to_dec(char* binary_str) {
int len = strlen(binary_str), dec_value = 0;
for (int i = len - 1; i >= 0; i--) {
if (binary_str[i] == '1') {
dec_value += pow(2, len - i - 1);
}
}
return dec_value;
}
// Function to convert octal to decimal
int oct_to_dec(char* octal_str) {
int len = strlen(octal_str), dec_value = 0;
for (int i = len - 1; i >= 0; i--) {
dec_value += (octal_str[i] - '0') * pow(8, len - i - 1);
}
return dec_value;
}
int main() {
char binary[] = "1010";
char octal[] = "12";
printf("Binary to Decimal: %d\n", bin_to_dec(binary));
printf("Octal to Decimal: %d\n", oct_to_dec(octal));
return 0;
}
```
接下来,我们将从十进制转换回二进制和八进制:
```c
// Function to convert decimal to binary
char* dec_to_bin(int dec_num) {
char binary[32];
sprintf(binary, "%d", dec_num);
for (int i = strlen(binary) - 1; i >= 0 && binary[i] != '0'; i--) {
binary[i] -= '0';
}
return binary;
}
// Function to convert decimal to octal
char* dec_to_oct(int dec_num) {
char octal[11]; // Octal numbers can't exceed 9 digits
sprintf(octal, "%o", dec_num);
return octal;
}
int main() {
int num = 42;
printf("Decimal to Binary: %s\n", dec_to_bin(num));
printf("Decimal to Octal: %s\n", dec_to_oct(num));
return 0;
}
```
阅读全文