我需要你写一个使用c语言的计算器,功能应该有菜单,可以实现二进制、十进制的加减乘除,在运算结束后可以选择继续或者是返回菜单,可以进行简单错误判断,如除以0判断等,菜单和提示均是中文
时间: 2023-10-06 19:08:01 浏览: 62
好的,以下是使用C语言编写的计算器代码:
```
#include <stdio.h>
#include <stdlib.h>
// 二进制加法
int binary_addition(int a, int b) {
int carry;
while (b != 0) {
carry = a & b;
a = a ^ b;
b = carry << 1;
}
return a;
}
// 二进制减法
int binary_subtraction(int a, int b) {
int borrow;
while (b != 0) {
borrow = (~a) & b;
a = a ^ b;
b = borrow << 1;
}
return a;
}
// 二进制乘法
int binary_multiplication(int a, int b) {
int result = 0;
while (b != 0) {
if (b & 1) {
result = binary_addition(result, a);
}
a <<= 1;
b >>= 1;
}
return result;
}
// 二进制除法
int binary_division(int a, int b) {
int quotient = 0, remainder = 0;
for (int i = 31; i >= 0; i--) {
remainder <<= 1;
remainder |= (a >> i) & 1;
if (remainder >= b) {
remainder = binary_subtraction(remainder, b);
quotient |= 1 << i;
}
}
return quotient;
}
// 十进制加法
int decimal_addition(int a, int b) {
return a + b;
}
// 十进制减法
int decimal_subtraction(int a, int b) {
return a - b;
}
// 十进制乘法
int decimal_multiplication(int a, int b) {
return a * b;
}
// 十进制除法
int decimal_division(int a, int b) {
return a / b;
}
int main() {
int choice, a, b, result;
while (1) {
printf("请选择要进行的运算类型:\n");
printf("1. 二进制加法\n");
printf("2. 二进制减法\n");
printf("3. 二进制乘法\n");
printf("4. 二进制除法\n");
printf("5. 十进制加法\n");
printf("6. 十进制减法\n");
printf("7. 十进制乘法\n");
printf("8. 十进制除法\n");
printf("9. 退出程序\n");
printf("请输入你的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入两个二进制数(以空格分隔):");
scanf("%d %d", &a, &b);
result = binary_addition(a, b);
printf("结果为:%d\n", result);
break;
case 2:
printf("请输入两个二进制数(以空格分隔):");
scanf("%d %d", &a, &b);
result = binary_subtraction(a, b);
printf("结果为:%d\n", result);
break;
case 3:
printf("请输入两个二进制数(以空格分隔):");
scanf("%d %d", &a, &b);
result = binary_multiplication(a, b);
printf("结果为:%d\n", result);
break;
case 4:
printf("请输入两个二进制数(以空格分隔):");
scanf("%d %d", &a, &b);
if (b == 0) {
printf("错误:除数为0!\n");
break;
}
result = binary_division(a, b);
printf("结果为:%d\n", result);
break;
case 5:
printf("请输入两个十进制数(以空格分隔):");
scanf("%d %d", &a, &b);
result = decimal_addition(a, b);
printf("结果为:%d\n", result);
break;
case 6:
printf("请输入两个十进制数(以空格分隔):");
scanf("%d %d", &a, &b);
result = decimal_subtraction(a, b);
printf("结果为:%d\n", result);
break;
case 7:
printf("请输入两个十进制数(以空格分隔):");
scanf("%d %d", &a, &b);
result = decimal_multiplication(a, b);
printf("结果为:%d\n", result);
break;
case 8:
printf("请输入两个十进制数(以空格分隔):");
scanf("%d %d", &a, &b);
if (b == 0) {
printf("错误:除数为0!\n");
break;
}
result = decimal_division(a, b);
printf("结果为:%d\n", result);
break;
case 9:
printf("程序已退出。\n");
exit(0);
default:
printf("错误:无效的选择!\n");
break;
}
}
return 0;
}
```
这个计算器包括二进制加减乘除和十进制加减乘除四种运算,可以进行简单的错误判断,如除以0判断等。同时,程序会在每次运算结束后询问用户是否继续或者返回菜单,菜单和提示均为中文。