当前位置: 首页 > 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. 引言 智能无人机控…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...