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

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 的文件&#xff0c;并编写以下代码&#xff1a; // advanced_calculator.cpp #include <iostream> #include <limits>int main() {char operatorChoice;bool keepRunning true;while (keepRunning) {int nu…...

Spring Boot 开发 -- swagger3.0 集成

前言 随着微服务架构的普及和API数量的增长&#xff0c;API文档的管理和维护变得尤为重要。Swagger作为一款强大的API文档生成工具&#xff0c;能够帮助我们自动生成API文档&#xff0c;并提供在线测试功能&#xff0c;极大地提高了开发效率。本文将介绍如何在Spring Boot项目…...

探索安全之道 | 企业漏洞管理:从理念到行动

如今&#xff0c;网络安全已经成为了企业管理中不可或缺的一部分&#xff0c;而漏洞管理则是网络安全的重中之重。那么企业应该如何做好漏洞管理呢&#xff1f;不妨从业界标准到企业实践来一探究竟&#xff01;通过对业界标准的深入了解&#xff0c;企业可以建立起完善的漏洞管…...

【记录贴:分布式系列文章】

分布式系列文章目录 文章目录 分布式系列文章目录前言一、Redisq1.怎么判断是否命中缓存1. MySQL数据库如何检查询查缓存是否命中链接2.如何判断redis是否命中缓存链接 q2.Redis缓存穿透、雪崩、击穿以及分布式锁和本地锁 二、分布式q1.分布式订单号生成策略q2.接口幂等性,防止…...

初识SDN(二)

初识SDN&#xff08;二&#xff09; SDN部分实现 REST API 是什么&#xff1f; REST API&#xff08;Representational State Transfer Application Programming Interface&#xff0c;表述性状态传递应用程序接口&#xff09;是一种基于HTTP协议的接口&#xff0c;广泛用于…...

某红书旋转滑块验证码分析与协议算法实现(高通过率)

文章目录 1. 写在前面2. 接口分析3. 验证轨迹4. 算法还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致…...

Gin的快速入门和搭建

文章目录 Go的工程工程架构技术选型 Gin入门 Go的工程 基于Go生态&#xff0c;构建一个支持内容管理&#xff0c;内容加工、内容分发的内容库系统。 内容管理&#xff1a;增删改查内容加工&#xff1a;例如内容审核、推荐等内容分发&#xff1a;将内容可以推到不同的业务线 …...

react-native运行程序 出现 Application XXX is waiting for the debugger

1.重启adb: adb kill-server、 adb start-server. 2、确定USB调试模式是否开启&#xff0c;如果已经开启了&#xff0c;关闭了重新打开一下 3.选择调试模式并关闭等待调试程序...

什么文档加密软件好用?迅软DSE加密软件你不会还不知道吧?

一、什么文档加密软件好用&#xff1f; 其中有迅软DSE文档加密软件等。 迅软DSE加密软件&#xff1a;让企业的创意成果、招投标文件、生产工艺、流程配方、研发成果、公司计划、员工信息等核心数据更安全。 多方面加密模式&#xff0c;有效防止数据泄密 透明无感知加密&…...

【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路

目录 一、污点(Taint) 1.1污点介绍 1.2污点的组成格式 1.3当前 taint effect 支持如下三个选项&#xff1a; 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转发模型 随着信息技术的飞速发展&#xff0c;无线局域网&#xff08;WLAN&#xff09;已逐渐成为企业网络架构中不可或缺的一部分。不同的企业组织因其业务特性、规模大小及安全需求的不同&#xff0c;对WLAN的要求也各有侧重。…...

操作系统基础知识

一. 进程 进程是正在运行中的程序&#xff0c;是动态的 进程是资源分配的最小单位 进程的基本特征&#xff1a;动态性&#xff0c;并发性&#xff0c;独立性&#xff0c;异步性 二. 线程 线程在执行过程中的每一个任务就是一个线程 进程是由一个或多个线程组成&#xff0…...

Kompas AI:智能生活的开启者

引言 在现代社会&#xff0c;**人工智能&#xff08;AI&#xff09;**已经深刻地影响了我们的生活和工作。无论是智能家居、自动驾驶&#xff0c;还是医疗诊断&#xff0c;AI的应用无处不在。而在众多AI平台中&#xff0c;Kompas AI 作为一个先进的对话式AI平台&#xff0c;通过…...

Java——二进制原码、反码和补码

一、简要介绍 原码、反码和补码只是三种二进制不同的表示形式&#xff0c;每个二进制数都有这三个形式。 1、原码 原码是将一个数的符号位和数值位分别表示的方法。 最高位为符号位&#xff0c;0表示正&#xff0c;1表示负&#xff0c;其余位表示数值的绝对值。 例如&…...

git使用流程

1.下载git 搜索下载 2.注册github账号&#xff08;打开爬墙工具&#xff09; 创建一个仓库 3.配置邮箱和密码 4.所以找一个文件夹 鼠标右键 选择 open Git Bash here&#xff08;当前文件夹下打开命令行&#xff09; 输入命令 配置用户名和邮箱 5.将建的仓库克隆下来 …...

C++设计模式|结构型 代理模式

1.什么是代理模式&#xff1f; 代理模式Proxy Pattern是一种结构型设计模式&#xff0c;用于控制对其他对象的访问。 在代理模式中&#xff0c;允许一个对象&#xff08;代理&#xff09;充当另一个对象&#xff08;真实对象&#xff09;的接口&#xff0c;以控制对这个对象的…...

C语言 带头双向循环链表的基本操作

带头双向循环链表的基本操作 结构体定义初始化创建新节点头插头删尾插尾删查找在指定位置之后插入删除指定位置的值打印 结构体定义 typedef int DataType; typedef struct LinkNode {DataType data;struct LinkNode* prev;struct LinkNode* next; }LNode;初始化 有两种初始化…...

MATLAB中扩展卡尔曼滤波误差估计的关键点

在MATLAB中&#xff0c;对于扩展卡尔曼滤波&#xff08;EKF&#xff09;的误差估计&#xff0c;主要涉及对系统状态估计的准确性和精度的评估。EKF是一种适用于非线性系统的状态估计方法&#xff0c;它通过递归的方式&#xff0c;结合系统的动态模型和观测模型&#xff0c;来预…...

SpringBoot温习

1.1 Spring Boot ​ Spring Boot是一个开源的Java框架&#xff0c;由Pivotal团队&#xff08;现在是VMware的一部分&#xff09;开发&#xff0c;它是Spring框架的一个模块&#xff0c;旨在简化Spring应用程序的初始搭建以及开发过程。 Spring Boot的核心目标是让开发者尽可能…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...