C语言|C语言实现简单计算器

目录
1.实现目标
2.实现方法
【C语言|C语言实现简单计算器】1.回调函数法
2.函数指针数组法
1.实现目标 我们要实现一个简易计算器,提供可选择功能包括加,减,乘,除,取模和异或。
2.实现方法 1.回调函数法 首先我们需要打印一个计算器菜单供使用者选择计算类型,我们可以自定义简单的菜单函数menu,再利用do while循环加switch语句完成用户选则功能,具体实现方法可以看我的另一篇博客:猜数字游戏。如果是在每一个case里进行打印提示和,输入数字和函数调用会显得非常繁冗,并且不利于新运算类型的添加,我们可以将其改进:将以上数条语句包装,利用一个函数Calc来实现我们将不同的运算函数的地址传入Calc函数,利用函数指针接收,在内部进行调用。程序形式便得到简化。

void menu() { printf("***************************\n"); printf("***** 1.加法2.减法*****\n"); printf("***** 3.乘法4.除法*****\n"); printf("***** 5.取模6.异或*****\n"); printf("*****0.exit*****\n"); printf("***************************\n"); } 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 Dvi(int x, int y) { return x / y; } int Mol(int x, int y) { return x%y; } int Xor(int x, int y) { return x^y; } void Calc(int(*p)(int, int)) { int a, b; printf("请输入运算数"); scanf("%d%d", &a, &b); printf("%d\n", (*p)(a, b)); } int main() { int input; do { menu(); printf("请选择运算\n"); scanf("%d", &input); switch (input) { case 1: Calc(Add); break; case 2: Calc(Sub); break; case 3: Calc(Mul); break; case 4: Calc(Dvi); break; case 5: Calc(Mol); break; case 6: Calc(Xor); break; case 0: printf("退出成功\n"); break; default: printf("输入错误,请重新输入\n"); break; } } while (input); return 0; }

2.函数指针数组法 我们还有一种方法可以更加方便地解决上述问题:将几个基本运算函数用数组的形式存储和调用,这便用到了函数指针数组,这样做还有一个好处:switch语句也不需要了。
void menu() { printf("****************************\n"); printf("***** 1.加法2.减法 ******\n"); printf("***** 3.乘法4.除法 ******\n"); printf("***** 5.取模6.异或 ******\n"); printf("*****0.exit******\n"); printf("****************************\n"); } 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 Dvi(int x, int y) { return x/y; } int Mol(int x, int y) { return x%y; } int Xor(int x, int y) { return x^y; } int main() { int input,a,b; do { menu(); printf("请选择计算类型>:"); scanf("%d", &input); if (0:"); scanf("%d%d", &a, &b); int(*Fun[])(int, int) = { 0, Add, Sub, Mul, Dvi, Mol, Xor }; printf("%d\n", Fun[input](a, b)); } else if (input==0) { printf("计算器关闭\n"); } else { printf("输入错误\n"); break; } } while (input); return 0; }



    推荐阅读