当前位置: 首页 > 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;…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...