C++学习 程序控制结构

程序控制结构

以某种顺序执行的一系列动作,用于解决某个问题。包括 顺序结构、选择结构、循环结构。

顺序结构

按照顺序正常执行。前几篇文章的代码都是顺序结构的体现。

选择结构

执行满足条件的语句。

if 结构:if (表达式){}  表达式为真则执行,不为真则不执行

if-else 结构: if中表达式为真则执行if表达式后接的{}中内容,不为真则执行else{}中内容

if-elseif-else结构:f中表达式为真则执行if表达式后接的{}中内容,不为真继续向下判断下一个elseif,为真则执行elseif{}中内容,前面的都不满足,执行最后一个else{}中内容。

#include <iostream>
using namespace std;
int main()
{// 选择结构 if语句// 场景: 定义一个整型表示上班打卡时间,超过9点打卡视为迟到,9点前为未迟到。int time = 0;cout << "Please enter the clock in time:" << endl;cin >> time; //  第一次输入10  第二次输入8if (time > 9)   // 如果里面的表达式time > 9 返回真则执行他下面的{}中内容,如果为假则执行else后{}中内容{cout << "You're late!" << endl; // 第一次输出 You're late!}else{cout << "You're not late!" << endl; //第二次输出 You're not late!"}system("pause");return 0;
}

 

循环结构

满足循环条件,执行循环语句。

while循环

语法: while(循环条件){循环语句}

循环条件为真就执行循环语句。

#include <iostream>
using namespace std;
int main()
{// while 循环输出0-9int i = 0;while (i < 10)   // 输出9 表达式需要小于10 或者<=9{cout << i << endl;i++; // 进行+1操作然后判断i < 10 程序需要可中止,不能陷入死循环}system("pause");
}

do...while循环

满足循环条件,执行循环语句。

语法: do{循环语句}while{循环条件};

与while的区别为 do...while会先执行一次循环语句,再判断循环条件。也就是至少执行一次。

#include <iostream>
using namespace std;
int main()
{// while 循环输出0-9int i = 0;do{cout << i << endl;i++; // 进行+1操作然后判断i < 10 程序需要可中止,不能陷入死循环}  while (i< 10); // 正常输出0-10// 如果上面的条件换成while (i > 10); 那么显然i=0不满足,但是do...while是先执行一次do中内容 所以控制台还是会输出 0system("pause");
}

来个案例,体会一下  ,如果上面你没懂,你看看下面就明白了,初学者一定要多敲多练。

#include <iostream>
using namespace std;
int main()
{int i = 0;do{cout << i << endl;i++; }  while (i); system("pause");
}

 案例:水仙花

这个案例应该大学科班的都做过,大家可以看一下。

#include <iostream>
using namespace std;
int main()
{// 什么是水仙花数?// 水仙花数是指一个 n 位数(n ≥ 3),它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。// 换句话说,一个三位数的水仙花数是指满足以下条件的数字:// 如果将该数字的个位、十位和百位分别记为 a、b 和 c,则满足 a^3 + b^3 + c^3 = abc。int num = 100; // 100-999 水仙花数do{int j = 0;         // 个位数字int k = 0;         // 十位数字int l = 0;         // 百位数字j = num % 10;      // 获取个位数字k = num / 10 % 10; // 获取十位数字l = num / 100;     // 获取百位数字// 找水仙花数if (num == j * j * j + k * k * k + l * l * l)   // 这里判断是== 切记{cout <<num<<endl;}num++;} while (num < 1000);system("pause");
}

 

for循环语句

满足循环条件,执行循环语句。

语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}

#include <iostream>
using namespace std;
int main()
{// for循环 语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}// 从0打印到数字9for (int i = 0; i < 10; i++) // 执行顺序 ①int i= 0;②i<10 ③ cout << i << endl; ④i++ 然后继续循环 ②i<10 ③ cout << i << endl; ④i++直到 ②i<10已经不满足就退出了循环{cout << i << endl;}system("pause");
}

嵌套循环

循环体内再嵌套一层循环。

案例:九九乘法表 

#include <iostream>
using namespace std;
int main()
// 九九乘法表 列数*行数 = 计算结果
{for (int i = 1; i <= 9; i++){for (int j = 1; j <= i; j++){cout << j << " * " << i << " = " << j * i<<"\t"; // \t转义字符 增加个缩进,更加美观}cout << endl;}system("pause");
}

三目运算符

通过运算符进行简单判断。

语法:表达式1?表达式2:表达式3。

表达式1为真则执行表达式2,表达式1不为真则执行表达式3。

#include <iostream>
using namespace std;
int main()
{// 需求 比较a、b、c中最大的数 如果这个你可以看懂 你的三目运算应该问题不大了 int a = 5;int b = 10;int c = 17;// 拆解// 1.首先判断(a>b)?a:b 找出最大的值// 由于我们一条写完 就直接拿他和c比较,如果c大输出c,否则输出(a>b)?a:b ->a、b中的更大的值。cout<< (((a>b)?a:b)>c?((a>b)?a:b):c);   system("pause");return 0;
}

switch语句

执行多条件分支语句。

语法:

switch(表达式)

{

case 结果1:  执行语句;break;

case 结果2:  执行语句;break;

...

default: 执行语句;break;

}

#include <iostream>
using namespace std;
int main()
{// 给电影评分 10~9 非常好; 8~7 好 ;6~5 一般; <5 差;int score=0;// 请输入评价分cout<<"Please enter the score for the evaluation"<<endl;cin>>score;switch (score){case 10:case 9:cout<<"very good"<<endl;break;case 8:case 7:cout<<"good"<<endl;break;   case 6:case 5:cout<<"normal"<<endl;break;default:cout<<"bad"<<endl;break;}system("pause");return 0;
}

 swiitch语句中表达式类型是整型或字符型

case中没有break,程序会继续向下执行,不终止。

跳转语句

break语句

跳出选择结构或者循环结构。 

什么时候使用?

1. switch语句中,作用为终止case并跳出switch语句。

2. 循环语句中,跳出当前的循环语句。

3. 嵌套循环语句中,跳出最近的内层循环语句。

#include <iostream>
using namespace std;
int main()
// break// 1. switch语句中,作用为终止case并跳出switch语句。
{// // 给电影评分 10~9 非常好; 8~7 好 ;6~5 一般; <5 差;// int score=0;// // 请输入评价分//  cout<<"Please enter the score for the evaluation"<<endl;// cin>>score;// switch (score)// {// case 10:// case 9://    cout<<"very good"<<endl;//     break;// case 8:// case 7://    cout<<"good"<<endl;//     break;// case 6:// case 5://    cout<<"normal"<<endl;//     break;// default:// cout<<"bad"<<endl;// break;// }//----------------------------------------------------------------------------//// 2. 循环语句中,跳出当前的循环语句。// // 输入数字,输入为5时退出,最多输入100次// for (int i = 0; i < 100; i++)// {//     cout << "Enter a num" << endl;//     cin >> i;//     if (i == 5)//     {//         cout << "ok" << endl;//         break;//     }// }//----------------------------------------------------------------------------//// 3. 嵌套循环语句中,跳出最近的内层循环语句。for (int i = 0; i < 10; i++){for (int j = 0; j < 10; j++){if (j >= 5){break; // 正常情况下我们是画了一个10行10列的矩形* 现在加了判断 内层次j>=5就会跳出内层for循环开始i=1的内层循环遍历。// 最终结果就会打印出一个5列10行的矩形*}cout << "*";}cout << endl;}system("pause");return 0;
}

其他的可以把代码注释放开去跑,最好是自己手敲。

continue

continue 跳出本次循环

break与continue的区别:

  • break 用于完全终止循环,跳出循环体。
  • continue 用于跳过当前迭代的剩余代码,开始下一次迭代。
#include <iostream>
using namespace std;
int main()
{// continue//  // 打印 1 到 10 之间的奇数for (int i = 0; i <= 10; i++){if (i % 2 == 0) // 为偶数直接跳过本次for 开始下一次循环{continue;}cout << i << endl;}system("pause");return 0;
}

 

goto

无条件跳转语句。

语法:goto 标记;

如果标记名称存在,执行goto语句会跳转到标记的位置。

#include <iostream>
using namespace std;
int main()
{
// goto
cout<<"1"<<endl;
goto flag; // 跳转到标记位置
cout<<"2"<<endl;
flag:    // 标记在此位置
cout<<"3"<<endl;
cout<<"4"<<endl;system("pause");return 0;
}

 注意:在程序中尽量不要使用goto语句,以免造成程序流程的混乱。

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

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

相关文章

python接口自动化(三)--如何设计接口测试用例(详解)

简介 上篇我们已经介绍了什么是接口测试和接口测试的意义。在开始接口测试之前&#xff0c;我们来想一下&#xff0c;如何进行接口测试的准备工作。或者说&#xff0c;接口测试的流程是什么&#xff1f;有些人就很好奇&#xff0c;接口测试要流程干嘛&#xff1f;不就是拿着接口…

【kubernetes系列】Kubernetes之pod、lable和annotation

本章节将继续分享关于kubernetes中的一些重要概念。 一、Pod Pod 是 Kubernetes 的最小工作单元。每个 Pod 包含一个或多个容器。Pod 中的容器会作为一个整体被 Master 调度到某个 Node 上运行。(可以把pod想象成豌豆荚&#xff0c;里面的豌豆就是容器&#xff0c;可以有一个…

C++多态

面向对象语言存在三大特性&#xff0c;即&#xff1a;继承&#xff0c;封装和多态。C这一门面向对象语言当然也具有如此的特性&#xff0c;并且对于其中的继承和封装&#xff08;类和对象&#xff09;&#xff0c;我们在之前的博客中已经有所讨论过了。于是&#xff0c;在本篇博…

Altium Designer 使用总结

文章目录 1.1 原理图模式下1.1.1 元件统一命名1.1.2 原理图右下方信息框更改1.1.3 快速复制元件1.1.4 查找元器件1.1.5 垂直、水平镜像翻转元件1.1.6 查找相同的网络标号 1.2 PCB模式下1.2.1 mil 与 mm之间的单位转换1.2.2 测量1.2.3 批量修改丝印层文字大小1.2.4 属性更改1.2.…

想要让视频素材格式快速调整转换的方法分享

有时候有些视频播放软件不支持播放某些格式的视频文件&#xff1f;那要怎么解决呢&#xff1f;换一个播放软件&#xff1f;不妨试试批量转换视频格式&#xff0c;简单的几步操作就能快速解决烦恼&#xff0c;跟着小编一起来看看具体的操作环节吧。 首先先进入“固乔科技”的官网…

Docker Compose基础与实战

一、是什么 Compose 项目是 Docker 官方的开源项目&#xff0c;负责实现对 Docker 容器集群的快速编排。 二、能做什么 Compose允许用户通过一个单独的docker-compose.yml模板文件&#xff08;YAML 格式&#xff09;来定义一组相关联的应用容器为一个项目&#xff08;project&…

前端web入门-CSS-day07

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 定位 相对定位 绝对定位 定位居中 固定定位 堆叠层级 z-index 定位-总结 高级技巧 CSS 精灵 字…

将图像2D转换为3D--LeiaPix Converter

LeiaPix Converter是一款免费的在线图像处理工具&#xff0c;可帮助用户将2D图像实时转换为精美的3D光场图像。 它使用由Leia开发的专有算法&#xff0c;为照片、插画和艺术作品等2D图像添加深度和立体感&#xff0c;目前是完全免费的。 LeiaPix Converter 的特点 多格式转换…

【Spring Clound】Nacos高可用集群搭建与使用

文章目录 一、Nacos 简介二、Nacos 安装2.1、Nacos 环境依赖2.2、Nacos 服务端安装 三、Nacos 部署3.1、单实例部署3.2、 集群部署3.2.1、集群架构3.2.2、模拟部署 四、微服务集成Nacos4.1、依赖组件版本选型4.2、注册中心4.2.1、服务提供者4.2.2、服务消费者4.2.3、服务调用4.…

Linux上安装matlab

首先需要下载文件&#xff0c;微人大正版软件下载里有 然后直接点击&#xff0c;就可以就可以安装&#xff0c;不需要使用挂载命令&#xff0c;然后使用 ./install就可以进行安装了&#xff0c;这里记住是得登录自己的人大邮箱&#xff0c;否则无法激活&#xff0c;然后修改安…

HBase(9):过滤器

1 简介 在HBase中,如果要对海量的数据来进行查询,此时基本的操作是比较无力的。此时,需要借助HBase中的高级语法——Filter来进行查询。Filter可以根据列簇、列、版本等条件来对数据进行过滤查询。因为在HBase中,主键、列、版本都是有序存储的,所以借助Filter,可以高效地…

<Linux开发>驱动开发 -之- Linux RTC 驱动

&#xff1c;Linux开发&#xff1e;驱动开发 -之- Linux RTC 驱动 交叉编译环境搭建&#xff1a; &#xff1c;Linux开发&#xff1e; linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下&#xff1a; &#xff1c;Linux开发&#xff1e; -之-系统移植 uboot移植过程详细…