用代码实现一个简单计算器

news/2024/10/18 16:55:08/

作者主页: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();//多次使用 当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);//通过函数指针解引用找到函数求值赋给retret = (*arr[input])(x, y);printf("%d\n", ret);}else if (input == 0)printf("退出程序\n");elseprintf("输入错误,请重新输入\n");}return 0;
}

现在的代码就已经很简洁了,再想加功能,直接将加进来的函数指针放到arr数组中,代码也不会变得冗余,且容易增加。这里我们就是运用了函数指针数组的作用,做了一个转移表,将函数指针放到arr数组中,通过数组来找到函数。



http://www.ppmy.cn/news/386747.html

相关文章

编程必备:JAVA多线程详解

目录 前言 1.入门多线程 1.1. 线程、进程、多线程、线程池 1.2.并发、串行、并行 1.3. 线程的实现方式 1.3.1. 继承 Thread 类 1.3.2. 实现 Runnable 接口 1.3.3. 使用 Callable 和 Future 1.3.4. 使用线程池 1.4.线程的状态 1.5. 线程常用方法 1.5.1 sleep() 1.4…

常用函数调用出错解决办法 ——MATLAB的License到期

matlab调用常用函数或者命令是会报错&#xff0c;错误看不太懂&#xff0c;可能是License到期问题。以下是解决办法&#xff0c;非常简单&#xff0c;请有需要的们拿走不谢。 1找到安装目录下的license.lic文件&#xff08;如D:\Program Files\MATLAB\R2017a\licenses&#xf…

垂直梯形校正画质损失多少_请实测过的朋友说一下,投影仪的水平与垂直梯形校正会使投影画面变小...

匿名用户 1级 2017-07-12 回答 梯形校正是投影机的一项实用的附加功能&#xff0c;可以轻松地校正由于仰射或吊顶投影而产生的画面梯形变形。除低档的视频机外&#xff0c;一般投影机均配有梯形校正的功能。目前主流投影机多采用数字(即电子)梯形校正、数字梯形校正是通过软件插…

智能制造发展方向

智能制造的金字塔 在智能制造的金字塔中&#xff0c;智能产品与智能服务可以帮助企业带来商业模式的创新&#xff1b;智能装备、智能产线、智能车间到智能工厂&#xff0c;可以帮助企业实现生产模式的创新&#xff1b;智能研发、智能管理、智能物流与供应链则可以帮助企业实现运…

中小企业网站优化流程

一、选择项目&#xff0c;项目调查&#xff0c;市场分析。 二、 关键词采集工具 1. 尽量多的采集&#xff0c; 2. 作关键词指数分析&#xff0c; 3. 关键整理出来。 【搜索指数】 分出主关键词&#xff1a;减肥 相关关键词&#xff1a;运动减肥 中医减肥….. 长尾关键词…

中国IT前线战士:蚂蚁雄兵

本文写于2001年。 六年前的那个秋天&#xff0c;我成了标准的村儿里人。 从那以后我学会了说“有”&#xff0c;不管客户说他要什么&#xff0c;除非问我有烟没有。 从那以后我学会了攒机&#xff0c;以至于后来再见穿着衣服的机器就难受。 从那儿以后我学会了吃扣和清一色&…

体外诊断(POCT)之软件介绍

这是2016上半年的研究成果,其中包括了概率统计,密码学,软件逆向,图像编解码,图像识别,多媒体指令优化等多个学科知识的交叉 下面即从技术角度,对所用得到的知识开发的这个产品进行一个简易的描述说明. 扩展阅读: 体外诊断(POCT)之软件入口配置修改 体外诊断(POCT)之系统配置文…

计算机组装与维修统测试卷7,计算机组装与维修》课程学业水平测试卷样卷答案...

《计算机组装与维修》课程学业水平测试卷(样卷) 一、单项选择题&#xff1a;(每题1分&#xff0c;共30分) 1、(B)规定因课堂教学、科学研究等需要对软件进行少量的复制&#xff0c;但要求在使用时加以说明&#xff0c;不得侵犯有关人员的权利。 A、互联网管理条例 B、计算机保护…