用c语言实现2进制加减乘除法运算的计算器

22 阅读4分钟

用c语言如何实现2进制加减乘除法运算的计算器? 以下是一个用 C 语言实现简单的二进制数加减乘除运算的计算器示例代码:

c 复制

正确例题 #include <stdio.h> #include <stdlib.h>

// 将二进制字符串转换为整数 int binaryToDecimal(char *binary) { int decimal = 0; int len = strlen(binary); for (int i = len - 1, j = 0; i >= 0; i--, j++) { if (binary[i] == '1') { decimal += (1 << j); } } return decimal; }

// 将整数转换为二进制字符串 void decimalToBinary(int decimal, char *binary) { int index = 0; while (decimal > 0) { binary[index++] = (decimal % 2) + '0'; decimal /= 2; } binary[index] = '\0'; // 反转字符串 int start = 0; int end = index - 1; while (start < end) { char temp = binary[start]; binary[start] = binary[end]; binary[end] = temp; start++; end--; } }

// 二进制加法 void binaryAddition(char *num1, char *num2, char *result) { int decimal1 = binaryToDecimal(num1); int decimal2 = binaryToDecimal(num2); int sum = decimal1 + decimal2; decimalToBinary(sum, result); }

// 二进制减法 void binarySubtraction(char *num1, char *num2, char *result) { int decimal1 = binaryToDecimal(num1); int decimal2 = binaryToDecimal(num2); int difference = decimal1 - decimal2; if (difference >= 0) { decimalToBinary(difference, result); } else { printf("结果为负数,暂不支持\n"); } }

// 二进制乘法 void binaryMultiplication(char *num1, char *num2, char *result) { int decimal1 = binaryToDecimal(num1); int decimal2 = binaryToDecimal(num2); int product = decimal1 * decimal2; decimalToBinary(product, result); }

// 二进制除法 void binaryDivision(char *num1, char *num2, char *result) { int decimal1 = binaryToDecimal(num1); int decimal2 = binaryToDecimal(num2); if (decimal2!= 0) { int quotient = decimal1 / decimal2; decimalToBinary(quotient, result); } else { printf("除数不能为 0\n"); } }

int main() { char num1[32], num2[32], operation; char result[32];

printf("请输入第一个二进制数: ");
scanf("%s", num1);

printf("请输入运算符 (+ - * /): ");
scanf(" %c", &operation);

printf("请输入第二个二进制数: ");
scanf("%s", num2);

switch (operation) {
    case '+':
        binaryAddition(num1, num2, result);
        printf("结果: %s\n", result);
        break;
    case '-':
        binarySubtraction(num1, num2, result);
        printf("结果: %s\n", result);
        break;
    case '*':
        binaryMultiplication(num1, num2, result);
        printf("结果: %s\n", result);
        break;
    case '/':
        binaryDivision(num1, num2, result);
        printf("结果: %s\n", result);
        break;
    default:
        printf("无效的运算符\n");
        break;
}

return 0;

}  

这段代码实现了一个简单的二进制数的四则运算计算器,通过将二进制转换为十进制进行运算,再将结果转换回二进制输出。

用c语言如何实现一个3进制加减乘除法运算的计算器? 以下是一个用 C 语言实现的简单三进制计算器程序示例,支持加法、减法、乘法和除法:

c 复制

#include <stdio.h> #include <stdlib.h> #include <string.h>

// 将三进制数转换为十进制 int ternaryToDecimal(char *ternary) { int decimal = 0; int len = strlen(ternary); for (int i = len - 1, j = 0; i >= 0; i--, j++) { if (ternary[i] >= '0' && ternary[i] <= '2') { decimal += (ternary[i] - '0') * (1 << j); } else { printf("输入的不是有效的三进制数\n"); return -1; } } return decimal; }

// 将十进制数转换为三进制 void decimalToTernary(int decimal, char *ternary) { int index = 0; while (decimal > 0) { ternary[index++] = decimal % 3 + '0'; decimal /= 3; } ternary[index] = '\0'; // 反转字符串 int start = 0; int end = index - 1; while (start < end) { char temp = ternary[start]; ternary[start] = ternary[end]; ternary[end] = temp; start++; end--; } }

// 三进制加法 void ternaryAddition(char *num1, char *num2, char *result) { int decimal1 = ternaryToDecimal(num1); int decimal2 = ternaryToDecimal(num2); int sum = decimal1 + decimal2; decimalToTernary(sum, result); }

// 三进制减法 void ternarySubtraction(char *num1, char *num2, char *result) { int decimal1 = ternaryToDecimal(num1); int decimal2 = ternaryToDecimal(num2); int difference = decimal1 - decimal2; if (difference >= 0) { decimalToTernary(difference, result); } else { printf("结果为负数,暂不支持\n"); } }

// 三进制乘法 void ternaryMultiplication(char *num1, char *num2, char *result) { int decimal1 = ternaryToDecimal(num1); int decimal2 = ternaryToDecimal(num2); int product = decimal1 * decimal2; decimalToTernary(product, result); }

// 三进制除法 void ternaryDivision(char *num1, char *num2, char *result) { int decimal1 = ternaryToDecimal(num1); int decimal2 = ternaryToDecimal(num2); if (decimal2!= 0) { int quotient = decimal1 / decimal2; decimalToTernary(quotient, result); } else { printf("除数不能为 0\n"); } }

int main() { char num1[32], num2[32], operation; char result[32];

printf("请输入第一个三进制数: ");
scanf("%s", num1);

printf("请输入运算符 (+ - * /): ");
scanf(" %c", &operation);

printf("请输入第二个三进制数: ");
scanf("%s", num2);

switch (operation) {
    case '+':
        ternaryAddition(num1, num2, result);
        printf("结果: %s\n", result);
        break;
    case '-':
        ternarySubtraction(num1, num2, result);
        printf("结果: %s\n", result);
        break;
    case '*':
        ternaryMultiplication(num1, num2, result);
        printf("结果: %s\n", result);
        break;
    case '/':
        ternaryDivision(num1, num2, result);
        printf("结果: %s\n", result);
        break;
    default:
        printf("无效的运算符\n");
        break;
}

return 0;

}  

这个程序首先将输入的三进制数转换为十进制进行运算,然后再将结果转换回三进制输出。

用c语言如何实现一个36进制加减乘除法运算的计算器?