news 2026/4/27 5:28:23

C++ 程序流程结构详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ 程序流程结构详解

1.1 判断语句if

1.单行if语句 if

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include<iostream>

usingnamespacestd;

intmain() {

//选择语句 if语句

//用户输入分数,如果分数大于600,视为考上一本,在屏幕上输出

//1、用户输入分数

intscore = 0;

cout <<"请输入一个分数:"<<endl;

cin >> score;

//2、打印用户输入的分数

cout <<"您输入的分数为:"<< score << endl;

//3、判断是否大于600,如果大于,那么输出

if(score >600)

{

cout <<"恭喜您考上了一本大学";

}

return0;

}

2.多行if语句 if...else

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include<iostream>

usingnamespacestd;

intmain() {

//1、用户输入分数

intscore = 0;

cout <<"请输入一个分数:"<< endl;

cin >> score;

//2、打印用户输入的分数

cout <<"您输入的分数为:"<< score << endl;

//3、判断是否大于600,如果大于,那么输出

if(score > 600)

{

cout <<"恭喜 您考上了一本大学!";

}

else

{

cout <<"未考上一本";

}

return0;

}

3.多条件if语句 if...else if...else if ...else

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#include<iostream>

usingnamespacestd;

intmain() {

//1、用户输入分数

intscore = 0;

cout <<"请输入一个分数:"<< endl;

cin >> score;

//2、打印用户输入的分数

cout <<"您输入的分数为:"<< score << endl;

//3、分数大于600,视为考上一本大学

//大于500,视为考上二本大学,屏幕输出

//大于400,视为考上三本大学,屏幕输出

//小于等于400,视为未考上本科

if(score > 600)

{

cout <<"恭喜 您考上了一本大学!";

}

elseif(score > 500)

{

cout <<"恭喜 您考上了二本大学!";

}

elseif(score > 400)

{

cout <<"恭喜 您考上了二本大学!";

}

else

{

cout <<"未考上本科";

}

return0;

}

4.嵌套if语句

例1:三个数找最大

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

#include<iostream>

usingnamespacestd;

intmain() {

inta, b, c;

cin >> a >> b >> c;

cout <<"A="<< a << endl;

cout <<"B="<< b << endl;

cout <<"C="<< c << endl;

if(a>b)// a比b大

{

if(a>c)//a最大

{

cout <<"A最大"<< endl;

}

else

{

cout <<"C最大"<< endl;

}

}

else// b比a大

{

if(b > c)//b最大

{

cout <<"B最大"<< endl;

}

else

{

cout <<"C最大"<< endl;

}

}

return0;

}

例2:判断是否是闰年

闰年的定义:

  • 能被4整除,但不能被100整除;
  • 能被400整除;

法一:使用关系运算符判断

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#include<iostream>

usingnamespacestd;//命名空间

intmain() {//主函数

intyear;

cin >> year;

if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//&&优先级更高

{

cout <<"闰年"<< endl;

}

else

{

cout <<"不是闰年"<< endl;

}

return0;

}

珐二:嵌套if

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include<iostream>

usingnamespacestd;//命名空间

intmain() {//主函数

intyear;

cin >> year;

if(year % 4 == 0)

{

if(year%100==0)

{

if(year % 400 == 0) {

cout <<"闰年"<< endl;

}

else

{

cout <<"不是闰年"<< endl;

}

}

else

{

cout <<"闰年"<< endl;

}

}

else

{

cout <<"不是闰年"<< endl;

}

return0;

}

1.2 三目运算符判断

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

【解释】若表达式1的值为真,则执行表达式2,并返回表达式2的结果;

若表达式1的值为假,则执行表达式3,并返回表达式3的结果

例3:两个数找最大

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include<iostream>

usingnamespacestd;

intmain() {

//三目运算符

//创建3个变量 a b c

// 将a和b做比较,将变量大的值赋值给变量c

inta = 10;

intb = 0;

intc;

c=(a > b ? a : b);

cout <<"C="<< c << endl;//10

//C++中三目运算符返回的是变量,可以继续赋值

(a > b ? a : b)=100;

cout <<"A="<< a << endl;

cout <<"B="<< b << endl;

return0;

}

例4:判断一个数是否是3和5的整倍数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include<iostream>

usingnamespacestd;//命名空间

intmain() {//主函数

intnum;

cout <<"Please input a number:"<< endl;

cin >> num;

//法1:

(num % 3== 0&&num%5==0) ?

cout <<"yes"<< endl :

cout <<"no"<< endl;

//法2:

(num % 3 == 0)?

((num%5==0) ? cout <<"yes"<< endl : cout <<"no"<< endl):

cout <<"no"<< endl;

return0;

}

1.3 开关语句switch

注意点:

1.switch语句中表达式类型只能是整型或字符型;

2.case里如果没有break,那么程序会一直向下执行。

例5:给电影评分

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

#include<iostream>

usingnamespacestd;

intmain() {

//switch语句

//给电影进行打分

//10~9 经典

//8~7 非常好

//6~5 一般

//5以下 烂片

//1、提示用户给电影评分

cout <<"请给电影评分"<< endl;

//2、用户开始进行打分

intscore;

cin >> score;

cout <<"Score="<< score << endl;

//3、根据用户输入的分数来提示用户最后的结果

switch(score)

{

case10:

cout <<"您认为是经典电影"<< endl;

break;//退出当前分支

case9:

cout <<"您认为是经典电影"<< endl;

break;

case8:

cout <<"您认为是电影非常好"<< endl;

break;

case7:

cout <<"您认为是电影非常好"<< endl;

break;

case6:

cout <<"您认为是电影一般"<< endl;

break;

case5:

cout <<"您认为是电影一般"<< endl;

break;

default:

cout <<"您认为是烂片"<< endl;

break;

}

//if和switch区别

//switch 缺点,判断时候只能是整型或者字符型,不可以是一个区间

//switch 有点,结构清晰,执行效率高

return0;

}

例6:星期几

switch语句内遇break才停止执行

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#include<iostream>

usingnamespacestd;//命名空间

intmain() {//主函数

intn;

cin >> n;

switch(n)//首先跳转到与输入一样的case,接着往下走,遇break停止或知道语句走完才停止

{

case1:

cout <<"Monday"<< endl;

case2:

cout <<"Tuesday"<< endl;

case3:

cout <<"Wednesday"<< endl;

case4:

cout <<"Thursday"<< endl;

case5:

cout <<"Friday"<< endl;

case6:

cout <<"Saturday"<< endl;

case7:

cout <<"Sunday"<< endl;

default:

cout <<"input error"<< endl;

}

return0;

}

输出结果:

2.循环结构

2.1 while

例1:用while循环计算1~10累加

1

2

3

4

5

6

7

8

9

10

11

12

#include<iostream>

usingnamespacestd;//命名空间

intmain() {//主函数

inti = 1, sum = 0;

while(i<=10)

{

sum += i;

i++;

}

cout << sum << endl;

return0;

}

例2:案例-猜数字

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

#include<iostream>

usingnamespacestd;

#include<ctime>

intmain() {

//添加随机数种子 作用利用当前系统时间生成随机数,防止每次随机数都一样

srand((unsignedint)time(NULL));

//1、系统生成随机数

intnum =rand() % 100 + 1;//生成0~100的随机数

cout << num << endl;

//2、玩家进行猜测

cout <<"请玩家输入猜测的数据:"<< endl;

intval;//玩家输入的数据

while(1)

{

cin >> val;

//3、判断玩家的猜测

if(val > num)

{

cout <<"猜测过大!"<< endl;

}

elseif(val < num)

{

cout <<"猜测过小!"<< endl;

}

else

{

cout <<"猜对啦!"<< endl;

break;//利用该关键字,退出循环

}

}

//猜对 退出游戏

//猜错 提示猜的结果,过大或者过小 重新返回第2步

return0;

}

2.2 do...while

例3:用do...while循环计算1~10累加

1

2

3

4

5

6

7

8

9

10

11

12

#include<iostream>

usingnamespacestd;//命名空间

intmain() {//主函数

inti = 1, sum = 0;

do

{

sum += i;

i++;

}while(i <= 10);

cout << sum << endl;//55

return0;

}

while与do...while的区别:

do...while无论while中条件是否为真,先执行{}内语句;

while中条件若为假,则不执行。

例4:案例-水仙花数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include<iostream>

usingnamespacestd;

intmain() {

intnum = 100;

do

{

inta = num % 10;// 个位

intb = num / 10 % 10;//十位

intc = num / 100;//百位

if(num == a*a*a+b*b*b+c*c*c)

{

cout << num << endl;

}

num++;

}while(num<1000);

return0;

}

2.3 for

例5:用for循环计算1~10累加

1

2

3

4

5

6

7

8

9

10

11

#include<iostream>

usingnamespacestd;//命名空间

intmain() {//主函数

intsum = 0;

for(inti = 1; i <= 10; i++)

{

sum += i;

}

cout << sum << endl;

return0;

}

例6:敲桌子

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include<iostream>

usingnamespacestd;

intmain() {

//1、输出1~100的数字

//2、找7的倍数,个位有7,十位有7

for(inti = 1; i <=100; i++)

{

if(i%7==0||i%10==7||i/10%10==7) {

cout <<"敲桌子!"<< endl;

}

else

{

cout << i << endl;

}

}

return0;

}

2.4 循环控制

1.break:跳出循环

例7:遇到负数,则停止累加

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <iostream>

usingnamespacestd;

intmain()

{

inti, n, sum;

sum = 0;

cout <<"input 10 number"<< endl;

for(i = 1; i <= 10; i++)

{

cout << i <<":";

cin >> n;

if(n < 0)//判断输入是否为负数,是负数就停止累加

break;

sum += n;//对输入的数进行累加

}

cout <<"The Result :"<< sum << endl;

return0;

}

2.continu:跳出本次循环,继续下一次循环

例8:遇负,则不进行累加,接着加下一个正数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <iostream>

usingnamespacestd;

intmain()

{

inti, n, sum;

sum = 0;

cout <<"input 10 number"<< endl;

for(i = 1; i <= 10; i++)

{

cout << i <<":";

cin >> n;

if(n < 0)//判断输入是否为负数

continue;

sum += n;//对输入的数进行累加

}

cout <<"The Result :"<< sum << endl;

return0;

}

3.goto:跳转到label,接着往下走

例9:跳转

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include <iostream>

usingnamespacestd;

intmain()

{

intivar = 0;//定义一个整型变量,初始化为0

intnum = 0;//定义一个整型变量,初始化为0

label://定义一个标签

ivar++;//ivar自加1

num += ivar;//累加求和

if(ivar < 10)//判断ivar是否小于100

{

gotolabel;//转向标签

}

cout << ivar << num << endl;

return0;

}

注意点:goto语句不能越过复合语句之外的变量定义的语句,例如,下面是非法的

1

2

3

4

gotolabel;

inti 10;

label:

cout <<"goto"<< endl;

正确的:

1

2

3

4

5

6

gotolabel;

{

inti 10;

}

label:

cout <<"goto"<< endl;

2.5 循环嵌套

例10:打印三角形

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include<iostream>

usingnamespacestd;//命名空间

intmain() {//主函数

inti, j, k;

for(i = 1; i <= 5; i++)//控制行数

{

for(j = 1; j <= 5 - i; j++)//控制空格数

cout <<" ";

for(k = 1; k <= 2 * i - 1; k++)//控制打印*号的数量

cout <<"*";

cout << endl;

}

return0;

}

例11:打印星图

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include<iostream>

usingnamespacestd;

intmain() {

//利用嵌套循环实现星图

//打印一行星图

//外层循环

for(inti = 0; i < 10; i++)

{

//内层循环

for(intj = 0; j < 10; j++) {

cout <<"* ";

}

cout << endl;

}

return0;

}

例12:输出乘法口诀表

1

2

3

4

5

6

7

8

9

10

11

12

#include<iostream>

usingnamespacestd;

intmain() {

for(inti = 1; i < 10; i++)

{

for(intj = 1; j <= i; j++) {

cout << j <<"*"<< i <<"="<< i * j <<"\t";

}

cout << endl;

}

return0;

}

总结

本篇文章就到这里了,希望能够给你带来帮助

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 5:22:31

B站视频下载终极指南:免费获取大会员4K视频的完整教程

B站视频下载终极指南&#xff1a;免费获取大会员4K视频的完整教程 【免费下载链接】bilibili-downloader B站视频下载&#xff0c;支持下载大会员清晰度4K&#xff0c;持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为无法离线观看…

作者头像 李华
网站建设 2026/4/27 5:14:18

基于DTC直接转矩控制的异步电机调速系统Simulink建模与仿真

目录 ✨1.课题概述 &#x1f4ca;2.系统仿真结果 ✅3.核心程序或模型 &#x1f680;4.系统原理简介 4.1 三相定子电压、电流信号采集与坐标变换 4.2 定子磁链实时观测与幅值计算 4.3 电磁转矩实时估算 &#x1f4a2;5.完整工程文件 ✨1.课题概述 直接转矩控制&#xff…

作者头像 李华
网站建设 2026/4/27 5:11:40

最后冲刺2026年第十四届全国大学生光电设计竞赛参考作品集

B站演示地址&#xff1a;https://space.bilibili.com/3546642133289300 基于紫外可见光谱的葡萄糖高精度检测仪 基于应力发光的光电转换研究 基于NB-IoT的多路输液交互监控系统 新型L波段高精度光学延时系统 基于光电视觉识别的城市低空无人机配送系统 显微光电流特性测试与成像…

作者头像 李华
网站建设 2026/4/27 5:07:21

Weka集成机器学习实战:从原理到金融风控应用

1. 为什么选择Weka进行集成机器学习Weka作为一款开源的机器学习工具包&#xff0c;其GUI界面和Java API为算法实验提供了极大便利。特别是在集成学习方面&#xff0c;Weka内置了Bagging、Boosting、Stacking等经典算法实现&#xff0c;无需从头编写代码即可进行对比实验。我在金…

作者头像 李华