1、C++编程中的基本运算 - 课件
一、基础知识
1、C++程序的基本框架
// 预处理器指令,引入需要的头文件
#include <iostream>
// 使用标准命名空间
using namespace std;
// 主函数,程序的入口
int main() {// 局部变量声明// 程序逻辑代码// 返回值,表示程序正常结束return 0;
}
2、int 和 double
-
C++中,我们使用不同的类型来存储整数和小数。
-
int类型用于存储整数,例如:
int age = 10; int score = 98;
-
double类型用于存储小数,例如:
double price = 9.99; double height = 1.75;
-
我们可以对int和double类型的变量进行各种算术运算,如加法、减法、乘法和除法。
-
当用int类型进行除法运算时,结果也是整数,小数部分会被去掉。(如:int a = 10 / 3,这里 a = 3,小数点会被去掉)。
-
如果想要得到小数结果,需要使用double类型(如:double a = 10 / 3,a = 3.3333……)。
-
在编程时,我们应该根据要存储的数字类型选择相应的变量类型,以确保正确地进行各种计算。
3、保留小数点后几位输出
fixed
和 setprecision()
是在 <iostream>
和 <iomanip>
库中定义的操作符,用于控制浮点数的输出格式。
-
fixed
操作符fixed
操作符用于设置定点表示法,即将小数点固定在某个位置。- 使用
fixed
操作符后,浮点数将总是被显示为定点数,小数点后的位数由setprecision()
控制。
-
setprecision()
操作符setprecision()
操作符用于设置输出的精度,即控制输出的总位数(包括整数部分和小数部分)。- 当与
fixed
操作符配合使用时,setprecision()
的参数值即为小数点后的位数。
-
恢复默认输出格式
- 使用
cout.unsetf(ios::fixed)
可以恢复默认的浮点数输出格式。 - 默认格式下,会根据数值大小自动选择scientific(科学计数法)或fixed(定点)表示法,并且小数点后的位数会根据数值的精度自动调整。
- 使用
示例代码:
#include <iostream>
#include <iomanip>using namespace std;int main() {double num1 = 3.14159265358979323846;double num2 = 1234.5678;// 保留小数点后2位cout << fixed << setprecision(2);cout << num1 << endl; // 输出: 3.14cout << num2 << endl; // 输出: 1234.57// 保留小数点后4位cout << setprecision(4);cout << num1 << endl; // 输出: 3.1416cout << num2 << endl; // 输出: 1234.5678// 恢复默认输出格式cout.unsetf(ios::fixed);cout << num1 << endl; // 输出: 3.14159cout << num2 << endl; // 输出: 1234.57return 0;
}
注意事项:
fixed
、setprecision()
和defaultfloat
操作符影响之后所有的浮点数输出,直到再次使用这些操作符进行修改。- 如果输出的数字位数不足,会在小数点后补零;如果超出,则会四舍五入。
- 在使用
setprecision()
之前,建议先使用fixed
操作符,以确保小数点后的位数与预期一致。 - 使用
cout.unsetf(ios::fixed)
可以方便地恢复默认的浮点数输出格式,无需手动设置精度或表示法。
4、输入、输出和换行
输入: cin
-
cin是C++中的一个标准输入流对象,用于从标准输入设备(通常是键盘)读取数据。
-
要使用cin,需要在程序开头包含iostream头文件:
#include <iostream>
-
使用cin进行输入时,数据会从标准输入设备(通常是键盘)读取,直到遇到空格、制表符或换行符。
-
cin使用>>运算符来读取数据。例如:
using namespace std; int age; cout << "请输入你的年龄: "; cin >> age;
-
可以连续使用多个>>运算符来读取多个数据:
using namespace std; int a, b; cin >> a >> b;
-
cin会自动根据变量的类型来解析输入的数据。例如,如果变量是int类型,cin会将输入解析为整数;如果变量是double类型,cin会将输入解析为浮点数。
输出:cout 换行:endl
-
cout:
- cout是C++中的标准输出流对象,用于将数据输出到标准输出设备(通常是屏幕)。
- cout位于
<iostream>
头文件中,需要在程序开头使用#include <iostream>
引入该头文件。 - cout使用<<运算符(插入运算符)来输出数据。可以连续使用多个<<运算符来输出多个数据。
- cout可以输出各种类型的数据,如整数、浮点数、字符、字符串、布尔值等。
- 示例:
cout << "Hello, world!" << endl; cout << "The sum is: " << sum << endl;
-
endl:
- endl是C++中的一个操纵符(manipulator),用于插入一个换行符并刷新缓冲区。
- endl也位于
<iostream>
头文件中。 - 当使用cout输出数据时,可以使用endl来换行并确保数据立即输出到屏幕上。
- 示例:
cout << "First line" << endl; cout << "Second line" << endl;
-
cout和endl的组合使用:
- 在使用cout输出数据时,通常会与endl一起使用,以实现换行和刷新缓冲区的效果。
- 可以在一条cout语句中使用多个<<运算符和endl操纵符,以输出多个数据并换行。
- 示例:
cout << "Name: " << name << endl; cout << "Age: " << age << endl; cout << "Score: " << score << endl;
-
注意事项:
- 在使用cout和endl之前,需要确保已经包含了
<iostream>
头文件。
- 在使用cout和endl之前,需要确保已经包含了
5、C++中的算术运算
运算符 | 名称 | 描述 | 示例 |
---|---|---|---|
+ | 加 | 将两个操作数相加 | int a = 5 + 3; |
- | 减 | 将第一个操作数减去第二个操作数 | int b = 7 - 2; |
* | 乘 | 将两个操作数相乘 | int c = 4 * 6; |
/ | 除 | 将第一个操作数除以第二个操作数 | int d = 10 / 3; |
% | 取模 | 返回第一个操作数除以第二个操作数的余数 | int e = 11 % 3; |
- 加
+
:将两个操作数相加。可以用于数字相加,也可以用于字符串拼接。 - 减
-
:将第一个操作数减去第二个操作数。 - 乘
*
:将两个操作数相乘。 - 除
/
:将第一个操作数除以第二个操作数。
注意:
如果两个操作数都是整数,则结果也是整数,而不是浮点数。
(例如 : 4 / 2 = 2)
如果想要得到浮点数结果,至少有一个操作数需要是浮点数。
(例如:4.0 / 2 = 2.0 或者4 / 2.0 = 2.0 或者 4.0 / 2.0 = 2.0)
- 除数不能为0,否则会导致程序错误。编译器可能会给出警告或错误信息。
例如:int a = 10 / 0;
这是非法的,会导致编译错误或运行时错误。
- 取模
%
:返回第一个操作数除以第二个操作数的余数。这个运算符只适用于整数操作数。
- 取模运算的结果的符号与第一个操作数的符号相同。
例如:-11 % 3
的结果是-2
,而不是2
。 - 与除法运算类似,取模运算的第二个操作数也不能为0,否则会导致程序错误。
例如:int b = 10 % 0;
这是非法的,会导致编译错误或运行时错误。
6、案例实操
题目:
编写一个C++程序,从用户那里读取两个整数,然后使用cout
语句输出以下算术运算的结果:
- 第一个数加第二个数的结果
- 第一个数减第二个数的结果
- 第一个数乘以第二个数的结果
- 第一个数除以第二个数的结果(整数除法)
- 第一个数除以第二个数的结果(浮点数除法)
- 第一个数除以第二个数的余数(取模运算)
要求:
- 使用
cin
读取用户输入的两个整数,并用空格分隔。 - 每个运算结果输出在单独的一行,并在输出前显示相应的算术表达式。
- 在输出整数除法结果时,添加注释说明整数和整数运算的结果是整数。
- 为了获得浮点数除法结果,将其中一个数声明为
double
类型的变量,然后进行除法运算。 - 使用
endl
操作符来换行,而不是\n
。
注意事项:
- 请注意处理除数为零的情况,以避免运行时错误。
- 确保用户输入的是整数,否则可能会导致输入错误和意外结果。
- 取模运算符
%
只能用于整数类型,不能用于浮点数。
7、代码解析
#include <iostream>
using namespace std;int main() {int num1, num2;cout << "请输入两个整数,用空格分隔: ";cin >> num1 >> num2;cout << num1 << " + " << num2 << " = " << num1 + num2 << endl;cout << num1 << " - " << num2 << " = " << num1 - num2 << endl;cout << num1 << " * " << num2 << " = " << num1 * num2 << endl;// 整数和整数运算结果是整数cout << num1 << " / " << num2 << " = " << num1 / num2 << endl;// 将其中一个数声明为浮点数,以获得浮点数除法结果double num1_double = num1;cout << num1_double << " / " << num2 << " = " << num1_double / num2 << endl;cout << num1 << " % " << num2 << " = " << num1 % num2 << endl;return 0;
}
代码解析:
-
使用
cin
从标准输入读取两个整数num1
和num2
,并使用空格分隔。 -
使用
cout
输出加法、减法和乘法运算的结果,每个结果占一行。 -
对于整数除法,添加注释说明整数和整数运算的结果是整数。
-
为了获得浮点数除法结果,将其中一个数(
num1
)声明为double
类型的变量num1_double
,然后进行除法运算。 -
输出取模运算的结果。
-
使用
endl
操作符来换行,而不是\n
。
易错点模拟:
-
如果输入的
num2
为0,在进行除法或取模运算时会导致运行时错误(除以零)。 -
如果输入的数字不是整数(例如包含小数点),使用
cin
读取时会导致输入错误,后续的计算可能会产生意外结果。 -
如果在取模运算中使用浮点数,编译器会报错,因为取模运算符
%
只能用于整数类型。
相关文章:
1、C++编程中的基本运算 - 课件
一、基础知识 1、C程序的基本框架 // 预处理器指令,引入需要的头文件 #include <iostream> // 使用标准命名空间 using namespace std; // 主函数,程序的入口 int main() {// 局部变量声明// 程序逻辑代码// 返回值,表示程序正常结束…...
Java动态代理详解
文章目录 一、JDK动态代理1、关键类和接口2、实现步骤 二、CGLIB动态代理1、关键类2、实现步骤 三、总结 Java中的动态代理是一种设计模式,它允许在运行时创建代理对象,而不是在编译时。代理对象可以用来代理真实对象的方法调用。 Java中的动态代理主要…...
Python基础学习文档
一、Python入门 1.Python简介: Python是一种高级编程语言,用于多种应用,包括网站开发、数据科学、人工智能等。 Python具有语法简洁、易读性强、功能强大等特点。 2.安装Python ①访问Python官网(https://www.python.org/&am…...

数据结构与算法笔记:基础篇 - 分治算法:谈一谈大规模计算框架MapReduce中的分治思想
概述 MapReduce 是 Google 大数据处理的三姐马车之一,另外两个事 GFS 和 Bigtable。它在倒排索引、PageRank 计算、网页分析等搜索引擎相关的技术中都有大量的应用。 尽管开发一个 MapReduce 看起来很高深。实际上,万变不离其宗,它的本质就…...

如何清除anaconda3缓存?
如果长期使用anaconda不清理缓存,会导致anaconda占用磁盘空间越来越多,甚至系统磁盘撑爆。 清除包缓存: 打开 Anaconda Prompt 或者命令行窗口。运行以下命令清除包缓存:conda clean --all这会清除所有的包缓存,释放磁…...

智慧校园发展趋势:2024年及未来教育科技展望
展望2024年及未来的教育科技领域,智慧校园的发展正引领着一场教育模式的深刻变革,其核心在于更深层次地融合技术与教育实践。随着人工智能技术的不断成熟,个性化学习将不再停留于表面,而是深入到每个学生的个性化需求之中。通过精…...

【Python机器学习系列】针对特定数据构建管道流水线进行机器学习预测(案例+源码)
这是我的第305篇原创文章。 一、引言 机器学习项目中有可以自动化的标准工作流程。在 Python scikit-learn 中,管道有助于明确定义和自动化这些工作流程。使用pipeline后,我们每一步的输出都会自动的作为下一个的输入。一套完整的机器学习应用流程如下&a…...
Python 学习 第三册 第12章 图的最优化问题
----用教授的方式学习。 目录 12.1图的最优化问题 12.1.1最短路径:深度优先搜索和广度优先搜索 12.1图的最优化问题 我们下面研究另一种最优化问题。假设你有一个航空公司航线的价格列表,其中包括美国任意两个城市之间的航班价格。假设有3个城市A、B和C,从A出发经过B到达…...
建筑工程乙级资质与工程质量控制体系的构建
1. 质量管理体系建立 ISO 9001认证:虽然不是直接要求,但许多乙级资质企业会选择通过ISO 9001质量管理体系认证,以标准化管理流程,提升质量管理水平。质量方针与目标:明确企业的质量方针,设定可量化、可追踪…...

kafka学习笔记07
Kafka高可用集群搭建节点需求规划 开放端口。 Kafka高可用集群之zookeeper集群搭建环境准备 删除之前的kafka和zookeeper。 重新进行环境部署: 我们解压我们的zookeeper: 编辑第一个zookeeper的配置文件: 我们重复类似的操作,创建三个zookeeper节点: 记…...

MQTTfx连接阿里云(详细版)
1、介绍 作为物联网开放平台,阿里云可谓是吸引大多数嵌入式爱好者的平台。物联网MQTT协议火热的今天,你使用过阿里云吗?本篇文章带你接触阿里云,实现MQTT通信。 我们在测试MQTT之前先了解下什么是MQTT协议。大家都知道它是一种发…...
Vue3使用provide和inject实现孙组件给爷组件传递数据
前言: 最近在研究gitHub中的一个项目并将与自己之前完成的项目进行结合,其中有一个功能是需要在孙组件将数据传递给爷组件,笔者研究后将使用总结如下: 具体步骤: 1.爷组件先定义一个空的函数传递给孙子 2.孙组件使…...

昇思25天学习打卡营第1天|基本介绍及快速入门
1.第一天学习总体复盘 1)成功注册昇思大模型平台,并成功申请算力; 2)在jupyter环境下学习初学入门/初学教程的内容; 在基本介绍部分,快速撸了一边内容,有了一个基本的了解(没理解到位的计划采用…...

C#.Net筑基-类型系统②常见类型
01、结构体类型Struct 结构体 struct 是一种用户自定义的值类型,常用于定义一些简单(轻量)的数据结构。对于一些局部使用的数据结构,优先使用结构体,效率要高很多。 可以有构造函数,也可以没有。因此初始…...
【人机交互 复习】第5章 交互式系统的需求
产品特性和用户个体差异引起的不同需求。 一、产品特性 1.功能不同 (1)智能冰箱:应能够提示黄油已用完 (2)字处理器:系统应支持多种格式 2.物理条件不同 (1)移动设备运行的系统应尽…...

知识的补充
目录 电容和电感的基本性质 高频电路中电容与电感的等效电路 阻抗与导纳 常用单位转换 电容和电感的基本性质 电容C是两个平板比较直,i也比较直,C的 i 随 u 的变化率变化,i 的相位超前。 电感L是个线圈比较弯曲,u也比较弯&…...
微信小程序请求服务器报ERR_CONNECTION_RESET
排查思路 1.域名是否配置或跳过 2.域名是否备案 3.证书是否有效 4.服务器中间件配置证书是否生效 5.服务器中间件转发配置是否生效 6.接口是否正常 本人遇到问题描述,通过浏览器访问本人网站,https,get请求可以通,小程序wx…...
SpringMVC:拦截Mybatis的mapper
我们在使用mybatis的时候会碰到一些公共添加时间,操作人员,更新时间、或者一些分页这个使我们如果要去添加每个对应的- service - dao - mapper - xml 这样就造成很多冗余代码,那这个时候我们就需要使用一些通用方法,统一就行修改…...
MySQL查询性能优化解决方案
解决方案 主键与默认常用查询字段建立索引,普通字段类型选择 UNIQUE,索引方法 BTREE ;长文本使用 FULLTEXT,索引方法为无; 新建表时引擎默认设置为 MyISAM,不使用 InnoDB,因为 MyISAM 支持 MAT…...

系统安全(补充)
拒绝服务漏洞(拒绝服务漏洞将导致网络设备停止服务,危害网络服务可用性)旁路(旁路漏洞绕过网络设备的安全机制,使得安全措施没有效果)代码执行(该类漏洞使得攻击者可以控制网络设备,…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...