• C语言-控制语句


    C语言中有三大结构,分别是顺序结构、选择结构和循环结构(分支结构)。

    一、C 判断语句

    判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

    C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。

    1、if语句

    if 语句:一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

    基本语法:

    if(boolean_expression)
    {
       /* 如果布尔表达式为真将执行的语句 */
    }
    
    • 1
    • 2
    • 3
    • 4

    示例如下:

    #include 
    
    int main() {
        /* 局部变量定义 */
        int a = 10;
    
        /* 使用 if 语句检查布尔条件 */
        if (a < 20) {
            /* 如果条件为真,则输出下面的语句 */
            printf("a 小于 20\n");
        }
        printf("a 的值是 %d\n", a);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2、if…else 语句

    if…else 语句:一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。

    基本语法:

    if(boolean_expression)
    {
       /* 如果布尔表达式为真将执行的语句 */
    }
    else
    {
       /* 如果布尔表达式为假将执行的语句 */
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    示例如下:

    #include 
    
    int main() {
        /* 局部变量定义 */
        int a = 100;
    
        /* 检查布尔条件 */
        if (a < 20) {
            /* 如果条件为真,则输出下面的语句 */
            printf("a 小于 20\n");
        } else {
            /* 如果条件为假,则输出下面的语句 */
            printf("a 大于 20\n");
        }
        printf("a 的值是 %d\n", a);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    3、嵌套 if 语句

    嵌套 if 语句:你可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。

    基本语法:

    if( boolean_expression 1)
    {
       /* 当布尔表达式 1 为真时执行 */
       if(boolean_expression 2)
       {
          /* 当布尔表达式 2 为真时执行 */
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    示例如下:

    #include 
    
    int main() {
        /* 局部变量定义 */
        int a = 100;
        int b = 200;
    
        /* 检查布尔条件 */
        if (a == 100) {
            /* 如果条件为真,则检查下面的条件 */
            if (b == 200) {
                /* 如果条件为真,则输出下面的语句 */
                printf("a 的值是 100,且 b 的值是 200\n");
            }
        }
        printf("a 的准确值是 %d\n", a);
        printf("b 的准确值是 %d\n", b);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    4、switch case语句

    switch 语句:一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

    基本语法:

    switch(expression){
        case constant-expression  :
           statement(s);
           break; /* 可选的 */
        case constant-expression  :
           statement(s);
           break; /* 可选的 */
      
        /* 您可以有任意数量的 case 语句 */
        default : /* 可选的 */
           statement(s);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    注意:

    • 1)break 关键字,专门用于跳出 switch 语句。一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句。
      1. default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。

    示例如下:

    #include 
    
    int main() {
        /* 局部变量定义 */
        char grade = 'B';
    
        switch (grade) {
            case 'A' :
                printf("很棒!\n");
                break;
            case 'B' :
            case 'C' :
                printf("做得好\n");
                break;
            case 'D' :
                printf("您通过了\n");
                break;
            case 'F' :
                printf("最好再试一下\n");
                break;
            default :
                printf("无效的成绩\n");
        }
        printf("您的成绩是 %c\n", grade);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    5、嵌套 switch 语句

    嵌套 switch 语句:可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。

    基本语法:

    switch(ch1) {
       case 'A': 
          printf("这个 A 是外部 switch 的一部分" );
          switch(ch2) {
             case 'A':
                printf("这个 A 是内部 switch 的一部分" );
                break;
             case 'B': /* 内部 B case 代码 */
          }
          break;
       case 'B': /* 外部 B case 代码 */
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    示例如下:

    #include 
    
    int main() {
        /* 局部变量定义 */
        int a = 100;
        int b = 200;
    
        switch (a) {
            case 100:
                printf("这是外部 switch 的一部分\n");
                switch (b) {
                    case 200:
                        printf("这是内部 switch 的一部分\n");
                }
        }
        printf("a 的准确值是 %d\n", a);
        printf("b 的准确值是 %d\n", b);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    6、三元运算符

    基本语法:Exp1 ? Exp2 : Exp3;

    • ? 表达式的值是由 Exp1 决定的。
    • 如果 Exp1 为真,则计算 Exp2 的值,结果即为整个表达式的值。
    • 如果 Exp1 为假,则计算 Exp3 的值,结果即为整个表达式的值。

    示例如下:

    #include
    
    int main() {
        int num;
    
        printf("输入一个数字 : ");
        scanf("%d", &num);
    
        (num % 2 == 0) ? printf("偶数") : printf("奇数");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    二、C 循环语句

    1、for 循环

    for 循环:多次执行一个语句序列,简化管理循环变量的代码。

    基本语法:

    for ( init; condition; increment )
    {
       statement(s);
    }
    
    • 1
    • 2
    • 3
    • 4

    示例如下:

    #include 
    
    int main() {
        /* for 循环执行 */
        for (int a = 10; a < 20; a = a + 1) {
            printf("a 的值: %d\n", a);
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2、while 循环

    while 循环:当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。

    基本语法:

    while(condition)
    {
       statement(s);
    }
    
    • 1
    • 2
    • 3
    • 4

    condition 可以是任意的表达式,当为任意非零值时都为 true。

    • 当条件为 true 时执行循环。
    • 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。

    示例如下:

    #include 
    
    int main() {
        /* 局部变量定义 */
        int a = 10;
    
        /* while 循环执行 */
        while (a < 20) {
            printf("a 的值: %d\n", a);
            a++;
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3、do…while 循环

    do…while 循环:do…while 循环是在循环的尾部检查它的条件。

    基本语法:

    do
    {
       statement(s);
    
    }while( condition );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    示例如下:

    #include 
    
    int main() {
        /* 局部变量定义 */
        int a = 10;
    
        /* do 循环执行,在条件被测试之前至少执行一次 */
        do {
            printf("a 的值: %d\n", a);
            a = a + 1;
        } while (a < 20);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    do…while 循环与 while 循环类似,两者的区别在于:

    • do…while 循环会确保至少执行一次循环体。
    • while 循环可能一次都不会执行循环体。

    4、嵌套循环

    嵌套循环允许我们可以在 while、for 或 do…while 循环内使用一个或多个循环。

    示例如下:

    #include 
    
    int main()
    {
        int i=1,j;
        while (i <= 5)
        {
            j=1;
            while (j <= i )
            {
                printf("%d ",j);
                j++;
            }
            printf("\n");
            i++;
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    5、循环控制语句

    循环控制语句改变你代码的执行顺序。通过它你可以实现代码的跳转。

    5.1 break 语句

    break 语句:终止循环或 switch 语句。

    break 语句有下面两种用法:

    • 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
    • 它可用于终止 switch 语句中的一个 case。

    如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。

    示例如下:

    #include 
    
    int main() {
        /* 局部变量定义 */
        int a = 10;
    
        /* while 循环执行 */
        while (a < 20) {
            printf("a 的值: %d\n", a);
            a++;
            if (a > 15) {
                /* 使用 break 语句终止循环 */
                break;
            }
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    5.2 continue 语句

    continue语句:告诉一个循环体立刻停止本次循环迭代(跳过当前循环),重新开始下次循环迭代。

    • 对于 for 循环,continue 语句执行后自增语句仍然会执行。
    • 对于 while 和 do…while 循环,continue 语句会重新执行条件判断语句。

    示例如下:

    #include 
    
    int main() {
        /* 局部变量定义 */
        int a = 10;
    
        /* do 循环执行 */
        do {
            if (a == 15) {
                /* 跳过迭代 */
                a = a + 1;
                continue;
            }
            printf("a 的值: %d\n", a);
            a++;
    
        } while (a < 20);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    5.3 goto 语句

    goto 语句:允许将控制无条件转移到同一函数内的被标记的语句。但是不建议在程序中使用 goto 语句。

    注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。

    基本语法:

    goto label;
    ...;
    ...;
    label: statement;
    
    • 1
    • 2
    • 3
    • 4

    label 可以是任何除 C 关键字以外的纯文本,它可以设置在 C 程序中 goto 语句的前面或者后面。

    示例如下:

    #include 
    
    int main() {
        /* 局部变量定义 */
        int a = 10;
    
        /* do 循环执行 */
        LOOP:
        do {
            if (a == 15) {
                /* 跳过迭代 */
                a = a + 1;
                goto LOOP;
            }
            printf("a 的值: %d\n", a);
            a++;
    
        } while (a < 20);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    – 求知若饥,虚心若愚。

  • 相关阅读:
    导电滑环材料选型要注意的因素
    Java中stream是什么?有什么作用?如何使用?
    chatgpt图片识别、生成图片、语音对话多模态深度试玩
    五月集训(第二十三日)字典树
    使用Docker/K8S/Helm部署项目流程
    C++类内定义友元却无需类外声明的特殊情况
    LeetCode 0231. 2 的幂
    RBAC模型 && 各表设计与梳理
    机器学习|模型评估——AUC
    Java并发编程 | 从进程、线程到并发问题实例解决
  • 原文地址:https://blog.csdn.net/qq_42402854/article/details/133406894