通过C语言实现一个简易的计算器
计算器可实现加减乘除等一系列运算
方法一:
1.程序总体使用switch语句实现多分支选择
switch (input)
{case 1:printf("请输入两个操作数\n");scanf("%d%d", &x, &y);Add(x, y); break;case 2:printf("请输入两个操作数\n");scanf("%d%d", &x, &y);Sub(x, y);break;case 3:printf("请输入两个操作数\n");scanf("%d%d", &x, &y);Mul(x, y);break;case 4:printf("请输入两个操作数\n");scanf("%d%d", &x, &y);Div(x, y);break;case 0:printf("退出程序\n");break;default:printf("输入错误\n");break;
}
2.可以给做一个简单的菜单,写一个menu函数
void menu()
{printf("************************************\n");printf("**** 1.Add 2.Sub ****\n");printf("**** 3.Mul 4.Div ****\n");printf("**** 0.退出 ****\n");printf("************************************\n");
}
3.加减乘除功能分别单独写一个函数
void Add(int x,int y) //函数不需要返回值,此处用空类型
{printf("output=%d\n", x + y);
}
void Sub(int x, int y)
{printf("output=%d\n", x - y);
}
void Mul(int x, int y)
{printf("output=%d\n", x * y);
}
void Div(int x,int y)
{printf("output=%d\n", x / y);
}
总体代码实现如下:
#include<stdio.h>
void Add(int x,int y)
{printf("output=%d\n", x + y);
}
void Sub(int x, int y)
{printf("output=%d\n", x - y);
}
void Mul(int x, int y)
{printf("output=%d\n", x * y);
}
void Div(int x,int y)
{printf("output=%d\n", x / y);
}
int main()
{int input = 0;int x = 0;int y = 0;do{ menu();printf("请选择:>\n");scanf("%d", &input);switch (input)
{case 1:printf("请输入两个操作数\n");scanf("%d%d", &x, &y);Add(x, y);break;case 2:printf("请输入两个操作数\n");scanf("%d%d", &x, &y);Sub(x, y);break;case 3:printf("请输入两个操作数\n");scanf("%d%d", &x, &y);Mul(x, y);break;case 4:printf("请输入两个操作数\n");scanf("%d%d", &x, &y);Div(x, y);break;case 0:printf("退出程序\n");break;default:printf("输入错误\n");break;
}} while (input);
}
这种方法当计算器实现的功能变多的时,switch里面会比较繁杂,可使用方法二来优化
方法2:创建一个函数指针数组来存放各个函数的地址,通过函数指针数组来访问这些函数
1.函数指针数组创建如下
void(*p[])(int, int) = { 0,Add,Sub,Mul,Div };
2.通过这个函数指针数组来访问函数并传参
void menu()
{printf("************************************\n");printf("**** 1.Add 2.Sub ****\n");printf("**** 3.Mul 4.Div ****\n");printf("**** 0.退出 ****\n");printf("************************************\n");
}
void Add(int x,int y)
{printf("output=%d\n", x + y);
}
void Sub(int x, int y)
{printf("output=%d\n", x - y);
}
void Mul(int x, int y)
{printf("output=%d\n", x * y);
}
void Div(int x,int y)
{printf("output=%d\n", x / y);
}
int main()
{int input = 0;int x = 0;int y = 0;do{ menu();printf("请选择:>\n");scanf("%d", &input);void(*p[])(int, int) = { 0,Add,Sub,Mul,Div }; //创建函数指针数组并初始化if (input <= 4 && input >= 1) //通过if语句来限制输入选择的数字所实现的功能,逻辑分类{printf("请输入两个操作数\n");scanf("%d%d", &x, &y);p[input](x, y); //通过函数指针数组来访问函数并传参}else if (input == 0){printf("退出程序\n");}else{printf("输入错误\n");break;}} while (input);
}
参考以上程序也可自己再给里面添加其他的计算器功能
程序运行结果如下











![[已授权] 互联网定位技术小谈](http://xianzhi.aliyun.com/forum/attachment/Mon_1703/14_1150978582736040_635685898d3bfc6.jpg)





![[nlp] 小傻学数据预处理](https://img-blog.csdnimg.cn/img_convert/c9fdc8b9de3183cd848da38828e2f5fc.png)

