目录
😋前言
计算器大家在生活学习中都接触过,是对于我们运算速度提升的一种很方便的工具。今天,我们就用C语言代码来实现一个简单计算器的功能。在这个过程中,我们会用到循环,函数,指针等一些知识,代码很简单,易理解,大家不用担心,可以很好的理解的。
🫡实现思想
需要设置一个菜单,提示如何操作
我们要可以多次计算,且可以退出计算程序。
我们要用函数将我们需要实现的功能封装起来。
我们要接收函数计算的结果,显示出来。
😏具体代码
😮💨代码一
int add(int x, int y) { return x + y; } //减法 int sub(int x, int y) { return x - y; } //乘法 int mull(int x, int y) { return x * y; } //除法 int div(int x, int y) { return x / y; } //菜单 void menu() { printf("*****************************\n"); printf("*****************************\n"); printf("*****1:add 2:sub*******\n"); printf("*****3:mull 4:div********\n"); printf("*****************************\n"); printf("*****************************\n"); } int main() { int input = 0; int x = 0; int y = 0; menu(); //多次使用 当input==0时,停止 do { printf("请选择:>"); scanf("%d", &input); //根据input的值来选择要计算的方法 switch (input) { case 0: printf("退出程序\n"); break; case 1: printf("请输入:\n"); scanf("%d %d", &x, &y); printf("%d\n", add(x, y)); break; case 2: printf("请输入:\n"); scanf("%d %d", &x, &y); printf("%d\n", sub(x, y)); break; case 3: printf("请输入:\n"); scanf("%d %d", &x, &y); printf("%d\n", mull(x, y)); break; case 4: printf("请输入:\n"); scanf("%d %d", &x, &y); printf("%d\n", div(x, y)); break; //其他数都错误 default: printf("输入错误,请重新选择\n"); break; } } while (input); return 0; }
到这就实现了计算器的功能,但是我们发现这里面的代码有些地方非常的冗余,出现的多组重复的代码,我们一旦要加功能进去,重复的代码就会更加多。
🥳代码二
int add(int x, int y) { return x + y; } //减法 int sub(int x, int y) { return x - y; } //乘法 int mull(int x, int y) { return x * y; } //除法 int div(int x, int y) { return x / y; } //菜单 void menu() { printf("*****************************\n"); printf("*****************************\n"); printf("*****1:add 2:sub*******\n"); printf("*****3:mull 4:div********\n"); printf("*****************************\n"); printf("*****************************\n"); } int main() { int input = 1; int x = 0; int y = 0; int ret = 0; menu(); //函数指针数组 //将函数的地址都作为一个指针放到arr数组中了 //这就是一个转移表 int (*arr[5])(int, int) = { NULL, add, sub, mull, div }; //input为0退出 其他继续 while (input) { printf("请选择:>"); scanf("%d", &input); if (input <= 4 && input >= 1) { printf("请输入:"); scanf("%d %d", &x, &y); //通过函数指针解引用找到函数求值赋给ret ret = (*arr[input])(x, y); printf("%d\n", ret); } else if (input == 0) printf("退出程序\n"); else printf("输入错误,请重新输入\n"); } return 0; }
现在的代码就已经很简洁了,再想加功能,直接将加进来的函数指针放到arr数组中,代码也不会变得冗余,且容易增加。这里我们就是运用了函数指针数组的作用,做了一个转移表,将函数指针放到arr数组中,通过数组来找到函数。