当前位置 博文首页 > CW_qian的博客:7月20日C语言基础控制流

    CW_qian的博客:7月20日C语言基础控制流

    作者:[db:作者] 时间:2021-08-25 21:47

    什么是控制流?控制流的作用

    有时候我们运行程序时候,程序工作过程需要某些判断

    程序设计分成顺序结构,选择结构,循环结构

    二路分支(if语句不能使用break否则报错)

    • 逻辑:程序中某段代码需要在满足某个条件时才能运行
    • 判断条件可为任意表达式 :算术运算符表达式,逻辑运算符表达式,位运算符表达式,
    • 形式:
      1. if 语句:表达一种 如果-则 的条件执行关系??
        • if(判断条件){ ....} ?//小括号表示判断条件,大括号表示满足此条件运行的范围
      2. if-else 语句:表达一种 如果-否则 的互斥分支关系
        • If(){ }else{} ??判断if()条件是否成立,如果成立执行if下面的{}里面的内容,否则执行else
      3. If(){}-else?if(){}else{}?语句:
      4. If(){if(){}else if(){}else{}}else if(){}else{} // if具有可嵌套功能 // if(){...}else if(){}else是一条语句
      5. 编程建议,不管if里面是当语句还是复合语句,请先写{},再往{}里面填充语句
      6. else匹配问题:
        • else总是与它上面的,最近的,同级未匹配的if语句配对
    • 举例:

    // if 语句

    if(a%2?== 0)

    {

    ????printf("a是偶数\n");

    }

    //if-else 语句

    if(a%2?== 0)

    {

    ????printf("a是偶数\n");

    }

    else

    {

    ????printf("a是奇数\n");

    }

    • 注意:
      1. if 语句可以单独使用,else 语句不可以,else 语句必须跟if语句配套使用
      2. 不管是 if 语句还是 else 语句,代码块都必须使用大括号{}括起来,否则只有首句有效

    多路分支

    • 逻辑:根据不同的条件执行不同的代码片段
    • 语法:

    switch(n)

    {

    case?1:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //case? 2...6;? 表示2<n<6

    ????printf("one\n");

    ????break;

    case?2:

    ????printf("two\n");

    ????break;

    ??

    case?3:

    ????printf("three\n");

    ????break;

    ??

    default:

    ????printf("其他数字\n");

    }

    • 要点解析:
    1. switch(n) 语句中的 n 必须是一个整型表达式,即 switch 判断的数据必须是整型
    2. case 语句只能带整型常量,包括普通整型或字符,不包括 const 型数据。
    3. break 语句的作用是跳出整个 swtich 结构,没有 break 程序会略过case往下执行
    4. default 语句不是必须的,一般放在最后面(因此不需要 break)

    while与 do…while循环

    • 逻辑:使得程序中每一段代码可以重复循环地运行
    • 形式:
      • while 循环:先判断,再循环
      • do-while 循环:先循环,再判断

    while循环


    while循环:入口判断

    // 循环输出一系列整数,直到100为止

    int?a;

    scanf("%d", &a);

    while(a <= 100)

    {

    ????printf("%d\n", a);

    ????a++;

    }

    do-while 循环


    do-while循环:出口判断

    // 循环输出一系列整数,直到100为止

    int?a;

    scanf("%d", &a);

    do

    {

    ????printf("%d\n", a);

    ????a++;

    }while(a <= 100);

    • 语法点:
      • while 循环先进行判断,条件为真后才执行循环体,因此循环体可能一遍也不执行。
      • do-while 循环先执行循环体,再进行判断,因此循环体至少会执行一遍。
      • do-while 循环中的 while 语句后面有分号;

    for循环

    • 逻辑:与 while 循环类似,但更加紧凑,for 循环将控制循环的变量集中在一行
    • 示例:

    // 循环输出一系列整数,直到100为止

    int?a;

    for(a=30; a<=100; a++)

    {

    ????printf("%d\n", a);

    }

    • 语法点:
      • 循环头的标准语法是: for(表达式1 ; 表达式2 ; 表达式3)
      • 表达式1一般用来初始化循环控制变量
      • 表达式2一般用来作为循环判定条件,为真则进入循环,为假则跳出循环
      • 表达式3一般用来更新循环控制变量
      • 三个表达式均可以省略,但分号不能省略

    while与for的区别:
    ?? ?一般来说while()更加注重循环条件,for()更加注重循环次数,如果有确定的循环次数
    ?? ?请多用for()循环

    break与continue

    • 逻辑:
      • break:?跳出 switch 语句; ?跳出当层循环体
      • continue:结束当次循环,进入下次循环
    • 举例:

    switch(n)

    {

    case?1:

    ????printf("one\n");

    ????break; ?// 跳出 switch 语句

    case?2:

    ????printf("two\n");

    ????break; ???????

    }

    while(1)

    {

    ????int?n = scanf("%d", &a);

    ????if(n == 0)

    ????????break; // 跳出当层 while 循环体

    }

    for(int?i=1; i<=100; i++)

    {

    ????if(i%7?== 0)

    ????????continue; // 跳过所有能被7整除的数

    ?????

    ????printf("%d\n", i); ??????

    }

    goto语句

    • 逻辑:无条件跳转
    • 示例:

    int?main()

    {

    ????printf("%d\n", __LINE__); // 打印第3行

    ????

    ????// 无条件跳转到label处

    ????goto?label;

    ????printf("%d\n", __LINE__); // 打印第7行,此处被略过

    label: ?

    ????printf("%d\n", __LINE__); // 打印第9行

    }

    • 语法:
      • goto语句直接跳转到本代码块中的标签处
      • 标签指的是以冒号结尾的标识符
    • 作用:
      • goto语句的无条件跳转不利于程序的可读性,一般不建议使用
      • goto语句常被用在程序的错误处理中

    cs
    下一篇:没有了