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

1、C++编程中的基本运算 - 课件

一、基础知识

1、C++程序的基本框架

// 预处理器指令,引入需要的头文件
#include <iostream>
// 使用标准命名空间
using namespace std;
// 主函数,程序的入口
int main() {// 局部变量声明// 程序逻辑代码// 返回值,表示程序正常结束return 0;
}

2、int 和 double

  1. C++中,我们使用不同的类型来存储整数和小数。

  2. int类型用于存储整数,例如:

    int age = 10;
    int score = 98;
    
  3. double类型用于存储小数,例如:

    double price = 9.99;
    double height = 1.75;
    
  4. 我们可以对int和double类型的变量进行各种算术运算,如加法、减法、乘法和除法。

  5. 当用int类型进行除法运算时,结果也是整数,小数部分会被去掉。(如:int a = 10 / 3,这里 a = 3,小数点会被去掉)。

  6. 如果想要得到小数结果,需要使用double类型(如:double a = 10 / 3,a = 3.3333……)。

  7. 在编程时,我们应该根据要存储的数字类型选择相应的变量类型,以确保正确地进行各种计算。

3、保留小数点后几位输出

fixedsetprecision() 是在 <iostream><iomanip> 库中定义的操作符,用于控制浮点数的输出格式。

  1. fixed 操作符

    • fixed 操作符用于设置定点表示法,即将小数点固定在某个位置。
    • 使用 fixed 操作符后,浮点数将总是被显示为定点数,小数点后的位数由 setprecision() 控制。
  2. setprecision() 操作符

    • setprecision() 操作符用于设置输出的精度,即控制输出的总位数(包括整数部分和小数部分)。
    • 当与 fixed 操作符配合使用时,setprecision() 的参数值即为小数点后的位数。
  3. 恢复默认输出格式

    • 使用 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;
}

注意事项:

  • fixedsetprecision()defaultfloat 操作符影响之后所有的浮点数输出,直到再次使用这些操作符进行修改。
  • 如果输出的数字位数不足,会在小数点后补零;如果超出,则会四舍五入。
  • 在使用 setprecision() 之前,建议先使用 fixed 操作符,以确保小数点后的位数与预期一致。
  • 使用 cout.unsetf(ios::fixed) 可以方便地恢复默认的浮点数输出格式,无需手动设置精度或表示法。

4、输入、输出和换行

输入: cin

  1. cin是C++中的一个标准输入流对象,用于从标准输入设备(通常是键盘)读取数据。

  2. 要使用cin,需要在程序开头包含iostream头文件:

    #include <iostream>
    
  3. 使用cin进行输入时,数据会从标准输入设备(通常是键盘)读取,直到遇到空格、制表符或换行符。

  4. cin使用>>运算符来读取数据。例如:

    using namespace std;
    int age;
    cout << "请输入你的年龄: ";
    cin >> age;
    
  5. 可以连续使用多个>>运算符来读取多个数据:

    using namespace std;
    int a, b;
    cin >> a >> b;
    
  6. cin会自动根据变量的类型来解析输入的数据。例如,如果变量是int类型,cin会将输入解析为整数;如果变量是double类型,cin会将输入解析为浮点数。

输出:cout 换行:endl

  1. cout:

    • cout是C++中的标准输出流对象,用于将数据输出到标准输出设备(通常是屏幕)。
    • cout位于<iostream>头文件中,需要在程序开头使用#include <iostream>引入该头文件。
    • cout使用<<运算符(插入运算符)来输出数据。可以连续使用多个<<运算符来输出多个数据。
    • cout可以输出各种类型的数据,如整数、浮点数、字符、字符串、布尔值等。
    • 示例:
      cout << "Hello, world!" << endl;
      cout << "The sum is: " << sum << endl;
      
  2. endl:

    • endl是C++中的一个操纵符(manipulator),用于插入一个换行符并刷新缓冲区。
    • endl也位于<iostream>头文件中。
    • 当使用cout输出数据时,可以使用endl来换行并确保数据立即输出到屏幕上。
    • 示例:
      cout << "First line" << endl;
      cout << "Second line" << endl;
      
  3. cout和endl的组合使用:

    • 在使用cout输出数据时,通常会与endl一起使用,以实现换行和刷新缓冲区的效果。
    • 可以在一条cout语句中使用多个<<运算符和endl操纵符,以输出多个数据并换行。
    • 示例:
      cout << "Name: " << name << endl;
      cout << "Age: " << age << endl;
      cout << "Score: " << score << endl;
      
  4. 注意事项:

    • 在使用cout和endl之前,需要确保已经包含了<iostream>头文件。

5、C++中的算术运算

运算符名称描述示例
+将两个操作数相加int a = 5 + 3;
-将第一个操作数减去第二个操作数int b = 7 - 2;
*将两个操作数相乘int c = 4 * 6;
/将第一个操作数除以第二个操作数int d = 10 / 3;
%取模返回第一个操作数除以第二个操作数的余数int e = 11 % 3;
  1. +:将两个操作数相加。可以用于数字相加,也可以用于字符串拼接。
  2. -:将第一个操作数减去第二个操作数。
  3. *:将两个操作数相乘。
  4. /:将第一个操作数除以第二个操作数。
    注意
    如果两个操作数都是整数,则结果也是整数,而不是浮点数。
    (例如 : 4 / 2 = 2)

    如果想要得到浮点数结果,至少有一个操作数需要是浮点数。
    (例如:4.0 / 2 = 2.0 或者4 / 2.0 = 2.0 或者 4.0 / 2.0 = 2.0)
  • 除数不能为0,否则会导致程序错误。编译器可能会给出警告或错误信息。
    例如:int a = 10 / 0;这是非法的,会导致编译错误或运行时错误。
  1. 取模 %:返回第一个操作数除以第二个操作数的余数。这个运算符只适用于整数操作数。
  • 取模运算的结果的符号与第一个操作数的符号相同。
    例如:-11 % 3的结果是-2,而不是2
  • 与除法运算类似,取模运算的第二个操作数也不能为0,否则会导致程序错误。
    例如:int b = 10 % 0;这是非法的,会导致编译错误或运行时错误。

6、案例实操

题目:
编写一个C++程序,从用户那里读取两个整数,然后使用cout语句输出以下算术运算的结果:

  1. 第一个数加第二个数的结果
  2. 第一个数减第二个数的结果
  3. 第一个数乘以第二个数的结果
  4. 第一个数除以第二个数的结果(整数除法)
  5. 第一个数除以第二个数的结果(浮点数除法)
  6. 第一个数除以第二个数的余数(取模运算)

要求:

  • 使用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;
}

代码解析:

  1. 使用cin从标准输入读取两个整数num1num2,并使用空格分隔。

  2. 使用cout输出加法、减法和乘法运算的结果,每个结果占一行。

  3. 对于整数除法,添加注释说明整数和整数运算的结果是整数。

  4. 为了获得浮点数除法结果,将其中一个数(num1)声明为double类型的变量num1_double,然后进行除法运算。

  5. 输出取模运算的结果。

  6. 使用endl操作符来换行,而不是\n

易错点模拟:

  1. 如果输入的num2为0,在进行除法或取模运算时会导致运行时错误(除以零)。

  2. 如果输入的数字不是整数(例如包含小数点),使用cin读取时会导致输入错误,后续的计算可能会产生意外结果。

  3. 如果在取模运算中使用浮点数,编译器会报错,因为取模运算符%只能用于整数类型。

相关文章:

1、C++编程中的基本运算 - 课件

一、基础知识 1、C程序的基本框架 // 预处理器指令&#xff0c;引入需要的头文件 #include <iostream> // 使用标准命名空间 using namespace std; // 主函数&#xff0c;程序的入口 int main() {// 局部变量声明// 程序逻辑代码// 返回值&#xff0c;表示程序正常结束…...

Java动态代理详解

文章目录 一、JDK动态代理1、关键类和接口2、实现步骤 二、CGLIB动态代理1、关键类2、实现步骤 三、总结 Java中的动态代理是一种设计模式&#xff0c;它允许在运行时创建代理对象&#xff0c;而不是在编译时。代理对象可以用来代理真实对象的方法调用。 Java中的动态代理主要…...

Python基础学习文档

一、Python入门 1.Python简介&#xff1a; Python是一种高级编程语言&#xff0c;用于多种应用&#xff0c;包括网站开发、数据科学、人工智能等。 Python具有语法简洁、易读性强、功能强大等特点。 2.安装Python ①访问Python官网&#xff08;https://www.python.org/&am…...

数据结构与算法笔记:基础篇 - 分治算法:谈一谈大规模计算框架MapReduce中的分治思想

概述 MapReduce 是 Google 大数据处理的三姐马车之一&#xff0c;另外两个事 GFS 和 Bigtable。它在倒排索引、PageRank 计算、网页分析等搜索引擎相关的技术中都有大量的应用。 尽管开发一个 MapReduce 看起来很高深。实际上&#xff0c;万变不离其宗&#xff0c;它的本质就…...

如何清除anaconda3缓存?

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

智慧校园发展趋势:2024年及未来教育科技展望

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

【Python机器学习系列】针对特定数据构建管道流水线进行机器学习预测(案例+源码)

这是我的第305篇原创文章。 一、引言 机器学习项目中有可以自动化的标准工作流程。在 Python scikit-learn 中&#xff0c;管道有助于明确定义和自动化这些工作流程。使用pipeline后&#xff0c;我们每一步的输出都会自动的作为下一个的输入。一套完整的机器学习应用流程如下&a…...

Python 学习 第三册 第12章 图的最优化问题

----用教授的方式学习。 目录 12.1图的最优化问题 12.1.1最短路径:深度优先搜索和广度优先搜索 12.1图的最优化问题 我们下面研究另一种最优化问题。假设你有一个航空公司航线的价格列表,其中包括美国任意两个城市之间的航班价格。假设有3个城市A、B和C,从A出发经过B到达…...

建筑工程乙级资质与工程质量控制体系的构建

1. 质量管理体系建立 ISO 9001认证&#xff1a;虽然不是直接要求&#xff0c;但许多乙级资质企业会选择通过ISO 9001质量管理体系认证&#xff0c;以标准化管理流程&#xff0c;提升质量管理水平。质量方针与目标&#xff1a;明确企业的质量方针&#xff0c;设定可量化、可追踪…...

kafka学习笔记07

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

MQTTfx连接阿里云(详细版)

1、介绍 作为物联网开放平台&#xff0c;阿里云可谓是吸引大多数嵌入式爱好者的平台。物联网MQTT协议火热的今天&#xff0c;你使用过阿里云吗&#xff1f;本篇文章带你接触阿里云&#xff0c;实现MQTT通信。 我们在测试MQTT之前先了解下什么是MQTT协议。大家都知道它是一种发…...

Vue3使用provide和inject实现孙组件给爷组件传递数据

前言&#xff1a; 最近在研究gitHub中的一个项目并将与自己之前完成的项目进行结合&#xff0c;其中有一个功能是需要在孙组件将数据传递给爷组件&#xff0c;笔者研究后将使用总结如下&#xff1a; 具体步骤&#xff1a; 1.爷组件先定义一个空的函数传递给孙子 2.孙组件使…...

昇思25天学习打卡营第1天|基本介绍及快速入门

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

C#.Net筑基-类型系统②常见类型

01、结构体类型Struct 结构体 struct 是一种用户自定义的值类型&#xff0c;常用于定义一些简单&#xff08;轻量&#xff09;的数据结构。对于一些局部使用的数据结构&#xff0c;优先使用结构体&#xff0c;效率要高很多。 可以有构造函数&#xff0c;也可以没有。因此初始…...

【人机交互 复习】第5章 交互式系统的需求

产品特性和用户个体差异引起的不同需求。 一、产品特性 1.功能不同 &#xff08;1&#xff09;智能冰箱&#xff1a;应能够提示黄油已用完 &#xff08;2&#xff09;字处理器&#xff1a;系统应支持多种格式 2.物理条件不同 &#xff08;1&#xff09;移动设备运行的系统应尽…...

知识的补充

目录 电容和电感的基本性质 高频电路中电容与电感的等效电路 阻抗与导纳 常用单位转换 电容和电感的基本性质 电容C是两个平板比较直&#xff0c;i也比较直&#xff0c;C的 i 随 u 的变化率变化&#xff0c;i 的相位超前。 电感L是个线圈比较弯曲&#xff0c;u也比较弯&…...

微信小程序请求服务器报ERR_CONNECTION_RESET

排查思路 1.域名是否配置或跳过 2.域名是否备案 3.证书是否有效 4.服务器中间件配置证书是否生效 5.服务器中间件转发配置是否生效 6.接口是否正常 本人遇到问题描述&#xff0c;通过浏览器访问本人网站&#xff0c;https&#xff0c;get请求可以通&#xff0c;小程序wx…...

SpringMVC:拦截Mybatis的mapper

我们在使用mybatis的时候会碰到一些公共添加时间&#xff0c;操作人员&#xff0c;更新时间、或者一些分页这个使我们如果要去添加每个对应的- service - dao - mapper - xml 这样就造成很多冗余代码&#xff0c;那这个时候我们就需要使用一些通用方法&#xff0c;统一就行修改…...

MySQL查询性能优化解决方案

解决方案 主键与默认常用查询字段建立索引&#xff0c;普通字段类型选择 UNIQUE&#xff0c;索引方法 BTREE &#xff1b;长文本使用 FULLTEXT&#xff0c;索引方法为无&#xff1b; 新建表时引擎默认设置为 MyISAM&#xff0c;不使用 InnoDB&#xff0c;因为 MyISAM 支持 MAT…...

系统安全(补充)

拒绝服务漏洞&#xff08;拒绝服务漏洞将导致网络设备停止服务&#xff0c;危害网络服务可用性&#xff09;旁路&#xff08;旁路漏洞绕过网络设备的安全机制&#xff0c;使得安全措施没有效果&#xff09;代码执行&#xff08;该类漏洞使得攻击者可以控制网络设备&#xff0c;…...

腾讯云[HiFlow】| 自动化 -------HiFlow:还在复制粘贴?

文章目录 前言&#xff1a;一&#xff1a;HiFlow是什么二&#xff1a;功能介绍1.全连接2.自动化2.1定时处理特定任务2.2实时同步变更信息2.3及时获取通知提醒 3.零代码4.多场景5.可信赖 三&#xff1a;用户体验最后 前言&#xff1a; 随着网络时代的不断发展&#xff0c;自动化…...

音视频入门基础:H.264专题(3)——EBSP, RBSP和SODB

音视频入门基础&#xff1a;H.264专题系列文章&#xff1a; 音视频入门基础&#xff1a;H.264专题&#xff08;1&#xff09;——H.264官方文档下载 音视频入门基础&#xff1a;H.264专题&#xff08;2&#xff09;——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…...

误删群晖NAS数据有什么找回的方法?

1、使用群晖 NAS 自带的备份功能&#xff1a;如果您之前启用了群晖的备份计划&#xff0c;例如 Hyper Backup 或 Snapshot Replication&#xff0c;您可以从备份中恢复数据。 1.1、Hyper Backup 可以将数据备份到多种目的地&#xff0c;包括本地存储、外部硬盘、其他 NAS 设备等…...

【CRASH】freelist异常导致的异常地址访问

freelist异常导致的异常地址访问 问题现象初步分析继续深入新的发现沙盘推演寻找元凶分析代码后记 问题现象 项目一台设备几天内出现了两次crash&#xff0c;都是异常地址访问导致。 [66005.261660] BUG: unable to handle page fault for address: ffffff8881575110初步分析…...

【QT】C++ || 左值引用、右值引用、移动语义、完美转发

在C中&#xff0c;左右值引用是高级语言特性&#xff0c;用于更高效的内存和资源管理。了解左右值引用的概念对于编写高效的C代码非常重要。下面解释左右值引用的概念、用途和区别&#xff0c;并通过示例来说明它们的使用。 左值引用&#xff08;Lvalue Reference&#xff09;…...

【深度学习驱动流体力学】计算流体力学算例剖析与实现

目录 一.求解器分类汇总压缩性流动求解器(Compressible Flow Solvers):不可压缩流动求解器(Incompressible Flow Solvers):多相流动求解器(Multiphase Flow Solvers):热传递求解器(Heat Transfer Solvers):其他特殊求解器:其他常见求解器:求解器分类:二.求解器案…...

Midjourney角色一致性如何控制两个人物

实操演示 如何用Midjourney完成《甄嬛大战蝙蝠侠》 思路 先生成一个大致符合要求的图片&#xff0c;作为底图基于底图&#xff0c;用局部重绘功能&#xff0c;逐步修改细节 生成底图 我们想要甄嬛大战蝙蝠侠&#xff0c;先试一下直接让他生成 Zhen Huan vs. Batman, in t…...

Python基础-引用参数、斐波那契数列、无极分类

1.引用参数的问题 &#xff08;1&#xff09;列表&#xff08;list&#xff09; 引用参数&#xff0c;传地址的参数&#xff0c;即list1会因list2修改而改变。 list1 [1,2,3,4] list2 list1 print(list1) list2[2] 1 print(list2) print(list1)非引用参数&#xff0c;不传…...

【MySQL统计函数count详解】

MySQL统计函数count详解 1. count()概述2. count(1)和count(*)和count(列名)的区别3. count(*)的实现方式 1. count()概述 count() 是一个聚合函数&#xff0c;返回指定匹配条件的行数。开发中常用来统计表中数据&#xff0c;全部数据&#xff0c;不为null数据&#xff0c;或…...

大数据的发展,带动电子商务产业链,促进了社会的进步【电商数据采集API接口推动电商项目的源动力】

最近几年计算机技术在诸多领域得到了有效的应用&#xff0c;同时在多方面深刻影响着我国经济水平的发展。除此之外&#xff0c;人民群众的日常生活水平也受大数据技术的影响。 在这其中电子商务领域也在大数据技术的支持下&#xff0c;得到了明显的进步。虽然电子商务领域的发…...

怎么自己做网站版面设计/百度百家

问题描述&#xff1a; 假设有n根柱子&#xff0c;现要按下述规则在这n根柱子中依次放入编号为 1&#xff0c;2&#xff0c;3&#xff0c;4......的球。 &#xff08;1&#xff09;每次只能在某根柱子的最上面放球。 &#xff08;2&#xff09;在同一根柱子中&#xff0c;任何2个…...

做门户网站开发的技术/交换链接营销案例

有做.net的程序员和朋友曾经问过我&#xff0c;关于vs2005和vs2008、vs2008和vs2010、vs2005和vs2010项目互转的问 题&#xff0c;那么关于这个问题有两层含义&#xff1a;一种是通过高版本的编译器打开低版本的项目&#xff0c;进行升级&#xff1b;一种是通过修改Soultion文件…...

成都 网站制作/怎样在百度上做广告

前言 似乎好像大概有句话是这么说得&#xff0c;好程序与坏程序之间的区别就在于它的鲁棒性,也就是在异常情况下该程序是否还是在可hold住状态&#xff0c;能否不死&#xff0c;不崩溃&#xff0c;或者不做出一些超出预期的事情。那要做好这些&#xff0c;自然而然就要学会如何…...

专业网站建设集团/软文代写公司

《我的世界》红石计算机简单教程2017-09-05 15:49:26来源&#xff1a;网易论坛编辑&#xff1a;评论(0)《我的世界》中红石电路怎么学&#xff1f;很多玩家都对这方面都是一知半解。接下来就为大家带来“荣大”提供的红石计算机简单教程&#xff0c;希望能对大家有所帮助。教程…...

网站的色彩搭配/江苏关键词推广seo

在Xcode编译的时候&#xff0c;黄色警告提示&#xff1a;【WARN】warning:no rule to process file XXX of type sourcecode.c.h for architecture armv7. 出现这种警告的原因大致就是&#xff0c;检测到 XXX 该文件出现在编译列表中 解决方法&#xff1a;【Target】-->【…...

那里有做网站的/seo人员工作内容

svg实现右键自定义菜单例子。具体看例子即可svgmenu.htm1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2<html> 3<head> 4<title></title> 5<meta name"GENERATOR" content"Microsoft Visual S…...