我需要你写一个使用c语言的计算器,功能应该有菜单,可以实现二进制、十进制的加减乘除,在运算结束后可以选择继续或者是返回菜单,可以进行简单错误判断,如除以0判断等,菜单和提示均是中文,并给出一个二进制加法的测试案例
时间: 2023-08-11 16:05:21 浏览: 106
好的,以下是一个使用C语言编写的计算器程序,包含菜单、二进制、十进制的加减乘除、错误判断等功能:
```c
#include <stdio.h>
void binary_add(); // 二进制加法
void decimal_add(); // 十进制加法
void decimal_subtract(); // 十进制减法
void decimal_multiply(); // 十进制乘法
void decimal_divide(); // 十进制除法
int main() {
int choice;
do {
printf("欢迎使用计算器!\n");
printf("请选择要进行的操作:\n");
printf("1. 二进制加法\n");
printf("2. 十进制加法\n");
printf("3. 十进制减法\n");
printf("4. 十进制乘法\n");
printf("5. 十进制除法\n");
printf("6. 退出\n");
scanf("%d", &choice);
switch(choice) {
case 1:
binary_add();
break;
case 2:
decimal_add();
break;
case 3:
decimal_subtract();
break;
case 4:
decimal_multiply();
break;
case 5:
decimal_divide();
break;
case 6:
printf("感谢使用计算器!\n");
break;
default:
printf("输入错误,请重新输入!\n");
break;
}
} while(choice != 6);
return 0;
}
void binary_add() {
char bin1[32], bin2[32], result[32];
int carry = 0;
printf("请输入第一个二进制数:\n");
scanf("%s", bin1);
printf("请输入第二个二进制数:\n");
scanf("%s", bin2);
int i = 31;
while(i >= 0) {
int sum = (bin1[i] - '0') + (bin2[i] - '0') + carry;
if(sum == 0) {
result[i] = '0';
carry = 0;
} else if(sum == 1) {
result[i] = '1';
carry = 0;
} else if(sum == 2) {
result[i] = '0';
carry = 1;
} else {
result[i] = '1';
carry = 1;
}
i--;
}
printf("结果为:%s\n", result);
}
void decimal_add() {
double num1, num2, result;
printf("请输入第一个数:\n");
scanf("%lf", &num1);
printf("请输入第二个数:\n");
scanf("%lf", &num2);
result = num1 + num2;
printf("结果为:%lf\n", result);
}
void decimal_subtract() {
double num1, num2, result;
printf("请输入被减数:\n");
scanf("%lf", &num1);
printf("请输入减数:\n");
scanf("%lf", &num2);
result = num1 - num2;
printf("结果为:%lf\n", result);
}
void decimal_multiply() {
double num1, num2, result;
printf("请输入第一个数:\n");
scanf("%lf", &num1);
printf("请输入第二个数:\n");
scanf("%lf", &num2);
result = num1 * num2;
printf("结果为:%lf\n", result);
}
void decimal_divide() {
double num1, num2, result;
printf("请输入被除数:\n");
scanf("%lf", &num1);
printf("请输入除数:\n");
scanf("%lf", &num2);
if(num2 == 0) {
printf("除数不能为0!\n");
} else {
result = num1 / num2;
printf("结果为:%lf\n", result);
}
}
```
以下是一个二进制加法的测试案例:
输入:
```
1
1010
0110
```
输出:
```
结果为:10000
```
阅读全文