我需要你写一个使用c语言的计算器,功能应该有菜单,可以实现二进制、十进制的加减乘除
时间: 2023-11-28 10:47:43 浏览: 57
好的,以下是一个简单的计算器程序,可以实现菜单、二进制、十进制的加减乘除功能:
```c
#include <stdio.h>
// 二进制加法
int bin_add(int a, int b) {
int carry = 0, res = 0;
while (b != 0) {
carry = (a & b) << 1; // 计算进位
res = a ^ b; // 计算不进位的和
a = res;
b = carry;
}
return res;
}
// 二进制减法
int bin_sub(int a, int b) {
int borrow = 0, res = 0;
while (b != 0) {
borrow = ((~a) & b) << 1; // 计算借位
res = a ^ b; // 计算不借位的差
a = res;
b = borrow;
}
return res;
}
// 二进制乘法
int bin_mul(int a, int b) {
int res = 0;
while (b != 0) {
if (b & 1) {
res = bin_add(res, a); // 累加
}
a <<= 1; // 左移1位
b >>= 1; // 右移1位
}
return res;
}
// 二进制除法
int bin_div(int a, int b) {
int res = 0;
while (a >= b) {
int count = 0;
while (a >= (b << count)) {
count++;
}
res = bin_add(res, 1 << (count - 1));
a = bin_sub(a, b << (count - 1));
}
return res;
}
int main() {
int op, a, b, res;
printf("请选择进制:\n");
printf("1. 十进制\n");
printf("2. 二进制\n");
scanf("%d", &op);
switch (op) {
case 1:
printf("请输入两个整数:\n");
scanf("%d%d", &a, &b);
printf("请选择运算:\n");
printf("1. 加法\n");
printf("2. 减法\n");
printf("3. 乘法\n");
printf("4. 除法\n");
scanf("%d", &op);
switch (op) {
case 1:
res = a + b;
printf("结果为:%d\n", res);
break;
case 2:
res = a - b;
printf("结果为:%d\n", res);
break;
case 3:
res = a * b;
printf("结果为:%d\n", res);
break;
case 4:
res = a / b;
printf("结果为:%d\n", res);
break;
default:
printf("输入错误!\n");
break;
}
break;
case 2:
printf("请输入两个二进制数:\n");
scanf("%d%d", &a, &b);
printf("请选择运算:\n");
printf("1. 加法\n");
printf("2. 减法\n");
printf("3. 乘法\n");
printf("4. 除法\n");
scanf("%d", &op);
switch (op) {
case 1:
res = bin_add(a, b);
printf("结果为:%d\n", res);
break;
case 2:
res = bin_sub(a, b);
printf("结果为:%d\n", res);
break;
case 3:
res = bin_mul(a, b);
printf("结果为:%d\n", res);
break;
case 4:
res = bin_div(a, b);
printf("结果为:%d\n", res);
break;
default:
printf("输入错误!\n");
break;
}
break;
default:
printf("输入错误!\n");
break;
}
return 0;
}
```
在程序中,我们定义了四个函数分别实现了二进制的加减乘除运算。在主函数中,我们先让用户选择进制,然后根据用户的选择进行相应的运算。