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…...

系统安全(补充)
拒绝服务漏洞(拒绝服务漏洞将导致网络设备停止服务,危害网络服务可用性)旁路(旁路漏洞绕过网络设备的安全机制,使得安全措施没有效果)代码执行(该类漏洞使得攻击者可以控制网络设备,…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...