网站优化建设安徽,泰州专业做网站的公司,wordpress线上安装,上海 网站制作作者主页#xff1a;paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者#xff1a;大家好#xff0c;我是paper jie#xff0c;感谢你阅读本文#xff0c;欢迎一建三连哦。 本文录入于《C语言》专栏#xff0c;本专栏是针对于大学生#xff0c;编程小白精心打造… 作者主页paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者大家好我是paper jie感谢你阅读本文欢迎一建三连哦。 本文录入于《C语言》专栏本专栏是针对于大学生编程小白精心打造的。笔者用重金(时间和精力)打造将C语言基础知识一网打尽希望可以帮到读者们哦。 其他专栏《系统解析C语言》《算法详解》《C语言-语法篇》 内容分享本期将用C语言实现一个简单的计算器各位看官姥爷快搬好小板凳坐好叭。 -------- 不要998不要98只要一键三连三连买不了吃亏买不了上当 目录
前言
实现思想
具体代码
代码一
代码二 前言
计算器大家在生活学习中都接触过是对于我们运算速度提升的一种很方便的工具。今天我们就用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();//多次使用 当input0时停止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);//通过函数指针解引用找到函数求值赋给retret (*arr[input])(x, y);printf(%d\n, ret);}else if (input 0)printf(退出程序\n);elseprintf(输入错误请重新输入\n);}return 0;
}
现在的代码就已经很简洁了再想加功能直接将加进来的函数指针放到arr数组中代码也不会变得冗余且容易增加。这里我们就是运用了函数指针数组的作用做了一个转移表将函数指针放到arr数组中通过数组来找到函数。