write in front
大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流
2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金 ⇿InfoQ创作者~周榜77»总榜2226
本文由 謓泽原创 CSDN首发如需转载还请通知⚠
个人主页:打打酱油desuCSDN博客
欢迎各位→点赞 + 收藏⭐️ + 留言
系列专栏:YY_謓泽的博客-CSDN博客[〇~①]
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本
计算器の目录
write in front
实现逻辑
普通代码实现
高级代码实现
运行结果
最后
实现逻辑
首先创建菜单(menu),把我们需要实现的功能打印到运行栏屏幕上。
1、实现加法计算
2、实现减法计算
3、实现除法计算
4、实现乘法计算
0、退出计算器
当然以上都是属于最基本的计算,你当然还可以实现一些其它计算。例如:
位运算(按位与、按位或、按位异或)
左移操作符、右移操作符、取模、开平方等…
由于道理都是一样的只是 return 返回值就可以了在这里不再多述,也有些可以使用库函数直接引用即可像sqrt()、pow()等……
普通代码实现
计算器⇲の普通代码实现如下⇩
#define _CRT_SECURE_NO_WARNINGS 1#includevoid menu(){printf("|-------- 计算器 --------|\n");printf("|-------★ 1.Add ★------|\n");printf("|-------★ 2.Sub ★------|\n");printf("|-------★ 3.Mul ★------|\n");printf("|-------★ 4.Div ★------|\n");printf("|-------★ 0.Exit★------|\n");}double Add(double x, double y){return x + y;}double Sub(double x, double y){return x - y;}double Mul(double x, double y){return x * y;}double Div(double x, double y){return x / y;}int main(void){menu();double x = 0.0;double y = 0.0;double ret = 0.0;int input = 0;do{printf("请输入菜单界面(input):");scanf("%d", &input);switch (input){case 0:printf("Exit!\n");break;case 1:printf("请输入两个数字:");scanf("%lf %lf", &x, &y);ret = Add(x, y);printf("ret = %.2lf\n", ret);break;case 2:printf("请输入两个数字:");scanf("%lf %lf", &x, &y);ret = Sub(x, y);printf("ret = %.2lf\n", ret);break;case 3:printf("请输入两个数字:");scanf("%lf %lf", &x, &y);ret = Mul(x, y);printf("ret = %.2lf\n", ret);break;case 4:printf("请输入两个数字:");scanf("%lf %lf", &x, &y);ret = Div(x, y);printf("ret = %.2lf\n", ret);break;default:printf("你输入的数字错误,请重新输入!\n");break;}} while (input);return 0;}
高级代码实现
计算器⇲の高级代码实现如下⇩
#define _CRT_SECURE_NO_WARNINGS 1#includevoid menu(){printf("|-------- 计算器 --------|\n");printf("|-------★ 1.Add ★------|\n");printf("|-------★ 2.Sub ★------|\n");printf("|-------★ 3.Mul ★------|\n");printf("|-------★ 4.Div ★------|\n");printf("|-------★ 0.Exit★------|\n");}double Add(double x, double y){return x + y;}double Sub(double x, double y){return x - y;}double Mul(double x, double y){return x * y;}double Div(double x, double y){return x / y;}int main(void){menu();double(*p[5])(double, double) = { NULL, Add, Sub, Mul, Div };//函数指针数组!int input = 0;do{printf("请输入菜单界面上数字:");scanf("%d", &input);if (input >= 1 && input <= 4){double x = 0.0, y = 0.0;printf("请输入两个数字:");scanf("%lf %lf", &x, &y);double ret = (*p[input])(x, y);//下标引用printf("ret = %.2lf\n", ret);printf("-------\n");}else if (input == 0){printf("Exit退出\n");break;}else{printf("你输入数字不在范围之内,请重新输入!\n");}} while (input);return 0;}
运行结果
加法运行结果↓
减法运行结果↓
乘法运行结果↓
除法运行结果↓
退出exit↓
输入错误↓
最后
实现C语言这种计算器简易的是比较容易的,在这里我们使用的普通代码和高级代码的实现本计算器初学者可能会用到普通代码的实现,但是如果你学过函数指针数组你就可以用这种高级代码的实现方法来做本题,不会指针或者不太了解可以看看博主写过的指针系列的文章如下所示↓
⒈⇨【C语言】万字速通初阶指针 zero → One_謓泽的博客-CSDN博客
⒉⇨【C语言】⒉万字带你玩转高阶指针『0»1』_謓泽的博客-CSDN博客
如果你这里,不用函数指针数组去实现实际上也可以,但是代码量会冗余。推荐使用函数指针的方法来进行实现,效率大大滴提高。
注意⇨这样写它的函数参数必须是统一的才可以。
看到这里了,点个赞吧