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

[C++]02.选择结构与循环结构

02.选择结构与循环结构

  • 一.程序流程结构
    • 1.选择结构
      • 1.1.if语句
      • 1.2.三目运算符
      • 1.3.switch语句
    • 2.循环结构
      • 2.1.while语句
      • 2.2.do-while语句
      • 2.3.for语句
      • 2.4.break语句
      • 2.5.continue语句
      • 2.6.goto语句

一.程序流程结构

  • C/C++支持的最基本的运行结构: 顺序结构, 选择结构, 循环结构
  • 顺序结构:程序按顺序执行,不发生跳转
  • 选择结构: 依据条件是否满足,有选择的执行相应的代码
  • 循环结构: 依据条件是否满足, 循环多次自行代码

1.选择结构

1.1.if语句

#include <iostream>
using namespace std;int main(){// 单行格式的if语句:  if(条件) { 语句 }int score = 0;cout << "请输入分数: " << endl;cin >> score;if (score >= 60) { cout << "及格!" << endl; }cout << "==============================" << endl;// if-else语句cout << "请输入分数: " << endl;cin >> score;if (score >= 60) {cout << "及格!" << endl;}else {cout << "不及格!" << endl;}// if-else-if语句cout << "请输入分数: " << endl;cin >> score;if (score >= 90) {cout << "优秀!" << endl;}else if (score >= 80) {cout << "良好!" << endl;}else if (score >= 60) {cout << "合格!" << endl;}else {cout << "不及格!" << endl;}system("pause");return 0;
}

案例: 三只小猪称重,要求依次输入三只小猪的体重,判断哪一只猪最重

#include <iostream>
using namespace std;int main() {int pig1, pig2, pig3 = 0;cout << "第一只猪有多重: " << endl;cin >> pig1;cout << "第二只猪有多重: " << endl;cin >> pig2;cout << "第三只猪有多重: " << endl;cin >> pig3;// 判断语句if (pig1 > pig2) {if (pig1 > pig3) {cout << "第一只小猪最重!" << endl;}else if (pig1 == pig3) {cout << "一,三小猪最重!他们一样重!" << endl;}else {cout << "第三只小猪最重!" << endl;}}else if (pig1 == pig2) {if (pig1 > pig3) {cout << "一,二小猪最重!他们一样重!" << endl;}else if (pig1 == pig3) {cout << "三只小猪一样重!" << endl;}else {cout << "第三只小猪最重!" << endl;}}else {if (pig2 > pig3) {cout << "第二只小猪最重!" << endl;}else if (pig2 == pig3) {cout << "二,三小猪最重!他们一样重!" << endl;}else {cout << "第三只小猪最重!" << endl;}}system("pause");return 0;
}

1.2.三目运算符

  • 可以实现较为简单的条件判断
  • 语法 表达式1 ? 表达式2 : 表达式3
    如果表达式1为真,那执行表达式2并返回结果,反之执行表达式3并返回结果
  • C++中三目运算符返回的是变量本身,是可以继续赋值的
int a = 10;
int b = 20;
int c = 0;c = (a > b ? a : b);  // c=b
(a > b ? a : b) == 100;  // b=100

1.3.switch语句

  • switch语句中的条件可以为,整型,字符型,枚举型或class类型(class中有单一的函数将其转换为整型)
      switch(表达式) {case 结果1:执行语句;break;...default:执行语句;break;}

2.循环结构

2.1.while语句

  • 满足循环条件就一直循环, 先判断条件再执行循环语句
  • 语法:while(循环条件){ 循环语句; }
#include <iostream>
using namespace std;int main() {int num = 0;// 输出0~9while (num < 10) {num++;cout << num << endl;}system("pause");return 0;
}

2.2.do-while语句

  • 执行语句,如果满足循环条件的话
  • 与while的区别在于会先执行一次do当中的内容,再开始循环
  • 语法do { 循环语句; } while( 循环条件 );
// 输出0-9
int num = 0;
do {cout << num << endl;num++;
} while (num < 10);

案例寻找水仙花数:


#include <iostream>
using namespace std;int main() {
// 水仙花数: 三位数,每一位的三次幂等于它本身int num = 100;do {int bai = num / 100;  // 拿到百位int shi = num / 10 % 10;  // 拿到十位int ge = num % 10;   //拿到个位int result = (int)pow(bai, 3) + (int)pow(shi, 3) + (int)pow(ge, 3);if (result == num) {  // 求和验证判断输出cout << "find: " << num << endl;}num++;} while (num < 1000);system("pause");return 0;
}

2.3.for语句

  • 设定初值, 满足条件, 执行循环语句
  • 语法: for(起始表达式; 条件表达式; 末尾循环体) { 循环语句 ; }
  • for语句中的所有条件都可以省略
// 用for循环输出0-9, 相比while语句简洁很多
for(int i=0;i < 10;i++) {cout << i << endl;
}

案例练习:敲桌子,1-100的数,如果含有7或者是7的倍数打印‘敲桌子’其余数字直接输出。

#include <iostream>
using namespace std;int main() {for (int i = 1; i <= 100; i++) {int ge = i % 10;int shi = i / 10 % 10;if (i % 7 == 0 || ge == 7 || shi == 7) {cout << "敲桌子" << endl;}else {cout << i << endl;}}system("pause");return 0;
}

案例练习:打印九九乘法表

#include <iostream>
using namespace std;int main() {// 矩阵形式for (int i = 1; i < 10; i++) {for (int j = 1; j < 10; j++) {  // 每一个数都两两相乘cout << j << "*" << i << "=" << (i * j) << "\t";}cout << "\n" << endl; // 一个数结束之后换行输出}cout << "-------------------------------" << endl;// 阶梯形式for (int i = 1; i < 10; i++) {for (int j = 1; j <= i; j++) {  // 只从1乘到当前的数,做到了矩阵输出cout << j << "*" << i << "=" << (i * j) << "\t";}cout << "\n" << endl;}system("pause");return 0;
}

2.4.break语句

  • 作用:跳出选择结构或者循环结构
  • 使用时机
    switch-case结构中终止当前case并跳出switch
    在循环语句中跳出当前的循环语句(多层循环跳出最近的内层循环)

打印阶梯乘法表的时候,也能通过break语句实现

	// 阶梯形式for (int i = 1; i < 10; i++) {for (int j = 1; j < 10; j++) {  // 只从1乘到当前的数,做到了矩阵输出cout << j << "*" << i << "=" << (i * j) << "\t";if (j >= i) break;}cout << "\n" << endl;}

2.5.continue语句

  • 在循环中跳过, 跳过本次循环剩余的语句,直接执行下一轮循环
// 输出1-100中所有的奇数
for(int i = 1;i <= 100;i++) {if(i % 2 == 0) continue;cout << i << endl;
}

2.6.goto语句

  • 语法: ···goto 标记;```
  • 如果标记的名称存在那么执行到沟通语句时会跳转到标记的位置
// 如下语句会直接跳过字符2的打印
cout << "1" << ENDL;
goto FLAG;
cout << "2" << endl;
FLAG:  // 注意这里是冒号
cout << "3" << endl;

学习笔记与课程计划
B站视频链接

相关文章:

[C++]02.选择结构与循环结构

02.选择结构与循环结构 一.程序流程结构1.选择结构1.1.if语句1.2.三目运算符1.3.switch语句 2.循环结构2.1.while语句2.2.do-while语句2.3.for语句2.4.break语句2.5.continue语句2.6.goto语句 一.程序流程结构 C/C支持的最基本的运行结构: 顺序结构, 选择结构, 循环结构顺序结…...

C语言案例 按序输出多个整数-03

难度2复杂度3 题目&#xff1a;输入多个整数&#xff0c;按从小到大的顺序输出 步骤一&#xff1a;定义程序的目标 编写一个C程序&#xff0c;随机输入整数&#xff0c;按照从小到大的顺序输出 步骤二&#xff1a;程序设计 整个C程序由三大模块组成&#xff0c;第一个模块使…...

如何获取vivado IP列表

TCL命令如下&#xff1a; set fid [open "vivado_included_ip_[version -short].csv" w] puts $fid "Name;Version" set ip_catalog [get_ipdefs *] foreach ip $ip_catalog{ set ipname [get_property DISPLAY_NAME [get_ipdefs $ip]]set iplib [get_p…...

计算机网络的定义和分类

计算机网络的定义和分类 计算机网络的定义 计算机网络的精确定义并未统一计算机网络最简单的定义是&#xff1a;一些互相连接的、自治的计算机的集合 互连:指计算机之间可以通过有线或无线的方式进行数据通信自治:是指独立的计算机&#xff0c;它有自己的硬件和软件&#xff…...

【css】超过文本显示省略号

显示省略号的前提&#xff1a;必须有指定宽度 一、单行文本超出部分显示省略号 属性取值解释overflowhidden当内容超过盒子宽度, 隐藏溢出部分white-spacenowrap让文字在一行内显示, 不换行text-overflowellipsis如果溢出的内容是文字, 就用省略号代替 .one-line{overflow:h…...

Java 8 中使用 Stream 遍历树形结构

在实际开发中&#xff0c;我们经常会开发菜单&#xff0c;树形结构&#xff0c;数据库一般就使用父id来表示&#xff0c;为了降低数据库的查询压力&#xff0c;我们可以使用Java8中的Stream流一次性把数据查出来&#xff0c;然后通过流式处理&#xff0c;我们一起来看看&#x…...

网络安全防火墙体验实验

网络拓扑 实验操作&#xff1a; 1、cloud配置 2、防火墙配置 [USG6000V1]int GigabitEthernet 0/0/0 [USG6000V1-GigabitEthernet0/0/0]ip add 192.168.200.100 24 打开防火墙的所有服务 [USG6000V1-GigabitEthernet0/0/0]service-manage all permit 3、进入图形化界面配置…...

YOLOv5引入FasterNet主干网络,目标检测速度提升明显

目录 一、背景介绍1.1 目标检测算法简介1.2 YOLOv5简介及发展历程 二、主干网络选择的重要性2.1 主干网络在目标检测中的作用2.2 YOLOv5使用的默认主干网络 三、FasterNet简介与原理解析3.1 FasterNet概述3.2 FasterNet的网络结构3.2.1 基础网络模块3.2.2 快速特征融合模块3.2.…...

SpringBoot运行时注入一个Bean

描述 使用GenericApplicationContext类的registerBean方法可以在项目运行时注入一个bean&#xff0c;获取GenericApplicationContext可以继承ApplicationContextAware&#xff0c;重写setApplicationContext&#xff0c;里面的参数就是ApplicationContext。 继承ApplicationC…...

Pyspark

2、DataFrame 2.1 介绍 在Spark语义中&#xff0c;DataFrame是一个分布式的行集合&#xff0c;可以想象为一个关系型数据库的表&#xff0c;或者一个带有列名的Excel表格。它和RDD一样&#xff0c;有这样一些特点&#xff1a; Immuatable&#xff1a;一旦RDD、DataFrame被创…...

Spring Boot 项目五维度九层次分层架构实现实践研究——持续更新中

说明&#xff1a;本博文主要参考来自 https://blog.csdn.net/BASK2311/article/details/128198005 据实践内容及代码持续总结更新中。 五个分层维度&#xff1a;SpringBoot工程分层实战 1 分层思想 计算机领域有一句话&#xff1a;计算机中任何问题都可通过增加一个虚拟层解…...

stm32常见数据类型

stm32的数据类型的字节长度 s8 占用1个byte&#xff0c;数据范围 -2^7 到 (2^7-1) s16 占用2个byte&#xff0c;数据范围 -2^15 到 (2^15-1) s32 占用 4个byte&#xff0c;数据范围 -2^31 到 (231-1)231 2147483647 int64_t占用8个byte&#xff0c;数据范围 -2^63 到 (2^63-1)…...

mac m1使用docker安装kafka

1.拉取镜像 docker pull zookeeper docker pull wurstmeister/kafka 2.启动zookeeper docker run -d --name zookeeper -p 2181:2181 zookeeper 3.设置zookeeper容器对外服务的ip Zookeeper_Server_IP$(docker inspect zookeeper --format{{ .NetworkSettings.IPAddress }}…...

SpringBoot核心配置和注解

目录 一、注解 元注解 基本注解 启动注解 二、配置 格式介绍 读取配置文件信息 案例演示1 嵌套读取bean信息 案例演示2 读取Map&#xff0c;List 以及 Array 类型配置数据 案例演示3 三、总结 一、注解 之前我们了解了SpringBoot基础和AOP简单应用&#xff0c;这期来讲…...

第三章 图论 No.3 flody之多源汇最短路,传递闭包,最小环与倍增

文章目录 多源汇最短路&#xff1a;1125. 牛的旅行传递闭包&#xff1a;343. 排序最小环&#xff1a;344. 观光之旅345. 牛站 flody的四个应用&#xff1a; 多源汇最短路传递闭包找最小环恰好经过k条边的最短路 倍增 多源汇最短路&#xff1a;1125. 牛的旅行 1125. 牛的旅行 …...

Leetcode-每日一题【剑指 Offer 17. 打印从1到最大的n位数】

题目 输入数字 n&#xff0c;按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3&#xff0c;则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n 1输出: [1,2,3,4,5,6,7,8,9] 说明&#xff1a; 用返回一个整数列表来代替打印 n 为正整数 解题思路 前置知识 M…...

远程调试MySQL内核

1 vscode 需要安装remote-ssh插件 安装成功后&#xff0c;登录&#xff1a; 默认远程服务器的登录 ssh rootip注意&#xff0c;Linux需要设置root远程登录&#xff1b; 2 安装debug扩展 C\C extemsion Pack C\C3 设置Attach进程 {// Use IntelliSense to learn about poss…...

前端学习---vue2--选项/数据--data-computed-watch-methods-props

写在前面&#xff1a; vue提供了很多数据相关的。 文章目录 data 动态绑定介绍使用使用数据 computed 计算属性介绍基础使用计算属性缓存 vs 方法完整使用 watch 监听属性介绍使用 methodspropspropsData data 动态绑定 介绍 简单的说就是进行双向绑定的区域。 vue实例的数…...

UML-构件图

目录 1.概述 2.构件的类型 3.构件和类 4.构件图 1.概述 构件图主要用于描述各种软件之间的依赖关系&#xff0c;例如&#xff0c;可执行文件和源文件之间的依赖关系&#xff0c;所设计的系统中的构件的表示法及这些构件之间的关系构成了构件图 构件图从软件架构的角度来描述…...

uniapp使用视频地址获取视频封面

很多时候我们都需要使用视频的第一帧当作视频的封面&#xff0c;今天我们从uni-app的安卓app这个环境来实现下这个需求。文中需要你对uniapp的renderjs有一定了解&#xff0c;可以先看我的这篇文章初识renderjs uniapp 安卓APP端&#xff08;ios未测试&#xff09; 方法&…...

java操作PDF:转换、合成、切分

将PDF每一页切割成图片 PDFUtils.cutPNG("D:/tmp/1.pdf","D:/tmp/输出图片路径/"); 将PDF转换成一张长图片 PDFUtils.transition_ONE_PNG("D:/tmp/1.pdf"); 将多张图片合并成一个PDF文件 PDFUtils.merge_PNG("D:/tmp/测试图片/"); 将多…...

递增子序列——力扣491

文章目录 题目描述递归枚举 + 减枝题目描述 递归枚举 + 减枝 递归枚举子序列的通用模板 vector<vector<int>> ans; vector<int> temp; void dfs(int cur...

解密!品牌独立站为何能成为外国消费者的心头爱?

中国人做事强调要知其然、知其所以然、知其所以必然。这一理念非常符合新时代中国跨境出海品牌独立站的发展思路。在做好品牌独立站之前&#xff0c;我们也必须知其然&#xff08;什么是独立站&#xff1f;&#xff09;&#xff0c;知其所以然&#xff08;为什么要建独立站&…...

【HDFS】每天一个RPC系列----complete(二):客户端侧

上图给出了最终会调用到complete RPC的客户端侧方法链路(除去Router那条线了)。 org.apache.hadoop.hdfs.DFSOutputStream#completeFile(org.apache.hadoop.hdfs.protocol.ExtendedBlock): 下面这个方法在complete rpc返回true之前,会进行重试,直到超过最大重试次数抛异…...

五、PC远程控制ESP32 LED灯

1. 整体思路 2. 代码 # 整体流程 # 1. 链接wifi # 2. 启动网络功能(UDP) # 3. 接收网络数据 # 4. 处理接收的数据import socket import time import network import machinedef do_connect():wlan = network.WLAN(network.STA_IF)wlan.active(True)if not wlan.isconnected(…...

详解PHP反射API

PHP中的反射API就像Java中的java.lang.reflect包一样。它由一系列可以分析属性、方法和类的内置类组成。它在某些方面和对象函数相似&#xff0c;比如get_class_vars()&#xff0c;但是更加灵活&#xff0c;而且可以提供更多信息。反射API也可与PHP最新的面向对象特性一起工作&…...

打开虚拟机进行ip addr无网络连接

打开虚拟机进行ip addr无网络连接 参考地址&#xff1a;https://www.cnblogs.com/Courage129/p/16796390.html 打开虚拟机进行ip addr无网络连接。 输入下面的命令&#xff0c; sudo dhclient ens33 会重新分配一个新的ip地址&#xff0c;但是此时的ip地址已经不是我原先在虚…...

Spring Boot如何整合mybatisplus

文章目录 1. 相关配置和代码2. 整合原理2.1 spring boot自动配置2.2 MybatisPlusAutoConfiguration2.3 debug流程2.3.1 MapperScannerRegistrar2.3.2MapperScannerConfigurer2.3.3 创建MybatisPlusAutoConfiguration2.3.4 创建sqlSessionFactory2.3.5 创建SqlSessionTemplate2.…...

webpack基础知识一:说说你对webpack的理解?解决了什么问题?

一、背景 Webpack 最初的目标是实现前端项目的模块化&#xff0c;旨在更高效地管理和维护项目中的每一个资源 模块化 最早的时候&#xff0c;我们会通过文件划分的形式实现模块化&#xff0c;也就是将每个功能及其相关状态数据各自单独放到不同的JS 文件中 约定每个文件是一…...

小研究 - 基于 MySQL 数据库的数据安全应用设计(二)

信息系统工程领域对数据安全的要求比较高&#xff0c;MySQL 数据库管理系统普遍应用于各种信息系统应用软件的开发之中&#xff0c;而角色与权限设计不仅关乎数据库中数据保密性的性能高低&#xff0c;也关系到用户使用数据库的最低要求。在对数据库的安全性进行设计时&#xf…...