当前位置: 首页 > news >正文

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

作者主页: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数组中,通过数组来找到函数。


相关文章:

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

作者主页&#xff1a;paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《C语言》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造…...

运维圣经:挖矿木马应急响应指南

目录 挖矿木马简介 挖矿流程 挖矿木马应急响应 一. 隔离被感染主机 二. 确定挖矿进程 三. 挖矿木马清除 1、阻断矿池地址的连接 2、清除挖矿定时任务、启动项等 3、禁用可疑用户 4、定位挖矿木马文件的位置并删除 5、全盘杀毒、加固 挖矿木马简介 挖矿&#xff1a;…...

【Flutter】Flutter 如何获取安装来源信息

文章目录 一、 前言二、 安装来源信息的基本概念1. 什么是安装来源信息2. 为什么我们需要获取安装来源信息 三、 如何在 Flutter 中获取安装来源信息1. 准备工作2. 安装必要的依赖库3. 编写代码获取安装来源信息 四、 完整示例代码五、总结 一、 前言 在这篇文章中&#xff0c…...

Stimulsoft Reports用户手册:Report Designer介绍

Stimulsoft Reports.Net是一个基于.NET框架的报表生成器&#xff0c;能够帮助你创建结构、功能丰富的报表。StimulReport.Net 的报表设计器不仅界面友好&#xff0c;而且使用便捷&#xff0c;能够让你轻松创建所有报表&#xff1b;该报表设计器在报表设计过程中以及报表运行的过…...

跨模态检索论文阅读:Dissecting Deep Metric Learning Losses for Image-Text Retrieval(GOAL)

Dissecting Deep Metric Learning Losses for Image-Text Retrieval 剖析图像文本检索中的深度度量学习损失 2022.10 视觉语义嵌入&#xff08;VSE&#xff09;是图像-文本检索中的一种流行的应用方法&#xff0c;它通过学习图像和语言模式之间的联合嵌入空间来保留语义的相似性…...

贪心算法part5 | ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

文章目录 435. 无重叠区间思路思路代码困难 763.划分字母区间思路官方题解代码困难 56. 合并区间思路思路代码 今日收获 435. 无重叠区间 思路 重叠问题都需要先排好序&#xff0c;再贪心 思路代码 func eraseOverlapIntervals(intervals [][]int) int {sort.Slice(interva…...

IMX6ULL裸机篇之SPI实验-ICM20608代码实现

一. SPI 实验 SPI实验&#xff1a;学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608&#xff0c;读取 ICM-20608 的六轴数据。 本文学习 SPI通信实验中&#xff0c;涉及从设备的 SPI代码编写。 之前学习了 SPI 主控芯片代码的编写&#xff0c;如下所示&#xff1a; IMX6ULL…...

51单片机读取DS18B20温度传感器

1.首先我们知道DS18B20是单总线协议&#xff0c;只有一根数据线。所以Data数据线即使发送端又是接收端&#xff0c;同时DS18B20内部接了弱上拉电阻&#xff08;如图一所示&#xff09;&#xff0c;数据线默认为高电平。有了这些概念&#xff0c;我们就能进行下一步。 图一&…...

set/map学习

我们要开始学习map和set的使用&#xff0c;虽然使用更加复杂&#xff0c;但是STL整体的设计&#xff0c;本身就具有很强的前瞻性和延续性&#xff0c;比如说迭代器等&#xff0c;我们顺着文档来看。这也是除了vector之外最重要的容器&#xff0c;当然还有unordered_map 和 unor…...

JavaScript Web APIs学习总结

以后声明变量我们有限使用哪一个&#xff1f; const 有了变量先给const&#xff0c;如果发现它后面是要被修改的&#xff0c;再改为let 为什么const声明的对象可以修改里面的属性&#xff1f; 因为对象是引用类型&#xff0c;里面存储的是地址&#xff0c;只要地址不变&…...

萤石摄像头RTSP流获取(黑屏解决)

前言 在获取萤石摄像头RTSP视频流时&#xff0c;视频流获取不成功&#xff0c;黑屏并且一直显示缓冲中。下面对获取过程中查阅的资料和解决方案做一下汇总。 打开RTSP 在萤石云视频APP中打开RTSP&#xff0c;【我的】-【工具】-【局域网设备预览】-【开始扫描】-【选择摄像头…...

ThreadLocal引发的内存泄漏分析

预备知识&#xff08;引用&#xff09; Object o new Object(); 这个o&#xff0c;我们可以称之为对象引用&#xff0c;而new Object()我们可以称之为在内存中产生了一个对象实例。 当写下 onull时&#xff0c;只是表示o不再指向堆中object的对象实例&#xff0c;不代表这个…...

银行数据治理:数据质量管理实践

现代商业银行日常经营活动中积累了大量数据&#xff0c;这些数据除了支持银行前台业务流程运转之外&#xff0c;越来越多地被用于决策支持领域&#xff0c;风险控制、产品定价、绩效考核等管理决策过程也都需要大量高质量数据支持。银行日常经营决策过程的背后&#xff0c;实质…...

2.7V至25V宽输入电压15A 峰值电流

HT7179是一款高功率异步升压转换器&#xff0c;集成 20mΩ功率开关管&#xff0c;为便携式系统提供高效的 小尺寸解决方案。 HT7179具有2.7V至25V宽输入电压范围&#xff0c;可为 采用单节或两节锂电池&#xff0c;或12V铅酸电池的应 用提供支持。该器件具备15A开关电流能力&a…...

Vue 父子组件应用指南:从基础到实战

文章目录 一、创建父组件二、创建子组件三、在父组件中使用子组件四、父子组件之间的通信1. 数据传递2. 事件传递 Vue.js 是一种流行的 JavaScript 框架&#xff0c;用于构建用户界面。其中&#xff0c;父子组件的概念是 Vue 开发中非常重要的一部分。本文将介绍如何使用 Vue 创…...

todotodo

todotodo...

创建autotool项目

GNU Autotools是linux系统一套自动化编译工具&#xff0c;生成的项目可移植&#xff0c;通过configure && make即可生成目标程序。GNU Autotools组件有&#xff1a;autoscan, aclocal, autoconf, automake,autoheader等。 不用管这些工具的原理&#xff0c;只要知道他们…...

计算机概念

计算机的体系结构 计算机俗称“电脑”computer(kəmˈpjuːtə(r))哈哈&#xff0c;本质上就是一台在各个领域被广泛使用的设备&#xff0c;主要由硬件和软件两大部分组成。 常见的硬件&#xff1a;CPU、内存、硬盘、显卡、主板、键盘、显示器、鼠标、... CPU - 中央处理…...

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现

文章目录 TOPSIS简介方法和原理数学定义数学语言描述现实案例 正负理想解定义实例 量纲 TOPSIS法的算法步骤1.用向量规范化的方法求得规范决策矩阵2.构成加权规范阵C(c~ij~)~m*n~3.确定正负理想解的距离4.计算各方案到正理想解与负理想解的距离5.计算各方案的综合评价指数6.排列…...

网络安全(黑客)工具

1.Nmap 它是网络管理员 必用的软件之一&#xff0c;以及用以评估网络系统安全。正如大多数被用于网络安全的工具&#xff0c;nmap 也是不少黑客及骇客&#xff08;又称脚本小子 &#xff09;爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器&#xff…...

基于FreeSWITCH ESL构建高并发智能客服系统的实战指南

在构建智能客服系统时&#xff0c;通信层的稳定与高效是基石。传统的WebSocket或直接SIP处理在高并发场景下&#xff0c;常常面临连接管理复杂、事件处理混乱、资源消耗大等问题。FreeSWITCH作为成熟的软交换平台&#xff0c;其ESL&#xff08;Event Socket Library&#xff09…...

星露谷物语模组加载器SMAPI终极指南:轻松安装与高效管理

星露谷物语模组加载器SMAPI终极指南&#xff1a;轻松安装与高效管理 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 想要让你的《星露谷物语》游戏体验焕然一新吗&#xff1f;SMAPI模组加载器就是你…...

AI建站避坑指南:10个高频问题与风险防范全解析

用AI建站虽然快&#xff0c;但过程中隐藏的风险如果没到&#xff0c;轻则内容效果差&#xff0c;重则可能有版权或合规隐患。这份避坑指南&#xff0c;围绕大家最关心的10个核心问题&#xff0c;给出客观的分析和可操作的防范建议&#xff0c;帮你安心用好AI建站工具。\### 核心…...

专业级实时屏幕翻译工具深度解析:5大实战技巧提升工作效率

专业级实时屏幕翻译工具深度解析&#xff1a;5大实战技巧提升工作效率 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo Tra…...

从学术研究到工业部署,Python张量框架选型决策树(含模型规模×硬件约束×团队能力×合规要求4维评估矩阵)

第一章&#xff1a;从学术研究到工业部署&#xff0c;Python张量框架选型决策树&#xff08;含模型规模硬件约束团队能力合规要求4维评估矩阵&#xff09;在将深度学习模型从论文实验推向生产环境的过程中&#xff0c;张量框架的选择远不止“谁更流行”的简单判断。它是一次多目…...

AI时代求职必懂的8大核心技术陷阱,最强就业指南

AI求职八股文大变革&#xff1a;不会这些新技术&#xff0c;下一个淘汰的就是你&#xff01;&#xff08;100个夺命真题解析&#xff09;&#x1f480; 警告&#xff1a; 如果你还在背那些“HashMap底层原理”和“三次握手四次挥手”&#xff0c;请立刻停止&#xff01;AI面试官…...

GIS工作者必看:如何用SimpleGIS插件解决遥感影像配准难题(含Bing/天地图无偏移地图技巧)

GIS工程师实战指南&#xff1a;SimpleGIS插件在遥感影像配准中的高阶应用 遥感影像配准是GIS工作中的基础操作&#xff0c;却也是最容易出错的环节之一。作为一名长期与影像数据打交道的GIS工程师&#xff0c;我深知配准偏差带来的困扰——从项目返工到数据可信度质疑&#xff…...

AR.js测试自动化终极指南:使用WebDriverIO进行高效AR应用功能测试

AR.js测试自动化终极指南&#xff1a;使用WebDriverIO进行高效AR应用功能测试 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js AR.js是一个强大的Web增强现实库&…...

langchain核心组件1-智能体

这里写目录标题简介基础使用静态模型使用动态模型简介 langchain版本 v1.x 在此版本中&#xff0c;langchain可以创建一个智能体 基础使用 我日常使用因为是直接对话&#xff0c;所以基本上只需要以下几个组件 model&#xff1a; 定义智能体大脑&#xff0c;是大语言模型地…...

百川2-13B量化版调优指南:提升OpenClaw任务成功率的关键参数

百川2-13B量化版调优指南&#xff1a;提升OpenClaw任务成功率的关键参数 1. 为什么需要专门调优百川模型参数&#xff1f; 第一次用OpenClaw对接百川2-13B量化版时&#xff0c;我遇到了典型的"自动化尴尬"——明明是个简单的文件整理任务&#xff0c;AI却总在奇怪的…...