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

[C/C++入门][ifelse]19、制作一个简单计算器

简单的方法

我们将假设用户输入两个数字和一个运算符(+、-、*、/),然后根据所选的运算符执行相应的操作。

#include <iostream>
using namespace std;int main() {double num1, num2;char op;cout << "输入 (+,-,*,/): ";cin >> num1 >> num2 >> op;if(op == '+') {cout << num1 + num2 << endl;} else if(op == '-') {cout << num1 - num2 << endl;} else if(op == '*') {cout << num1 * num2 << endl;} else if(op == '/') {if(num2 != 0)cout << num1 / num2 << endl;elsecout << "除数不能是0." << endl;} else {cout << "输入错误!" << endl;}return 0;
}

也可以用switch

#include <iostream>
using namespace std;int main() {double num1, num2;char op;cout << "输入 (+,-,*,/): ";cin >> num1 >> num2 >> op;switch(op) {case '+':cout << num1 + num2 << endl;break;case '-':cout << num1 - num2 << endl;break;case '*':cout << num1 * num2 << endl;break;case '/':if(num2 != 0)cout << num1 / num2 << endl;elsecout << "除数不能是0." << endl;break;default:cout << "输入错误!" << endl;}return 0;
}

可能会觉得这样的输入方法有些蹩脚。

毕竟谁计算运算是先输数字,再输入符号,并且还要输一下空格一下,那么有没有好的方法,像作业本上写计算一样丝滑呢?

当然有了:

(扩展学习)计算器

扩展内容不要求初学者会,作为了解。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;int main() {string input;double num1, num2;char op;cout << "请输入计算表达式(例如:33+44):" << endl;getline(cin, input); // 使用getline读取整个行stringstream ss(input);ss >> num1 >> op >> num2; // 将输入的字符串流解析为数字和运算符if (ss.fail()) { // 如果输入格式不正确cout << "输入有误,请检查格式是否正确!" << endl;return 1;}// 执行计算if(op == '+') {cout << "结果是:" << num1 + num2 << endl;} else if(op == '-') {cout << "结果是:" << num1 - num2 << endl;} else if(op == '*') {cout << "结果是:" << num1 * num2 << endl;} else if(op == '/') {if(num2 != 0)cout << "结果是:" << num1 / num2 << endl;elsecout << "错误:除数不能为零。" << endl;} else {cout << "错误:无效的运算符。" << endl;}return 0;
}

这样就可以直接输入,得到结果了。

这里边大家可以注意到,用到了一个stringstream 来转换输入。

在C++中,stringstream 类位于 <sstream> 头文件中,它是 iostream 库的一部分,专门用于处理字符串流。stringstream 可以看作是连接字符串和流的一个桥梁,它允许我们像处理输入/输出流一样来读写字符串。

创建 stringstream 对象

当执行 stringstream ss(input); 时,创建一个名为 ssstringstream 对象,并且用一个已存在的字符串 input 来初始化它。这意味着 ss 将会包含 input 字符串的内容,但同时它也具备流的所有特性,包括能够从中读取和向其中写入数据。

stringstream 的读写功能

由于 stringstream 是流,你可以使用流的操作符 >><< 来读取和写入数据。例如,如果你有一个整数变量 int x; 并且想要从 ss 中读取一个整数值给 x,你可以这样写:

int x;
ss >> x; // 从ss中读取一个整数给x

同样地,如果你想把一个整数写入 ss,可以这样做

int y = 42;
ss << y; // 将y的值写入ss

初始化 stringstream 的意义

stringstream 被初始化为一个字符串时,它意味着你可以开始解析这个字符串,就像处理普通的输入流一样。例如,如果你的 input 字符串是 "123 apples",你可以轻松地从中读取出数字和文字:

int number;
string word;
stringstream ss(input);
ss >> number >> word;
// 现在number应该是123,word应该是"apples"

总的来说,stringstream ss(input); 这行代码创建了一个 stringstream 对象 ss,并用字符串 input 来初始化它。这使得你可以使用流的特性来处理 input 字符串,包括读取和写入数据。这是一种非常方便的方式来解析字符串中的数据,尤其是当字符串格式较为复杂时。

然后输入的时候,用不同类型的变量来接收,就可以从开头获取字符串中对应的数据了。

还不快来试试?

相关文章:

[C/C++入门][ifelse]19、制作一个简单计算器

简单的方法 我们将假设用户输入两个数字和一个运算符&#xff08;、-、*、/&#xff09;&#xff0c;然后根据所选的运算符执行相应的操作。 #include <iostream> using namespace std;int main() {double num1, num2;char op;cout << "输入 (,-,*,/): &quo…...

API取数实战:企业微信API取数教程

在数字化时代&#xff0c;企业微信不仅是一个通讯工具&#xff0c;更是企业数字化转型的重要平台。通过企业微信&#xff0c;企业能够高效连接员工、客户与合作伙伴&#xff0c;实现内部流程的自动化和智能化。本文将介绍企业微信API的应用场景和应用难点&#xff0c;并提供企业…...

AI算法18-最小角回归算法Least Angle Regression | LARS

​​​ 最小角回归算法简介 最小角回归&#xff08;Least Angle Regression, LAR&#xff09;是一种用于回归分析的统计方法&#xff0c;它在某些方面类似于最小二乘回归&#xff0c;但提供了一些额外的优点。最小角回归由Bradley Efron等人提出&#xff0c;主要用于处理具有…...

wordpress 调用另外一个网站的内容 按指定关键词调用

要在WordPress中调用另一个网站的内容并根据指定关键词进行筛选&#xff0c;你可以使用以下代码。这段代码使用了WordPress内置的wp_remote_get函数来获取远程网站的内容&#xff0c;然后使用PHP的DOMDocument和DOMXPath类来解析HTML并筛选出包含指定关键词的内容。 首先&…...

kotlin数据类型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 Kotlin基本数值类型 基本数据类型包括 Byte、Short、Int、Long、Float、Double 整数类型 类型位宽最小值最大…...

[GWCTF 2019]babyvm

第一次接触VM逆向 先粘一下对我很有帮助的两篇佬的博客 系统学习vm虚拟机逆向_vmp 虚拟机代码逆向-CSDN博客 这篇去学习vm逆向到底是什么 我的浅显理解啊,就是和汇编的定义差不多,规定一个函数,用什么其他的名字 然后这道题 [GWCTF 2019]babyvm 详解 &#xff08;vm逆向 …...

PyTorch论文

2019-12 PyTorch: An Imperative Style, High-Performance Deep Learning Library 设计迎合4大趋势&#xff1a; 1. array-based (Tensor) 2. GPU加速 3. 自动求导 (Auto Differentiation) 4. 拥抱Python生态 4大设计原则&#xff1a; 1. 使用算法和数据开发者熟悉的Python做编…...

【Python实战因果推断】37_双重差分8

目录 Diff-in-Diff with Covariates Diff-in-Diff with Covariates 您需要学习的 DID 的另一个变量是如何在模型中包含干预前协变量。这在您怀疑平行趋势不成立&#xff0c;但条件平行趋势成立的情况下非常有用&#xff1a; 考虑这种情况&#xff1a;您拥有与之前相同的营销数…...

【python学习】第三方库之matplotlib的定义、功能、使用场景和代码示例(线图、直方图、散点图)

引言 Matplotlib 是一个 Python 的 2D 绘图库&#xff0c;它可以在各种平台上以各种硬拷贝格式和交互环境生成具有出版品质的图形。通过 Matplotlib&#xff0c;开发者可以仅需要几行代码&#xff0c;便可以生成绘图、直方图、功率谱、条形图、错误图、散点图等 Matplotlib 是 …...

MySQL(3)表的操作

目录 1. 表的操作; 2. 数据类型; 1. 表的操作: 1.1 创建表: 语法: create table 表名( 属性 类型 [comment ], 属性 类型 [comment ], 属性 类型 ) character set 字符集 collate 校验集 engine 存储引擎; 前面博客提到: MyISAM和InoDB这两个比较重要. 1.2 查看表…...

SQL GROUPING运算符详解

在大数据开发中,我们经常需要对数据进行分组和汇总分析。 目录 1. GROUPING运算符概念2. 语法和用法3. 实际应用示例4. GROUPING运算符的优势5. 高级应用场景5.1 与CASE语句结合使用5.2 多维数据分析 6. 性能考虑和优化技巧7. GROUPING运算符的局限性8. 最佳实践9. GROUPING与其…...

在VS2017下FFmpeg+SDL编写最简单的视频播放器

1.下载ShiftMediaProject/FFmpeg 2.下载SDL2 3.新建VC控制台应用 3.配置include和lib 4.把FFmpeg和SDL的dll 复制到工程Debug目录下&#xff0c;并设置调试命令 5.复制一下mp4视频到工程Debug目录下&#xff08;复制一份到*.vcxproj同一目录&#xff0c;用于调试&#xff09; 6…...

LogViewer v2.x更新

logvewer 介绍 logviewer 是一个可以方便开发人员通过浏览器查看和下载远程服务器集群日志&#xff0c;使用ssh方式管理远程tomcat、jar包等应用&#xff0c;节省服务器资源。大家可以下载体验&#xff0c;请勿用于生产环境。欢迎提出意见或建议。 解决的问题 一般情况下公司…...

detection_segmentation

目标检测和实例分割(OBJECT_DETECTION AND INSTANCE SEGMENTATION) 文章目录 目标检测和实例分割(OBJECT_DETECTION AND INSTANCE SEGMENTATION)一. 计算机视觉(AI VISION)1. 图像分类2. 目标检测与定位3. 语义分割和实例分割目标检测算法可以分为两大类&#xff1a; R-CNN生成…...

0基础学python-13:古希腊掌管时间的模块——datetime和time

目录 前言 datetime模块 一、datetime 类 1.创建 datetime 对象 2.获取日期时间的各个部分 3.格式化日期时间为字符串 4.解析字符串为 datetime 对象 二、timedelta 类 1.创建 timedelta 对象 datetime注意事项 time模块 1.获取当前时间戳 2.获取当前时间的结构化表…...

棒球特长生升学具有其独特的优势和劣势·棒球6号位

棒球特长生升学具有其独特的优势和劣势&#xff0c;以下是对这两方面的详细分析&#xff1a; 获得更好的教育资源&#xff1a; 棒球特长生有机会通过棒球特长招生计划进入更好的学校。这些学校往往拥有更优质的教育资源&#xff0c;包括师资力量、教学设施、课程设置等&#…...

搜维尔科技:Xsens DOT 可穿戴传感器介绍及示例应用演示

Xsens DOT可穿戴传感器介绍及示例应用演示 搜维尔科技&#xff1a;Xsens DOT 可穿戴传感器介绍及示例应用演示...

数据分析案例-2024 年热门动漫数据集可视化分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

C#小结:未能找到类型或命名空间名“xxx”(是否缺少 using 指令或程序集引用?)

方案一&#xff1a;移除类库这些失效的引用&#xff0c;下载对应版本的dll&#xff08;如有则不需要重复下载&#xff09;&#xff0c;重新添加引用 方案二&#xff1a;类库右键属性-调整目标框架版本&#xff08;一般是降低版本&#xff09; 方案三&#xff1a;调整类库编译顺…...

STM32智能无人机控制系统教程

目录 引言环境准备智能无人机控制系统基础代码实现&#xff1a;实现智能无人机控制系统 4.1 数据采集模块 4.2 数据处理与控制算法 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;无人机管理与优化问题解决方案与优化收尾与总结 1. 引言 智能无人机控…...

从 QWebEnginePage 打印文档

QWebEnginePage 是 Qt WebEngine 模块中的一个类&#xff0c;它提供了用于处理网页内容的接口。如果你想要打印 QWebEnginePage 中的内容&#xff0c;你可以使用 QPrinter 和 QPrintDialog 类来实现。 项目配置了 Qt WebEngine 模块&#xff0c;并且在你的.pro文件中包含了相应…...

初识Docker及管理Docker

Docker部署 初识DockerDocker是什么Docker的核心概念镜像容器仓库 容器优点容器在内核中支持2种重要技术&#xff1a;Docker容器与虚拟机的区别 安装Docker源码安装yum安装检查Docker Docker 镜像操作配置镜像加速器&#xff08;阿里系&#xff09;搜索镜像获取镜像查看镜像信息…...

【学术会议征稿】2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024)

2024年第三届信息学&#xff0c;网络与计算技术国际学术会议(ICINC2024) 2024 3rd International Conference on Informatics,Networking and Computing (ICINC 2024) 2024年第三届信息学&#xff0c;网络与计算技术国际学术会议(ICINC2024)将于2024年10月25-27日于中国郑州召…...

在golang中Sprintf和Printf 的区别

最近一直在学习golang这个编程语言&#xff0c;我们这里做一个笔记就是 Sprintf和Printf 的区别 fmt.Sprintf 根据格式化参数生成格式化的字符串并返回该字符串。 fmt.Printf 根据格式化参数生成格式化的字符串并写入标准输出。由上面就可以知道&#xff0c;fmt.Sprintf返回的…...

策略模式原理与C++实现

定义 定义一些列算法&#xff0c;把他们一个个封装起来&#xff0c;并且使他们可以相互替换&#xff08;变化&#xff09;。该模式使得算法可独立于使用它的客户程序&#xff08;稳定&#xff09;而变化&#xff08;扩展、子类化&#xff09;。 C实现 在不考虑策略模式的情况…...

打包一个自己的Vivado IP核

写在前面 模块复用是逻辑设计人员必须掌握的一个基本功&#xff0c;通过将成熟模块打包成IP核&#xff0c;可实现重复利用&#xff0c;避免重复造轮子&#xff0c;大幅提高我们的开发效率。 接下来将之前设计的串口接收模块和串口发送模块打包成IP核&#xff0c;再分别调用…...

《昇思25天学习打卡营第05天|qingyun201003》

日期 心得 通过本节课的学习&#xff0c;学习到了通过网络获取数据集&#xff0c;处理数据集模型。数据模型层数据变换&#xff0c;模型参数解析和其对应代码中的API进行解析。 昇思MindSpore 基础入门学习 网络构建 (AI 代码解析) 网络构建 神经网络模型是由神经网络层和T…...

【Leetcode】二十一、前缀树 + 词典中最长的单词

文章目录 1、背景2、前缀树Trie3、leetcode208&#xff1a;实现Trie4、leetcode720&#xff1a;词典中最长的单词 1、背景 如上&#xff0c;以浏览器搜索时的自动匹配为例&#xff1a; 如果把所有搜索关键字放一个数组里&#xff0c;则&#xff1a;插入、搜索一个词条时&#x…...

秋招Java后端开发冲刺——Mybatis使用总结

一、基本知识 1. 介绍 MyBatis 是 Apache 的一个开源项目&#xff0c;它封装了 JDBC&#xff0c;使开发者只需要关注 SQL 语句本身&#xff0c;而不需要再进行繁琐的 JDBC 编码。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java POJO&#xff08;Plain …...

怎么压缩视频文件?简单的压缩视频方法分享

视频已成为我们日常生活中不可或缺的一部分。但随着视频质量的提高&#xff0c;文件大小也逐渐成为我们分享的阻碍。如何有效压缩视频文件&#xff0c;使其既能保持清晰&#xff0c;又能轻松分享&#xff1f;今天&#xff0c;给大家分享五种实用的视频压缩方法&#xff0c;快来…...