通过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);
}
参考以上程序也可自己再给里面添加其他的计算器功能
程序运行结果如下