一个简易计算器实现(c语言)

该程序使用c语言实现了一个简易的计算器,该计算器具有以下功能:

1、设计功能选择界面,实现菜单选择、数据输入和输出的功能;
2、至少自定义五个子函数分别完成加、减、乘、除以及求模运算功能;
3、考虑代码的健壮性和功能的合理性,比如除法中除数不可为零、输入有误有提示等特殊情况。

#include <stdio.h>// 函数声明
int add(int a, int b);
int subtract(int a, int b);
int multiply(int a, int b);
float divide(int a, int b);
int modulo(int a, int b);int main() {int option;int num1, num2;int result;float fresult;// 循环显示菜单选择while (1) {printf("\n--- 简易计算器 ---\n");printf("1. 加法\n");printf("2. 减法\n");printf("3. 乘法\n");printf("4. 除法\n");printf("5. 求模\n");printf("0. 退出\n");printf("请输入选项:");scanf("%d", &option);// 根据选项执行相应的操作switch(option) {case 1:printf("请输入两个整数:");scanf("%d %d", &num1, &num2);result = add(num1, num2);printf("结果:%d\n", result);break;case 2:printf("请输入两个整数:");scanf("%d %d", &num1, &num2);result = subtract(num1, num2);printf("结果:%d\n", result);break;case 3:printf("请输入两个整数:");scanf("%d %d", &num1, &num2);result = multiply(num1, num2);printf("结果:%d\n", result);break;case 4:printf("请输入两个整数:");scanf("%d %d", &num1, &num2);fresult = divide(num1, num2);printf("结果:%f\n", fresult);break;case 5:printf("请输入两个整数:");scanf("%d %d", &num1, &num2);result = modulo(num1, num2);printf("结果:%d\n", result);break;case 0:printf("退出程序\n");return 0;default:printf("无效选项,请重新输入\n");break;}}return 0;
}// 加法函数
int add(int a, int b) {return a + b;
}// 减法函数
int subtract(int a, int b) {return a - b;
}// 乘法函数
int multiply(int a, int b) {return a * b;
}// 除法函数
float divide(int a, int b) {if (b == 0) {printf("除数不能为0\n");return 0;}return (float)a / b;
}// 求模函数
int modulo(int a, int b) {if (b == 0) {printf("除数不能为0\n");return 0;}return a % b;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/172766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode17.电话号码的字母组合

写这题的时候没有啥DFS思路&#xff0c;感觉还是DFS没刷明白&#xff0c;还需要多提高 参考链接&#xff1a; 【还得用回溯算法&#xff01;| LeetCode&#xff1a;17.电话号码的字母组合-哔哩哔哩】 https://b23.tv/oTuy71C class Solution {public List<String> lette…

基于springboot实现高校食堂移动预约点餐系统【项目源码】计算机毕业设计

基于springboot实现高校食堂移动预约点餐系统演示 Java语言简介 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备…

如何减少40%的Docker构建时间

随着Docker的普及&#xff0c;许多公司的产品会将组件构建为Docker镜像。但随着时间的推移&#xff0c;一些镜像变得越来越大&#xff0c;对应的CI构建也变得越来越慢。 如果能在喝完一杯咖啡的时间&#xff08;不超过5分钟&#xff09;内完成构建&#xff0c;将是一个理想状态…

Proteus仿真--基于字符液晶显示的频率计

本文介绍基于数码管的频率计&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 本设计中80C51单片机作为主控&#xff0c;用字符液晶作为显示模块&#xff0c;按下按键K1后可进行频率测量并显示 仿真运行视频 Proteus仿真--基于字符液晶显示的频率计 附完…

设计模式—接口隔离原则(ISP)

1.背景 2002 年罗伯特C.马丁给“接口隔离原则”的定义是&#xff1a;客户端不应该被迫依赖于它不使用的方法&#xff08;Clients should not be forced to depend on methods they do not use&#xff09;。该原则还有另外一个定义&#xff1a;一个类对另一个类的依赖应该建立…

sql语句在字段中使用select

有两个表如下&#xff1b;产品表&#xff0c;产品评论表&#xff1b; 查询全部产品信息和每种产品的评论数量&#xff1b; 这也是子查询的一种&#xff1b; select * from product1; select * from comment; SELECT product1.*,(select count(id) from comment where product1…

Flutter学习(六)EventBus的使用

背景 项目开发过程中&#xff0c;有些场景&#xff0c;需要跨页面进行数据传递。按照安卓开发的思路&#xff0c;在flutter实现一个事件总线EventBus&#xff0c;进行数据传递 原理 通过dart的签名函数&#xff0c;进行监听集合设置&#xff0c;然后post分发的时候&#xff…

PCIE链路训练-状态机描述3

Configuration.Idle 1.当使用8b/10b编码时&#xff0c;non-flit模式下&#xff0c;在所用配置的lane上发送s Idle data Symbols&#xff0c;在flit mode下发送IDLE flit。 2.linkup 0 link两端的component均支持64.0GT/s的速率&#xff0c;根据进入此状态之前发送的8个TS2或…

【Linux】进程间通信

进程间通信 1. 进程间通信介绍1.1 进程间通信目的1.2 进程间通信发展1.3 进程间通信分类1.4 进程间通信的本质理解 2. 管道3. 匿名管道3.1 pipe()函数3.2 站在文件描述符角度-深度理解管道3.3 站在内核角度-管道本质3.4 匿名管道使用步骤3.4 管道读写规则3.5 管道的读与写的五种…

html标签的属性——disabled与readonly区别

一、介绍readonly和disabled作用 readonly和disabled 两种属性的写法,如 <input type="text" name="name"value="xxx” readonly="true"/> <input type="text"name="name" value="xxx" disabled…

一文带你了解机器翻译的前世今生

引言 我们都知道谷歌翻译&#xff0c;这个网站可以像变魔术一样在100 种不同的人类语言之间进行翻译。它甚至可以在我们的手机和智能手表上使用&#xff1a; 谷歌翻译背后的技术被称为机器翻译。它的出现改变了世界交流方式。 事实证明&#xff0c;在过去几年中&#xff0c;深…

springboot核心原理之@SpringbootApplication

1.SpringbootApplication Configuration标志的类 在spring ioc启动的时候就会加载创建这个类对象 EnableAutoConfiguration 中有两个注解 &#xff08;1&#xff09;AutoConfigurationPackage 扫描主程序包(主程序main所在包及其子包) 可以看到这个类 &#xff1a; static c…

Java多线程并发中部分不并发的问题

写Java实验发现个有意思的问题 三个线程&#xff0c;一个线程打印字符a&#xff0c;一个线程打印字符b&#xff0c;另一个线程打印数字&#xff0c;多次运行结果都是先打印混合输出的ab&#xff0c;完了再打印数字 有图有真相&#xff0c;我运行了10次 完整的代码是这个 clas…

jar包不挂断地运行命令

nohup java -jar wpfx.jar com.xiaobai.wpfx.WpfxApplication > ./demo.log 2>&1 &这段命令主要是用来在后台运行一个Java应用程序&#xff0c;并将输出日志写入到demo.log文件中。下面是每个参数的解释&#xff1a; nohup&#xff1a;表示不挂断地运行命令&…

Elasticsearch:LangChain 是什么?

当你将应用程序称为 “AI&#xff08;人工智能&#xff09;” 时&#xff0c;这通常意味着它包含与学习模型&#xff08;例如大型语言模型&#xff0c;或 LLM&#xff09;的交互。 [不那么]有趣的事实是&#xff0c;LLM 的使用实际上并不是使应用程序变得智能的原因。 它的特殊…

显示器校准软件BetterDisplay Pro mac中文版介绍

BetterDisplay Pro mac是一款显示器校准软件&#xff0c;可以帮助用户调整显示器的颜色和亮度&#xff0c;以获得更加真实、清晰和舒适的视觉体验。 BetterDisplay Pro mac软件特点 - 显示器校准&#xff1a;可以根据不同的需求和环境条件调整显示器的颜色、亮度和对比度等参数…

数据里有{1,2,3,4,5,6,7,8,9},请随机打乱顺序,生成一个新的数组

问题&#xff1a;数据里有{1,2,3,4,5,6,7,8,9}&#xff0c;请随机打乱顺序&#xff0c;生成一个新的数组。 思路&#xff1a; 旧数组 nums&#xff0c;新数组 newNums 1、先创建一个新数组&#xff0c;用来存打乱数据后的元素&#xff0c;新旧数组的长度要一致 2、然后遍历数组…

OpenCV检测圆形东西是否存在缺口?

文章目录 前言一、试过的方法二、最终使用的方法1.先极坐标变换2.计算斜率 总结 前言 想了挺久&#xff0c;一直没解决这个问题。后面勉强解决了。 一、试过的方法 1.想用圆度来解决&#xff0c;后来发现圆度差值很小&#xff0c;完整的圆圆度0.89&#xff0c;然后有缺角的圆圆…

二十七、微服务案例

目录 一、实现输入搜索功能 1、下载代码&#xff0c;在idea上打开 2、新建RequestParams类&#xff0c;用于接收解析请求 3、在启动类中加入客户端地址Bean&#xff0c;以便实现服务 4、编写搜索方法 5、新建返回分页结果类 6、实现搜索方法 7、编写控制类&#xff0c;…

4.前端--HTML标签-表格列表表单【2023.11.25】

1.表格 1.1表格的作用 表格的作用&#xff1a;表格主要用于显示、展示数据 1.2表格的基本格式 <table><tr><td>单元格内的文字</td><td>单元格内的文字</td>...</tr>... </table><table> </table> 是用于定义表…