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

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...