【C++基础】7. 控制语句

文章目录

  • 【 1. 循环 】
    • 1.1 循环类型
    • 1.2 循环控制语句
      • break 语句
      • continue 语句
      • goto 语句
    • 1.3 无限循环
  • 【 2. 选择 】
    • switch 语句
    • ?:语句

【 1. 循环 】

1.1 循环类型

循环类型描述
while 循环当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。
for 循环多次执行一个语句序列,简化管理循环变量的代码。
do…while 循环除了它是在循环主体结尾测试条件外,其他与 while 语句类似。
嵌套循环您可以在 while、for 或 do…while 循环内使用一个或多个循环。
  • while 循环
while(condition) //condition 可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。当条件为假时,程序流将继续执行紧接着循环的下一条语句。
{// 这里放代码块 
}
  • for 循环
/*
1、init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
2、接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
3、在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
4、条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。
*/
for ( init; condition; increment )
{// 这里放代码块 
}
  • do…while 循环
/*
条件表达式出现在循环的尾部,所以循环中的 代码块 会在条件被测试之前至少执行一次。
如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 代码块 。这个过程会不断重复,直到给定条件变为假为止。
*/
do
{// 这里放代码块 }while( condition );

1.2 循环控制语句

  • 循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。C++ 提供了下列的控制语句。
控制语句描述
break 语句终止 loop 或 switch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。
continue 语句引起循环跳过主体的剩余部分,立即重新开始测试条件。
goto 语句将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。

break 语句

  • 当 break 语句出现在一个循环内时,循环会立即终止,且程序将继续执行紧接着循环的下一条语句。
  • 它可用于终止 switch 语句中的一个 case。
  • 当使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
#include <iostream>
using namespace std;int main ()
{// 局部变量声明int a = 10;// do 循环执行do{cout << "a 的值:" << a << endl;a = a + 1;if( a > 15){// 终止循环break;}}while( a < 20 );return 0;
}

在这里插入图片描述

continue 语句

  • continue 会跳过当前循环中的代码,强迫开始下一次循环。
  • 对于 for 循环,continue 语句会导致执行条件测试和循环增量部分。对于 while 和 do…while 循环,continue 语句会导致程序控制回到条件测试上。
#include <iostream>
using namespace std;int main ()
{// 局部变量声明int a = 10;// do 循环执行do{if( a == 15){// 跳过迭代a = a + 1;continue;}cout << "a 的值:" << a << endl;a = a + 1;}while( a < 20 );return 0;
}

在这里插入图片描述

#include <iostream>
using namespace std;int main ()
{// 局部变量声明int a = 10;for(a=10;a<20;a++){if( a == 15){a = a + 1;continue;// 跳过后面的语句,执行下一次循环即开始执行a++ }cout << "a 的值:" << a << endl;}return 0;
}

在这里插入图片描述

goto 语句

  • goto 语句允许把控制无条件转移到同一函数内的被标记的语句。在任何编程语言中,都不建议使用 goto 语句。 因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法
goto label;
...
...
label: statement;
#include <iostream>
using namespace std;int main ()
{// 局部变量声明int a = 10;// do 循环执行LOOP:do{if( a == 15){// 跳过迭代a = a + 1;goto LOOP;}cout << "a 的值:" << a << endl;a = a + 1;}while( a < 20 );return 0;
}

在这里插入图片描述

1.3 无限循环

  • 如果条件永远不为假,则循环将变成无限循环。
  • for 循环实现 无限循环。由于构成循环的三个表达式中任何一个都不是必需的,可以将某些条件表达式留空来构成一个无限循环。
for(;;)
{// 这里是无限循环执行的语句。
}
  • while 循环语句实现 无限循环。
while(1)
{// 这里是无限循环执行的语句。
}

【 2. 选择 】

语句描述
if 语句一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
if…else 语句一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
嵌套 if 语句在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
switch 语句一个 switch 语句允许测试一个变量等于多个值时的情况。
嵌套 switch 语句在一个 switch 语句内使用另一个 switch 语句。

switch 语句

switch(expression){case constant-expression  :statement(s);break; // 可选的case constant-expression  :statement(s);break; // 可选的// 您可以有任意数量的 case 语句default : // 可选的statement(s);
}
  • switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
  • 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
  • case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
  • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
  • 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
  • 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
  • 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
#include <iostream>
using namespace std;int main ()
{// 局部变量声明char grade = 'D';switch(grade){case 'A' :cout << "很棒!" << endl; break;case 'B' :case 'C' :cout << "做得好" << endl;break;case 'D' :cout << "您通过了" << endl;break;case 'F' :cout << "最好再试一下" << endl;break;default :cout << "无效的成绩" << endl;}cout << "您的成绩是 " << grade << endl;return 0;
}

在这里插入图片描述

?:语句

  • ? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。
Exp1 ? Exp2 : Exp3; // 其中,Exp1、Exp2 和 Exp3 是表达式。
#include <iostream>
using namespace std;int main ()
{int i=5;i==5? cout << "i等于5 " << endl :cout << "i不等于5 " << endl;return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/104060.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人体呼吸存在传感器成品,毫米波雷达探测感知技术,引领智能家居新潮流

随着科技的不断进步和人们生活质量的提高&#xff0c;智能化家居逐渐成为一种时尚和生活方式。 人体存在传感器作为智能家居中的重要组成部分&#xff0c;能够实时监测环境中人体是否存在&#xff0c;为智能家居系统提供更加精准的控制和联动。 在这个充满创新的时代&#xf…

软件测试中的43个功能测试点总结

功能测试就是对产品的各功能进行验证&#xff0c;根据功能测试用例&#xff0c;逐项测试&#xff0c;检查产品是否达到用户要求的功能。针对web系统的常用测试方法如下&#xff1a; 1、页面链接检查&#xff1a; 每一个链接是否都有对应的页面&#xff0c;并且页面之间切换正…

EagleSDR USB HAT FT600

给EagleSDR做了个USB 3.0的子卡&#xff0c;采用FT600方案&#xff0c;实物如下&#xff1a; 用FT600DataStreamerDemoApp测试&#xff0c;速度如下&#xff1a; 由于FT600是16bit的接口&#xff0c;如果用FT601的32bit接口&#xff0c;性能应该还会有大幅提升。 测试代码很简…

LeetCode 297. Serialize and Deserialize Binary Tree【树,DFS,BFS,设计,二叉树,字符串】困难

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

使用动态住宅代理还能带来哪些好处?

一、什么是动态住宅代理ip 动态住宅代理是一种代理技术&#xff0c;它利用代理服务器中转用户和目标服务器之间的网络流量&#xff0c;实现用户真实位置的屏蔽。代理提供商会有自己的ip大池子&#xff0c;当你通过代理服务器向网站发送请求时&#xff0c;服务器会从池子中选中…

JVM快速入门篇

一、JVM探究 1.1前言 请你谈谈你对jvm的理解&#xff1f;Java8虚拟机和之前的变化更新&#xff1f;什么是OOM&#xff1f;什么是栈溢出StackOverFlowError&#xff1f;怎么分析&#xff1f;jvm的常见调优参数有哪些&#xff1f;内存快照如何抓取&#xff1f;怎么分析Dump文件&…

认识模块化

1. 模块化的基本概念 1.1 什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组 合、分解和更换的单元。 1. 现实生活中的模块化 2.编程领域中的模块化 编程领域中的模块化&#xff0c;…

【vue3】一些关于hooks的使用经验

前言 最近接到了一个需求&#xff0c;隔壁嵌入式部门希望我们用前端解析渲染Kconfig表单。这篇文章用来记录一下本次使用hook pinia vue3的经验 hooks hooks的概念最早是在 React 中听到的&#xff0c;虽然早些时间也写过一点react&#xff0c;但也只是照葫芦画瓢&#xf…

BT8959T2/5 LCD 驱动

1 Preface/Foreword LCD驱动路径&#xff1a;app/gui/lcd/ SDK默认的LCD驱动&#xff1a;lcd_gc9c01.c 2 数据结构 3 代码分析

更换Eclipse的JDK版本

点击window->Preferences 选择Installed JREs 点击 Add 按钮&#xff0c; 选择Standard VM, 点击 Next。然后选择自己安装的JDK路径

[Vue3 博物馆管理系统] 使用Vue3、Element-plus tabs组件构建选项卡功能

系列文章目录 第一章 定制上中下&#xff08;顶部菜单、底部区域、中间主区域显示&#xff09;三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 第三章 使用Vue3、Element-plus走马灯组件构建轮播图 第四章 使用Vue3、Element-plus tabs组件构建选项卡功能 [第五…

搭建关键字驱动自动化测试框架

前言 那么这篇文章我们将了解关键字驱动测试又是如何驱动自动化测试完成整个测试过程的。关键字驱动框架是一种功能自动化测试框架&#xff0c;它也被称为表格驱动测试或者基于动作字的测试。关键字驱动的框架的基本工作是将测试用例分成四个不同的部分。首先是测试步骤&#…