计算器可实现加减乘除等一系列运算
方法一:
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); }
参考以上程序也可自己再给里面添加其他的计算器功能
程序运行结果如下