我需要你写一个用c语言编写的计算机,功能是有中文菜单,可以进行二进制的加减乘除,用户在进行一次运算后可以选择继续该运算或者是返回菜单,应该有相应的中午错误提示信息,代码中要有非常详细的注释。
时间: 2023-11-28 21:49:26 浏览: 86
图形用户编程.编写一个简单的计算器程序,要求有菜单,能进行简单的加减乘除运算。
5星 · 资源好评率100%
好的,以下是一个简单的用C语言编写的计算器程序,具有中文菜单和二进制加减乘除的功能,同时支持继续运算和返回菜单。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void menu() {
printf("\n");
printf("===== 二进制计算器 =====\n");
printf("1. 加法\n");
printf("2. 减法\n");
printf("3. 乘法\n");
printf("4. 除法\n");
printf("5. 退出\n");
printf("=======================\n\n");
}
// 将二进制字符串转换为整数
int bin2dec(char *bin) {
int len = strlen(bin);
int dec = 0;
for (int i = 0; i < len; i++) {
dec = dec * 2 + (bin[i] - '0');
}
return dec;
}
// 将整数转换为二进制字符串
void dec2bin(int dec, char *bin) {
int i = 0;
while (dec > 0) {
bin[i++] = dec % 2 + '0';
dec /= 2;
}
bin[i] = '\0';
strrev(bin);
}
void add() {
char bin1[100], bin2[100];
printf("请输入第一个二进制数:");
scanf("%s", bin1);
printf("请输入第二个二进制数:");
scanf("%s", bin2);
int dec1 = bin2dec(bin1);
int dec2 = bin2dec(bin2);
int sum = dec1 + dec2;
char bin[100];
dec2bin(sum, bin);
printf("结果为:%s\n", bin);
}
void sub() {
char bin1[100], bin2[100];
printf("请输入第一个二进制数:");
scanf("%s", bin1);
printf("请输入第二个二进制数:");
scanf("%s", bin2);
int dec1 = bin2dec(bin1);
int dec2 = bin2dec(bin2);
int diff = dec1 - dec2;
char bin[100];
dec2bin(diff, bin);
printf("结果为:%s\n", bin);
}
void mul() {
char bin1[100], bin2[100];
printf("请输入第一个二进制数:");
scanf("%s", bin1);
printf("请输入第二个二进制数:");
scanf("%s", bin2);
int dec1 = bin2dec(bin1);
int dec2 = bin2dec(bin2);
int prod = dec1 * dec2;
char bin[100];
dec2bin(prod, bin);
printf("结果为:%s\n", bin);
}
void div() {
char bin1[100], bin2[100];
printf("请输入被除数:");
scanf("%s", bin1);
printf("请输入除数:");
scanf("%s", bin2);
int dec1 = bin2dec(bin1);
int dec2 = bin2dec(bin2);
if (dec2 == 0) {
printf("除数不能为零!\n");
} else {
int quot = dec1 / dec2;
char bin[100];
dec2bin(quot, bin);
printf("商为:%s\n", bin);
}
}
int main() {
while (1) {
menu();
int choice;
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add();
break;
case 2:
sub();
break;
case 3:
mul();
break;
case 4:
div();
break;
case 5:
exit(0);
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
这个程序中,我们定义了一个 `menu` 函数,用于显示菜单;然后定义了 `add`、`sub`、`mul` 和 `div` 函数,分别实现二进制加减乘除的功能;最后在主函数中通过一个无限循环来让用户不断选择菜单中的功能。在 `add`、`sub`、`mul` 和 `div` 函数中,我们都使用了 `bin2dec` 和 `dec2bin` 两个辅助函数,用于将二进制字符串转换为整数和将整数转换为二进制字符串。另外,当除数为零时,我们在 `div` 函数中输出了错误提示信息。
阅读全文