zoukankan      html  css  js  c++  java
  • C语言-03-流程控制

    一、选择结构

    1> if语句

    1. 使用注意

      ① if语句中的条件语句,不要把==和=弄混,可以把常量作为左值,
           这样的话,在无用=的情况下,编译时会报错
      ② if语句后若要定义新的变量或者有多条语句要用大括号,避免出现
           变量作用域问题和if条件成立时,无法完成预期的功能
      ③ if后面不要写分号,否则if条件满足时将执行空语句
      ④ if语句嵌套使用时,else与最靠近自己的未匹配else的if匹配
      ⑤ 在使用多个if语句时,尽量减少不必要的判断次数,以提升性能
      
    2. 示例(该博文此示例后的所有示例都是用代码块,可在本示例中测试)

    include<stdio.h>

    int main()
    {
    int a = 10;

    if (10 == a)
    {
        //若出现多条语句或定义新的变量,要写在代码块内
        int c = 10;
        printf("a=%d, c=%d
    ", a, c);
    }
    
    //编译时会报错,错误信息为expression is not assignable
    if (10 = a)
        ;
    
    //if的嵌套使用,else与第二个if匹配
    if (a>10)
        printf("a>10
    ");
        if(10 == a)
            printf("a=10
    ");
    else
        printf("a!=10
    ");
    
    return 0;
    

    }

    
    2> switch语句
    
     1. 使用注意
    	
    		① switch语句的判断条件严格意义上讲必须是整型值
    		② 每个case后面,都有一个常量表达式,该式子是在编译期间确定的
    		  常量,不能为任意的变量
    		③ 每个case标签,只是语句列表的进入点,switch的语句流会贯穿每
    		  一个case标签
    		④ 在绝大多数的case中都会有一个break语句,break语句可以将语
    		  句列表分块,该块中所有case中的语句都会被执行
    		⑤ 在每个switch语句中都尽量加上一个default语句,可以检测所有
    		  非法的值
     2. 示例
    
    	```
    	{
            //根据输入的成绩,输出对应的等级
            int score;
            int rank;
            
            printf("请输入一个人的成绩(0-100):
    ");
            scanf("%d", &score);
            
            //求出score十位上的数字,来判断等级
            rank =score / 10;
            
            switch (rank)
            {
                    //90分以上为优秀,包括100分
                case 10:
                case 9:
                    printf("优秀
    ");
                    break;
                    //80-89为良好
                case 8:
                    printf("良好
    ");
                    break;
                    //70-79为中等
                case 7:
                    printf("中等
    ");
                    break;
                    //60-69为及格
                case 6:
                    printf("及格
    ");
                    break;
                    //其他情况为不及格
                default:
                    printf("不及格
    ");
                    break;
            }
        }
    

    3> if和switch对比

    1. switch语句完成的任务,if语句一定能完成;反之,则不行
    2. if语句多用于某个区间,switch语句多用于多个离散值

    二、循环结构

    1> while

    1. 使用注意

      ① while循环最少执行的次数为0次,即一开始循环条件就不成立
      ② while循环的循环条件必须改变,否则while循环可能变成死循环或
        无效循环
      ③ 用于循环条件的变量在定义是,尽量初始化,否则可能影响循环条
        件的第一次判断结果
      
    2. 示例

    	{
            //输出100以内7的倍数的个数
            int number = 0; //用于循环条件
            int count = 0; //记录个数
            
            while(number < 100)
            {
                //从1开始,0不算7的倍数
                number++;
                if (0 == number % 7)
                {
                    count++;
                }
            }
            
            printf("100以内7的倍数的个数为:%d
    ", count);
        }
    
    

    2> do-while

    1. 使用注意

      ① 循环体至少执行一次,这是与while循环最显着的区别
      
    2. 示例

    	{
            //do-while循环,循环体至少执行一次
            int i = 5;
            do
            {
                i++;
            }while (i < 5);
            
            //while循环,循环体可以一次也不执行
            int j = 5;
            while(i < 5)
            {
                i++;
            }
        }
    

    3> for

    1. 使用注意

      ① for语句的语句一在整个循环中只会执行一次
      ② 若一个变量只用于for语句,就在for语句的语句一处定义该变量,
        可以提升性能
      ③ for循环中的循环体,相当于循环结构中的一个代码块,在其中定
        义的变量,只作用于该代码块,代码块随着循环体的执行而动态的
        出现
      ④ for语句中定义的变量具有整个循环体的作用域,随着循环结构的
        结束而消失
      ⑤ 若某数据由多层结构,每层都是相同类型的数据,一般嵌套使用for
        循环
      
    2. 示例

    	//输出九九乘法表
        for(int i = 1;i <= 9;i++)
        {
            //控制乘法表的行数
            for (int j = 1; j <= i; j++)
            {
                //控制乘法表的列数
                printf("%dx%d =%2d	", i, j, i*j);
            }
            //每行结束要换行
            printf("
    ");
        }
    

    4> continue和break在循环结构中的应用

    1. continue跳出本次循环,继续执行下一次循环,可用于switch语句
    2. break跳出内层循环,继续执行外层循环,若是最外层循环,结束循环,只能用于循环结构
  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    详解以太坊世界状态
    VDF 不是工作量证明
    以太坊:Go-Ethereum: 编译运行
    【转】理解分布式账本技术: 经济学视角
    Counterfactual 项目:广义的以太坊状态通道
    Solidity 安全:已知攻击方法和常见防御模式综合列表
    Verge 攻击解析
    以太坊区块链的轻客户端
  • 原文地址:https://www.cnblogs.com/theDesertIslandOutOfTheWorld/p/4716977.html
Copyright © 2011-2022 走看看