用C语言实现一个简易的计算器
计算器可实现加减乘除的功能
首先写一个简单都菜单函数menu:
void menu() { printf("******************************************* "); printf("******1.add 2. sub ********* "); printf("******3.mul 4.div ********* "); printf("************** 5.exit ******************* "); printf("******************************************* "); }
加减乘除等功能分别写一个函数实现:
int Add(int x, int y) { return x + y; } int Sub(int x, int y) { return x - y; } int Mul(int x, int y) { return x * y; } int Div(int x, int y) { return x / y; }
设计方法一:
创建一个函数指针数组来存放各个函数的地址,通过函数指针数组来访问这些函数
函数指针数组创建:
//pfArr 是一个函数指针数组---转移表 int(*pfArr[])(int, int) = { 0, Add, Sub, Mul, Div, Xor };
通过函数指针数组进行访问函数并传参,具体代码如下:
int main() { int input = 0; int x = 0; int y = 0; //pfArr 是一个函数指针数组---转移表 int(*pfArr[])(int, int) = { 0, Add, Sub, Mul, Div }; do { menu(); printf("请选择:>"); scanf("%d", &input); if (input >= 1 && input <= 4) { printf("请输入两个操作数:>"); scanf("%d%d", &x, &y); int ret = pfArr[input](x, y); printf("%d ", ret); } else if (input == 0) { printf("退出 "); } else { printf("选择错误 "); } } while (input); }
设计方法二:
使用回调函数,通过一个函数指针调用的函数,函数指针作为参数传递给另一个函数,这个指针被用来调用其他指向函数。
函数指针调用的函数:
void Calc(int(*pf)(int, int)) { int x = 0; int y = 0; printf("输入两个操作数:>"); scanf("%d%d", &x, &y); printf("%d ", pf(x, y)); }
int main() { int input = 0; do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case 1: Calc(Add); break; case 2: Calc(Sub); break; case 3: Calc(Mul); break; case 4: Calc(Div); break; case 0: printf("退出 "); break; default: printf("选择错误 "); } } while (input); }
结果展示:
加法:
减法:
乘法:
除法:
下一篇:
单链表及其相关操作(注释详细)