C++流程控制语句
流程图
所有的计算机语言都有三大结构: 顺序结构、分支结构和循环结构。
顺序结构
从始至终按照语句执行,没有任何的智能可言。不会判断,更不会循环,执行完语句就结束。
![](https://i.loli.net/2019/08/10/igUrIy6npZ4aWjT.png)
分支结构
通过条件的真假选择多个分支的其中一个执行。
![](https://i.loli.net/2019/08/10/BnpwIsEfUFAuWr3.png)
循环结构
一直循环某段代码,直到条件为假。
![](https://i.loli.net/2019/08/10/SLOW1gbVYzpXZPN.png)
流程图的规范
开始和结束:
类矩形,但是边角为弧形。
只能通过它们开始和结束。
语句执行:
用矩形表示
判断语句:
用棱形表示,结果为true,标明Y;反之标明N。
执行流程:
使用单向实线表示。
流程图实例
#include<iostream>
using namespace std;
void main(){
int x=0,y=0;
while (y >= 0){
cout << "first integer:";
cin >> x; // 输入一个整数
cout << "Second integer:";
cin >> y; // 输入一个整数
cout << "The bigger one:" << (x > y ? x : y) << endl << endl;
}
}
以上代码的流程图如下:
小贴士:
可以使用PPT和Visio等工具画流程图。
分支语句
if语句
形式1
if(条件)
语句; //如果条件为真则执行语句,否则不执行(直接执行后面的语句)
if(条件){ //如果是语句块,则加上大括号
语句1;
语句2;
}
形式2
if(条件)
语句1; //如果条件为真,执行语句1,否则执行语句2
else
语句2;
形式3
if(条件1) //如果条件1为真,则执行语句1,否则判断条件2
语句1;
else if(条件2) //如果条件2为真,则执行语句2,否则执行语句3。(可以添加无数个else if)
语句2;
else
语句3;
//注意:如果条件1为真,那么只会执行语句1,条件2和后面的语句都不会再判断或执行。
if语句实例
int score;
cout << "请输入你的成绩:";
cin >> score;
if (score >= 90)
cout << "你很优秀!" << endl;
else if (score >= 70) //只有成绩小于90才会判断这个if语句
cout << "更上一层楼!" << endl;
else
cout << "要加把劲哦~" << endl; //只有成绩小于90又小于70(即小于70),才会执行此语句
switch语句
问题引入
输入一个1-7的整数,根据数字输出星期几,使用if语句怎么实现?
如果使用if语句实现,那么会使得代码变得臃肿,也难以阅读,使用switch语句实现会非常合适。
switch语句结构
switch(变量){
case 变量值1:
语句1;
break;
case 变量值2:
语句2;
break;
……
default:
语句n;
}
解释:
1、根据变量的值找到相应的case开始执行。
2、遇到break则跳出switch语句块,否则继续执行后面的case。
3、如果找不到相应的case,则执行default中的语句。
switch语句实例(实现上面提出的问题)
int day = 0;
cout << "请输入一个数1-7:";
cin >> day;
switch (day){
case 1:
cout<<"星期一"<<endl;
break;
case 2:
cout<<"星期二"<<endl;
break;
case 3:
cout<<"星期三"<<endl;
break;
case 4:
cout<<"星期四"<<endl;
break;
case 5:
cout<<"星期五"<<endl;
break;
case 6:
cout<<"星期六"<<endl;
break;
case 7:
cout<<"星期天"<<endl;
break;
default:
cout<<"你的输入不合法!\n"<<endl;
}
循环语句
while语句
//while语句结构:
while(条件) //当条件为真时,一直循环.否则跳出循环
语句;
//举例-输出0到9
int i = 0;
while (i < 10){
cout << i << endl;
i++;
}
do-while语句
//do-while语句结构
do
语句; //执行完语句后判断条件,若条件为真则一直循环,否则跳出循环.
while(条件);
//举例-输出0到9
int i = 0;
do{
cout << i << endl;
i++;
} while (i < 10);
while语句和do-while语句的区别:
如果while语句的条件为假,则语句块中的语句一次也不会执行.
在do-while语句中,不管条件真假,都执行了一遍语句.(因为先执行do,再判断条件)
for循环(重中之重)
//for循环的结构
for(初始化变量;循环条件;循环变量变化)
语句;
for循环最重要的是执行流程:
![](https://i.loli.net/2019/08/17/xT2ohLis9kE7y6Y.png)
//举例-输出0到9
for (int i = 0; i < 10; i++)
cout << i << endl;
循环语句中的break和continue
break
在switch中的break的作用是跳出switch语句.在循环中的作用类似,是跳出循环体.
continue
作用是跳过循环结构中剩下的语句,直接进入新的循环.
//break举例-输出了0到4
for (int i = 0; i < 10; i++){
if(i==5) //一旦i为5,则跳出循环
break;
cout << i << endl;
}
//contine举例-换行输出了0,1,2,3,4,6,7,8,9(没有5)
for (int i = 0; i < 10; i++){
if(i==5) //一旦i为5,则进入新的循环,跳过剩余部分代码
continue;
cout << i << endl;
}
其他语句
goto语句
可以随意跳转到任意代码.
正是因为可以随意跳转到任意代码,所以代码逻辑会变得非常混乱.不建议使用!
hello1: cout << "hello1" << endl; //对此代码标明为hello1
hello2: cout << "hello2" << endl;
goto hello5; //直接跳到hello5开始执行
hello3: cout << "hello3" << endl;
hello4: cout << "hello4" << endl;
hello5: cout << "hello5" << endl;
//由于使用goto语句,直接跳转到了hello5。hello3和hello4没有执行。