【跟学C++】C++控制程序流程:判断与循环(Study5)
文章目录
============================ 【说明】 ===================================================
大家好,本专栏主要是跟学C++内容,自己学习了这位博主【 AI菌】的【C++21天养成计划】,讲的十分清晰,适合小白,希望给这位博主多点关注、收藏、点赞。
主要针对所学内容,通过自己的理解进行整理,希望大家积极交流、探讨,多给意见。后面也会给大家更新,其他一些知识。若有侵权,联系删除!共同维护网络知识权利!
=======================================================================================
1、判断
大家看到这张图,是不是我们平时也会遇到类似场景,我们同样会考虑如何选择,在选择的前提必然有一定的条件。在现实生活中,经过判断选择不同的路,再去执行不同的操作,在C++中,我们也会遇到类似情形。就好比一个分段函数:
f
(
x
)
=
{
0
x>0
1
x<=0
f(x)= \begin{cases} 0& \text{x>0}\\ 1& \text{x<=0} \end{cases}
f(x)={01x>0x<=0
1.1、if…else语句
首先,对if...else
的机构做个总结:
(1) 基本结构
if(判断条件)
执行语句1;
else
执行语句2;
(2) 执行多条语句时,必须要用{}
将多条语句包括在一起,即语句块。若没有加{}
,那么程序只会执行语句1,下面的语句则不会执行:
if(判断条件){
执行语句1;
执行语句2;
}
else
执行语句3;
(3) 可以不加else。这种情况,判断条件为真时,执行1和2,否则跳出判断语句。
if(判断条件){
执行语句1;
执行语句2;
}
对于上面的分段函数,我们可以用if...else
来表示:
if(x>0){
y=0;
else
y=1;
}
1.2、if嵌套
看到这图,必然想到俄罗斯套娃(禁止套娃)。嵌套呢,也有这样的意思,在if
语句可以在里面再次嵌套if
语句,以此类推,结构如下:
if(判断条件1){
执行1;
if(判断条件2)
执行2;
else
执行3;
}
else
y=1;
1.3、多分支if语句
多分支if语句和if…else类似,只不过多分支语句面临的判断更多,条件更加精细,一般有三个及以上,例如下面的分段函数:
f
(
x
)
=
{
10
x>0
20
x=0
30
x<0
f(x)= \begin{cases} 10& \text{x>0}\\ 20& \text{x=0}\\ 30& \text{x<0}\\ \end{cases}
f(x)=⎩⎪⎨⎪⎧102030x>0x=0x<0
对应的C++实现如下:
if(x>0)
y=10;
else if(x=0)
y=20;
else
y=30;
1.4、switch-case语句
在有些问题中,需要进行多次判断选择,而每一次判断都是同一个表达式的值, 这样就没有必要在每一个嵌套的i语句中都计算一遍。在C++中就提供了switch-case来解决这类问题,结构如下:
switch(表达式){
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
case 常量表达式3:
语句3;
break;
default:
语句n+1;
break;
}
对于switch-case语句而言,它的执行顺序一般是:先计算switch
后的表达式,然后在case
中寻找表达式值与常量表达式相等的部分,并进入该case
后面进行相应语句计算,如没有找到相等的常量表达式,则进入default
内部进行执行。
switch有几个注意点:
(1) switch
语句后的表达式可以为整数、字符型、枚举型等;
(2) case
后的每个常量表达式值不能相同,但是顺序不会有影响;
(3) 每个case
后有多条语句,不需使用大括号{}
;
(4) 每个case
语句只是一个入口标记, 不能确定执行的终点,每个case分支最后应该加上break
语句,用来结束整个switch
结构。否则会从某个case
入口端开始一直执行到switch
结构的结束端。(后面会说到break和continue的区别。)
通过下面的案例来巩固一下switch-case
:
#include <iostream>
using namespace std;
int main() {
//枚举
enum MonthOfYear {
January=1,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
};
int Year = 0;
cout << "请输入这个月是哪月?(1-12):" << endl;
cin >> Year;
switch (Year)
{
case January:
cout << "This month is January!" << endl;
break;
case February:
cout << "This month is February!" << endl;
break;
case March:
cout << "This month is March!" << endl;
break;
case April:
cout << "This month is April!" << endl;
break;
case May:
cout << "This month is May!" << endl;
break;
case June:
cout << "This month is June!" << endl;
break;
case July:
cout << "This month is July!" << endl;
break;
case August:
cout << "This month is August!" << endl;
break;
case September:
cout << "This month is September!" << endl;
break;
case October:
cout << "This month is October!" << endl;
break;
case November:
cout << "This month is November!" << endl;
break;
case December:
cout << "This month is December!" << endl;
break;
default:
cout << "输入错误,请输入1-12之间的整数。" << endl;
break;
}
return 0;
}
1.5、条件运算符
还记得上一篇文章学习运算符的时候,提及了Condition? X:Y
条件运算符,它实际上与if…else类似,只不过代码量变少,易读,简单。例如我们想获取两个数中较小的那个数:
int min=(a<b)? a:b;
那么用,if…else表示就是:
int min=0;
if(a<b)
min=a;
else
min=b;
2、循环
下面就进入到循环部分。循环有很多种,例如while
循环、do...while
循环、for
循环等。
2.1、while循环
首先,是while循环,while循环的结构如下:
while(表达式)
{
循环体;
}
while
循环的执行顺序是:先判断表达式的值,若为真(true
),则执行循环体部分,例如我们计算1-50的求和。
#include <iostream>
using namespace std;
int main() {
int i = 1;
int sum = 0;
while (i <= 50) {
sum += i;
i++;
}
cout << "1-50的和为:" << sum << endl;
return 0;
}
结果为:
2.2、do…while循环
其次,是do…while循环,do...while
循环的结构如下:
do{
循环体;
}while(表达式);
do...while
循环的执行顺序是:先执行循环体部分,然后判断表达式,表达式为true
,继续执行,否则,结束循环,例如我们计算1-60的求和。
#include <iostream>
using namespace std;
int main() {
int i = 1;
int sum = 0;
do
{
sum += i;
i++;
} while (i<=60);
cout << "1-60的和为:" << sum << endl;
return 0;
}
结果为:
2.3、for循环
for循环是我们平时用的相对较多的一种循环结构,它的优势在于既可以用于循环次数确定的情况,又可以用于循环次数未知的情况,for
循环的结构如下:
for(初始语句;表达式1;表达式2){
循环体;
}
for
循环的执行顺序是:先执行初始语句,再判断表达式1 (循环控制条件) ;如果为真,则执行一次循环体, 否则退出循环。每执行次循环体后,要先计算表达式2的值,再判断表达式1,从而决定要不要继续执行循环体。同样我们计算1-70的求和。
#include <iostream>
using namespace std;
int main() {
int sum = 0;
for (int i = 1; i <=70; i++)
{
sum += i;
}
cout << "1-70的和为:" << sum << endl;
return 0;
}
结果为:
for
循环要注意的几个点:
(1) 初始语句、表达式1、表达式2
可以省略,分号;
不能省略。如:
for(;;) //相当于while(true)语句,表示将无终止地执行循环体(死循环)
(2) 表达式1
是循环控制条件,如果省略,循环将无终止地进行下去。
(3) 当初始表达语句是声明语句时,可以包含多个变量的声明,用逗号隔开。如:
for(int i=0,j=50; i<=j; i++,j--) k=i+j;
3、continue和break区别
(1) break语句:出现在switch
语句或者循环体结构中,使程序从整个循环体和switch
语句内跳出,继续执行逻辑上的下一条语句。(跳出循环)
(2) continue:可以出现在循环体中,其作用是结束本次循环(即跳过循环块中后面的代码) ;再重新判断循环条件,决定是否继续执行。(不跳出循环)
4、总结
最后,长话短说,大家看完就好好动手实践一下,切记不能三分钟热度、三天打鱼,两天晒网。大家也可以自己尝试写写博客,来记录大家平时学习的进度,可以和网上众多学者一起交流、探讨,我也会及时更新,来督促自己学习进度。一开始提及的博主【AI菌】,个人已关注,并订阅了相关专栏(对我有帮助的),希望大家觉得不错的可以点赞、关注、收藏
相关文章
- C++学习——类和对象
- C++学习——c++逗号操作符说明(附加全部运算符优先级)
- C++构造函数的作用_c++什么是构造函数
- C++11新特性:迭代数组中的元素
- 浅谈 C/C++ 的输入输出
- C/C++ Qt MdiArea 多窗体组件应用
- C/C++ 静态编译SQLITE数据库API
- 【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )
- c++基础篇之C++ 模板
- C++11 unique_ptr智能指针详解
- C++模板类(类模板)与继承
- C++ set_intersection(STL set_intersection)用法详解
- C++指针作为函数参数(详解版)
- c++const引用与非const引用介绍
- MicrosoftVisualC++程序的部署方法
- C++sizeof实例解析
- C++基本算法思想之穷举法
- C++中队列的建立与操作详细解析
- C++指向函数的指针实例解析
- C/C++实现对STORM运行信息查看及控制的方法
- VC++实现CStdioFile写入及读取文件并自动换行的方法
- C++虚函数表实例分析