C++写一个简单的计算器程序案例
1. 编写C++源代码
创建一个名为 advanced_calculator.cpp 的文件,并编写以下代码:
// advanced_calculator.cpp
#include <iostream>
#include <limits>int main() {char operatorChoice;bool keepRunning = true;while (keepRunning) {int num1, num2, result;std::cout << "请输入第一个操作数 (num1): ";if (!(std::cin >> num1)) {std::cin.clear();std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');std::cout << "错误:无效的输入。请输入一个整数。" << std::endl;continue;}std::cout << "请输入运算符 (+, -, *, /): ";if (!(std::cin >> operatorChoice)) {std::cin.clear();std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');std::cout << "错误:无效的输入。请输入一个有效的运算符。" << std::endl;continue;}std::cout << "请输入第二个操作数 (num2): ";if (!(std::cin >> num2)) {std::cin.clear();std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');std::cout << "错误:无效的输入。请输入一个整数。" << std::endl;continue;}switch (operatorChoice) {case '+':result = num1 + num2;std::cout << "结果是 " << num1 << " + " << num2 << " = " << result << std::endl;break;case '-':result = num1 - num2;std::cout << "结果是 " << num1 << " - " << num2 << " = " << result << std::endl;break;case '*':result = num1 * num2;std::cout << "结果是 " << num1 << " * " << num2 << " = " << result << std::endl;break;case '/':if (num2 != 0) {result = num1 / num2;std::cout << "结果是 " << num1 << " / " << num2 << " = " << result << std::endl;} else {std::cout << "错误:除数不能为零。" << std::endl;}break;default:std::cout << "错误:无效的运算符。" << std::endl;}std::cout << "是否继续计算?(y/n): ";char choice;std::cin >> choice;if (std::tolower(choice) != 'y') {keepRunning = false;}std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 清除输入缓冲区}return 0;
}
2. 编译C++代码
在命令行中,使用C++编译器(如g++)来编译代码。假设你的源代码文件名为 calculator.cpp,你可以使用以下命令来编译它:
g++ advanced_calculator.cpp -o advanced_calculator
这个命令会生成一个名为 calculator 的可执行文件(在Windows上可能是 calculator.exe)。
3. 运行可执行程序
编译成功后,你可以在命令行中运行生成的可执行文件:
./advanced_calculator # 在Unix-like系统上(如Linux或macOS)
advanced_calculator # 在Windows系统上(如果路径正确或文件在当前目录下)
运行程序后,它将提示你输入两个操作数和一个运算符,然后显示计算结果。
注意事项
确保你的系统中已经安装了C++编译器(如g++)。
在编译时,确保你当前的工作目录是包含源代码文件的目录。
在运行可执行文件时,确保你的当前工作目录或文件路径是正确的。
在除法操作中,我们检查除数是否为零,以避免运行时错误。
相关文章:
C++写一个简单的计算器程序案例
1. 编写C源代码 创建一个名为 advanced_calculator.cpp 的文件,并编写以下代码: // advanced_calculator.cpp #include <iostream> #include <limits>int main() {char operatorChoice;bool keepRunning true;while (keepRunning) {int nu…...
Spring Boot 开发 -- swagger3.0 集成
前言 随着微服务架构的普及和API数量的增长,API文档的管理和维护变得尤为重要。Swagger作为一款强大的API文档生成工具,能够帮助我们自动生成API文档,并提供在线测试功能,极大地提高了开发效率。本文将介绍如何在Spring Boot项目…...
探索安全之道 | 企业漏洞管理:从理念到行动
如今,网络安全已经成为了企业管理中不可或缺的一部分,而漏洞管理则是网络安全的重中之重。那么企业应该如何做好漏洞管理呢?不妨从业界标准到企业实践来一探究竟!通过对业界标准的深入了解,企业可以建立起完善的漏洞管…...
【记录贴:分布式系列文章】
分布式系列文章目录 文章目录 分布式系列文章目录前言一、Redisq1.怎么判断是否命中缓存1. MySQL数据库如何检查询查缓存是否命中链接2.如何判断redis是否命中缓存链接 q2.Redis缓存穿透、雪崩、击穿以及分布式锁和本地锁 二、分布式q1.分布式订单号生成策略q2.接口幂等性,防止…...
初识SDN(二)
初识SDN(二) SDN部分实现 REST API 是什么? REST API(Representational State Transfer Application Programming Interface,表述性状态传递应用程序接口)是一种基于HTTP协议的接口,广泛用于…...
某红书旋转滑块验证码分析与协议算法实现(高通过率)
文章目录 1. 写在前面2. 接口分析3. 验证轨迹4. 算法还原 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致…...
Gin的快速入门和搭建
文章目录 Go的工程工程架构技术选型 Gin入门 Go的工程 基于Go生态,构建一个支持内容管理,内容加工、内容分发的内容库系统。 内容管理:增删改查内容加工:例如内容审核、推荐等内容分发:将内容可以推到不同的业务线 …...
react-native运行程序 出现 Application XXX is waiting for the debugger
1.重启adb: adb kill-server、 adb start-server. 2、确定USB调试模式是否开启,如果已经开启了,关闭了重新打开一下 3.选择调试模式并关闭等待调试程序...
什么文档加密软件好用?迅软DSE加密软件你不会还不知道吧?
一、什么文档加密软件好用? 其中有迅软DSE文档加密软件等。 迅软DSE加密软件:让企业的创意成果、招投标文件、生产工艺、流程配方、研发成果、公司计划、员工信息等核心数据更安全。 多方面加密模式,有效防止数据泄密 透明无感知加密&…...
【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路
目录 一、污点(Taint) 1.1污点介绍 1.2污点的组成格式 1.3当前 taint effect 支持如下三个选项: 1.4污点的增删改查 1.4.1验证污点的作用——NoExecute 1.4.2验证污点的作用——NoSchedule 1.4.3 验证污点的作用——PreferNoSchedule 1.5污点的配置与管理…...
linux进程加载和启动过程分析
我们的源代码通过预处理,编译,汇编,链接后形成可执行文件,那么当我们在终端敲下指令$ ./a.out argv1 argv2 后,操作系统是怎么将我们的可执行文件加载并运行的呢? 首先知道,计算机的操作系统的启动程序是写死在硬件上的,每次计算机上电时,都将自动加载启动程序,之后…...
WLAN组网模型探究
目录 一、WLAN基本概念二、WLAN组网方式三、WLAN转发模型 随着信息技术的飞速发展,无线局域网(WLAN)已逐渐成为企业网络架构中不可或缺的一部分。不同的企业组织因其业务特性、规模大小及安全需求的不同,对WLAN的要求也各有侧重。…...
操作系统基础知识
一. 进程 进程是正在运行中的程序,是动态的 进程是资源分配的最小单位 进程的基本特征:动态性,并发性,独立性,异步性 二. 线程 线程在执行过程中的每一个任务就是一个线程 进程是由一个或多个线程组成࿰…...
Kompas AI:智能生活的开启者
引言 在现代社会,**人工智能(AI)**已经深刻地影响了我们的生活和工作。无论是智能家居、自动驾驶,还是医疗诊断,AI的应用无处不在。而在众多AI平台中,Kompas AI 作为一个先进的对话式AI平台,通过…...
Java——二进制原码、反码和补码
一、简要介绍 原码、反码和补码只是三种二进制不同的表示形式,每个二进制数都有这三个形式。 1、原码 原码是将一个数的符号位和数值位分别表示的方法。 最高位为符号位,0表示正,1表示负,其余位表示数值的绝对值。 例如&…...
git使用流程
1.下载git 搜索下载 2.注册github账号(打开爬墙工具) 创建一个仓库 3.配置邮箱和密码 4.所以找一个文件夹 鼠标右键 选择 open Git Bash here(当前文件夹下打开命令行) 输入命令 配置用户名和邮箱 5.将建的仓库克隆下来 …...
C++设计模式|结构型 代理模式
1.什么是代理模式? 代理模式Proxy Pattern是一种结构型设计模式,用于控制对其他对象的访问。 在代理模式中,允许一个对象(代理)充当另一个对象(真实对象)的接口,以控制对这个对象的…...
C语言 带头双向循环链表的基本操作
带头双向循环链表的基本操作 结构体定义初始化创建新节点头插头删尾插尾删查找在指定位置之后插入删除指定位置的值打印 结构体定义 typedef int DataType; typedef struct LinkNode {DataType data;struct LinkNode* prev;struct LinkNode* next; }LNode;初始化 有两种初始化…...
MATLAB中扩展卡尔曼滤波误差估计的关键点
在MATLAB中,对于扩展卡尔曼滤波(EKF)的误差估计,主要涉及对系统状态估计的准确性和精度的评估。EKF是一种适用于非线性系统的状态估计方法,它通过递归的方式,结合系统的动态模型和观测模型,来预…...
SpringBoot温习
1.1 Spring Boot Spring Boot是一个开源的Java框架,由Pivotal团队(现在是VMware的一部分)开发,它是Spring框架的一个模块,旨在简化Spring应用程序的初始搭建以及开发过程。 Spring Boot的核心目标是让开发者尽可能…...
CANN/asc-devkit asc_any函数
asc_any 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/ca…...
Show-o多模态理解:图像描述和视觉问答的终极解决方案
Show-o多模态理解:图像描述和视觉问答的终极解决方案 【免费下载链接】Show-o [ICLR & NeurIPS 2025] Repository for Show-o series, One Single Transformer to Unify Multimodal Understanding and Generation. 项目地址: https://gitcode.com/gh_mirrors/…...
BetterDiscord Installer完全指南:如何一键安装和优化Discord插件
BetterDiscord Installer完全指南:如何一键安装和优化Discord插件 【免费下载链接】Installer A simple standalone program which automates the installation, removal and maintenance of BetterDiscord. 项目地址: https://gitcode.com/gh_mirrors/ins/Instal…...
不只是YOLOv5!详解Windows‘页面文件太小’错误的通用解决思路与内存优化技巧
不只是YOLOv5!详解Windows‘页面文件太小’错误的通用解决思路与内存优化技巧 当你在深夜赶工一个重要的机器学习项目,或是渲染一段4K视频时,突然弹出一个冰冷的错误提示:"页面文件太小,无法完成操作"。这一…...
将OpenSSH集成到OpenHarmony系统镜像:从编译到system分区的完整部署流程
OpenHarmony系统镜像中集成OpenSSH的工程化实践 在物联网设备快速普及的今天,安全远程管理成为嵌入式系统开发中不可或缺的一环。作为开源鸿蒙生态的核心,OpenHarmony系统需要提供完善的远程访问能力,而OpenSSH作为行业标准的加密通信工具&am…...
STM32F407VE的FSMC时序调优笔记:如何让320x480的ILI9488屏幕刷得更快更稳
STM32F407VE的FSMC时序调优笔记:如何让320x480的ILI9488屏幕刷得更快更稳 当一块320x480分辨率的ILI9488屏幕在STM32F407VE上成功点亮后,真正的挑战才刚刚开始。许多工程师会发现,虽然屏幕能显示内容,但刷新率低下、画面闪烁甚至偶…...
5015系列圆形连接器选型避坑指南
【导语】 在做工业设备或者车载系统时,连接器看似一个小零件,却往往是整个系统失效的重灾区。最近在复盘几个项目故障案例时发现,很多工控设备在振动和潮湿环境下宕机,根源都出在连接器选型不当上。今天我们就来深扒一下业内经典的…...
别再搜组策略了!Windows 11家庭版设置密码永不过期的3个命令行方法(实测有效)
Windows 11家庭版密码永不过期终极指南:抛弃组策略的3种命令行方案 每次开机都要重新设置密码?Windows 11家庭版用户常常陷入这种困扰。与专业版不同,家庭版系统阉割了组策略编辑器这个关键工具,让普通用户面对密码过期问题时束手…...
JMeter 实战:JSON 响应中文节点 + 数值精准断言(附真实接口案例)
前言在接口自动化测试、性能测试过程中,JSON 断言是 JMeter 最常用的校验方式。日常开发中经常遇到JSON 键为中文、数组嵌套、浮点数金额校验等场景,很多同学会出现路径写错、数值匹配失败、中文节点解析异常等问题。本文以真实业务接口返回数据为例&…...
甲级钢制隔热平开防火窗:技术参数、结构工艺与工程应用解析
一、产品概述甲级钢制隔热平开防火窗严格依照国家消防标准制造,采用加厚冷轧镀锌钢板打造框架,搭配防火填充材料、隔热防火玻璃与专用密封配件,防火隔热、密闭性强,耐用抗腐蚀。相较于低等级防火窗,本品耐火隔热性能更…...
