• C++程序流程结构


    一.选择结构

    1.if语句

    <1>if

    <2>if......else....

    <3>if.....else if......else

    【实例】输入一个年份,判断是否为闰年。闰年的年份必须满足以下两个条件之一)(1)能被4整除,但不能被100整除的年份都是闰年。
    (2)能被400整除的年份都是闰年

    include <iostream>
    using namespace std;
     int  main()
     {
        int year;
        cout << "Enter the year:";
        cin >> year;
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))//判断是否为闰年
            cout << year << " is a leap year" << endl;
        else
            cout << year << " is not a leap year" << endl;
        system("pause");
        return 0;
    }

    2.嵌套if语句

    if语句中,如果内嵌语句又是if语句,就构成了嵌套if语句。

    一般形式如下:

    if()
    
    If()语句1
    
    else语句2
    
    Else
    
    If()语句3
    
    else语句4

    应当注意if与else的配对关系。else总是与它上面最近的、且未配对的if配对。
    假如写成:

    if()
       if()语句l
    else
        if()语句2
        else语句3

    第一个else写在与第一个if(外层if) 同一列上, 看似else与第一个if对应, 但实际上,else是与第二个if配对,因为它们相距最近,而且第二个if并未与任何else配对。
    为了避免误用,最好使每一层内嵌的if语句都包含else子句, 这样if的数目和else的数目相同,从内层到外层一一对应,不至于出错。
    如果if与else的数目不一样,为实现程序设计者的意图,可以加花括号来确定配对关系。

    例如:

    if()
    {if()语句1}//这个语句是上一行if语句的内嵌if
    else语句2//本行与第一个if配对

    这时{}限定了内嵌if语句的范围,{}外的else不会与{}内的if配对。关系清楚,不易出错。
    实例】用嵌套if语句实现上个例子的功能。代码如下:

    #include <iostream>
    using namespace std;
     int  main()
     {
        int year;
        bool leap;
        cout << "Enter the year:";
        cin >> year;
        if (year % 4 == 0) {
            if (year % 100 == 0) {
                if (year % 400 == 0) leap = true;
                else leap = false;
            }
            else leap = false;
        }
        else leap = false;
        if( leap)
            cout << year << " is" << endl;
        else
            cout << year << " is not" << endl;
        cout <<"a leap year" << endl;
        system("pause");
        return 0;
    }

    3.switch语句

    c++提供了一个switch语句, 称为多分支语句(开关语句) , 可以用来实现多分支选择程序结构。

    switch语句的语法格式为:

    switch(表达式){
    
    case 常量表达式1:语句序列1; breakcase 常量表达式2:语句序列2; breakcase 常量表达式n:语句序列n; breakdefault: 语句序列n+1;
    
    }

    (1)当switch后面括号中表达式的值与某一个case分支的常量表达式匹配时,就执行该分支。如果所有的case分支中常量表达式都不能与switch后面括号中表达式的值匹配,

    就执行default分支。

    (2)break语句可选,如果没有break语句,每一个case分支都只作为开关语句执行入口,执行完该分支后,还将接着执行其后的所有分支。因此,为保证逻辑的正确实现,

    通常每个case分支都与break语句联用。

    (3) 每个常量表达式的取值必须各不相同, 否则将引起歧义。各case子句后面必须是常量, 而不能是变量或表达式。各个case(包括default) 分支出现的次序可以任意, 通常将

    default分支放在最后。

    (4)允许多个常量表达式对应同一个语句序列。例如:

    char score;
    
    cin>>score;
    
    switch (score)
    
    case 'A'case 'a': cout<<"excellent"breakcase 'B'case 'b': cout<<"good"breakdefault:cout<<"fair"

    5)从形式上看, switch语句的可读性比嵌套if语句好, 但不是所有多选一的问题都 可由开关语句完成, 这是因为开关语句中限定了switch后面括号中表达式的类型, 它的类型可以是整型、字符型、枚举类型,而不能是浮点型。

    实例】用switch语句编写程序实现如下功能:某百货公司为了促销,采用购物打折的办法。在1000元以上者,按九五折优惠:在2000元以上者,按九折优惠:在3000元以上者,按八五折优惠;在5000元以上者,按八折优惠。编写程序,输入购物款数,计算并出优惠价。

    #include <iostream>
    using namespace std;
    int  main(){
    
        int imoney;
        cout << "请输入您消费的金额:" << endl;
        cin >> imoney;
        switch (imoney / 1000)
        {
        case 0:
            cout << "您的消费没有折扣,金额是:" << imoney << endl;
        case 1:
            cout << "您的消费享受95折优惠,金额是:" << imoney << ",优惠后的金额是:" << imoney * 0.95 << endl;
            break;
        case 2:
            cout << "您的消费享受9折优惠,金额是:" << imoney << ",优惠后的金额是:" << imoney * 0.9 << endl;
            break;
        case 3:case 4:
            cout << "您的消费享受85折优惠,金额是:" << imoney << ",优惠后的金额是:" << imoney * 0.85 << endl;
            break;
    
            default:
            cout << "您的消费享受8折优惠,金额是:" << imoney << ",优惠后的金额是:" << imoney * 0.8 << endl;
            break;
        
            
        }
        system("pause");
        return 0;
    }

     二.循环结构

    1 .while循环语句

    作用:满足循环条件,执行循环语句

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

    解释:只要循环条件的结果为真,就执行循环语句

     示例:

    int main() {
    
        int num = 0;
        while (num < 10)
        {
            cout << "num = " << num << endl;
            num++;
        }
        
        system("pause");
    
        return 0;
    }

    注意:在执行循环语句时候,程序必须提供跳出循环的出口,否则出现死循环。

    作用: 满足循环条件,执行循环语句

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

    **注意:**与while的区别在于==do...while会先执行一次循环语句==,再判断循环条件

    示例:

    int main() {
    
        int num = 0;
    
        do
        {
            cout << num << endl;
            num++;
    
        } while (num < 10);
        
        
        system("pause");
    
        return 0;
    }//与while循环区别在于,do...while先执行一次循环语句,再判断循环条件

     3. for循环语句

    作用: 满足循环条件,执行循环语句

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

    示例:

    int main() {
    
        for (int i = 0; i < 10; i++)
        {
            cout << i << endl;
        }
        
        system("pause");
    
        return 0;
    }

     详解:

    注意:for循环中的表达式,要用分号进行分隔

    总结:while , do...while, for都是开发中常用的循环语句,for循环结构比较清晰,比较常用

    4. 嵌套循环

    作用: 在循环体中再嵌套一层循环,解决一些实际问题

    示例:

    int main() {
    
    	//外层循环执行1次,内层循环执行1轮
    	for (int i = 0; i < 10; i++)
    	{
    		for (int j = 0; j < 10; j++)
    		{
    			cout << "*" << " ";
    		}
    		cout << endl;
    	}
    
    	system("pause");
    
    	return 0;
    }
    

    【实例】输出九九乘法表。

    #include <iostream>
    #include<iomanip>/*io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效。)
    iomanip的作用:
              主要是对cin, cout之类的一些操纵运算子,比如setfill, setw, setbase, setprecision等等*/
    using namespace std;
    int  main() {
        cout << "*";
        for (int i = 1; i <= 9; i++)
            cout << setw(8) << i;
            cout<< endl;//输出循环语句每一行的表头,其中setw(int n)是c++中在输出操作中使用的字段宽度设置,设置输出的域宽,n表示字段宽度
        for (int i = 1; i <= 9; i++){
            cout << i;//输出行号
            for (int j = 1; j <= i; j++)
                cout << setw(3) << i << '*' << j << '=' << setw(2) << i * j;
            cout<< endl;
    }
        system("pause");
        return 0;
    }

     三. 跳转语句

    1.break语句

    作用: 用于跳出==选择结构==或者==循环结构==

    break使用的时机:

    • 出现在switch条件语句中,作用是终止case并跳出switch
    • 出现在循环语句中,作用是跳出当前的循环语句
    • 出现在嵌套循环中,跳出最近的内层循环语句

     示例:

    int main() {
        //在循环语句中用break
        for (int i = 0; i < 10; i++)
        {
            if (i == 5)
            {
                break; //跳出循环语句
            }
            cout << i << endl;
        }
    
        system("pause");
    
        return 0;
    }

     2. continue语句

    作用:在==循环语句==中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

    示例:

    int main() {
    
        for (int i = 0; i < 100; i++)
        {
            if (i % 2 == 0)
            {
                continue;
            }
            cout << i << endl;
        }
        
        system("pause");
    
        return 0;
    }

    注意:continue并没有使整个循环终止,而break会跳出循环

    四.goto语句

    作用:可以无条件跳转语句

    语法: goto 标记;

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

    注意:在程序中不建议使用goto语句,以免造成程序流程混乱

  • 相关阅读:
    INSERT INTO插入行记录
    BULK INSERT导入数据库
    第三章 必须知道的一些基础知识[DDT书本学习 小甲鱼]【3】
    第三章 必须知道的一些基础知识[DDT书本学习 小甲鱼]【2】
    第二章 用Python设计第一个游戏[DDT书本学习 小甲鱼]
    第一章 就这么愉快地开始吧 [DDT书本学习 小甲鱼]
    Linux——添加用户操作
    Linux——常用命令
    Linux——ls
    redis基本命令
  • 原文地址:https://www.cnblogs.com/CX66/p/13765454.html
Copyright © 2020-2023  润新知