C++流程控制语句

流程图

所有的计算机语言都有三大结构: 顺序结构、分支结构和循环结构。

顺序结构

从始至终按照语句执行,没有任何的智能可言。不会判断,更不会循环,执行完语句就结束。

分支结构

通过条件的真假选择多个分支的其中一个执行。

循环结构

一直循环某段代码,直到条件为假。

流程图的规范

开始和结束:
类矩形,但是边角为弧形。
只能通过它们开始和结束。

语句执行:
用矩形表示

判断语句:
用棱形表示,结果为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语句块,否则继续执行后面的case3、如果找不到相应的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循环最重要的是执行流程:

//举例-输出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没有执行。

posted @ 2019-08-17 11:31  NetRookieX  阅读(2)  评论(0编辑  收藏  举报