• C 语言编程 — 逻辑控制语句


    目录

    前文列表

    程序编译流程与 GCC 编译器
    C 语言编程 — 基本语法
    C 语言编程 — 基本数据类型
    C 语言编程 — 变量与常量
    C 语言编程 — 运算符

    结构化程序设计

    结构化程序:采用结构化算法化繁为简地把一个复杂问题的求解过程分成可控、易理解和易处理的阶段进行,实现一个便于编写、阅读、修改和维护的程序。

    三种基本结构:1966 年,Bohra 和 Jacopini 提出顺序结构、选择结构和循环结构三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元。

    • 顺序结构:是由一组顺序执行的程序块组成。程序按照语句书写的顺序一步一步顺序执行,没有任何的跳转。
    • 选择结构:依据不同的条件选择执行不同的处理块。可以采用 if/else 语句、switch 语句,还有条件运算符来实现选择结构。
    • 循环结构:又称重复结构,反复执行某一部分的操作。

    条件分支语句

    条件分支语句可以让程序在只有条件为真的时候才去执行一段代码。

    if/else 语句

    if 语句

    #include <stdio.h>
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 10;
     
       /* 使用 if 语句检查布尔条件 */
       if( a < 20 )
       {
           /* 如果条件为真,则输出下面的语句 */
           printf("a 小于 20
    " );
       }
       printf("a 的值是 %d
    ", a);
     
       return 0;
    }
    

    if/else 语句

    #include <stdio.h>
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 100;
     
       /* 检查布尔条件 */
       if( a < 20 )
       {
           /* 如果条件为真,则输出下面的语句 */
           printf("a 小于 20
    " );
       }
       else
       {
           /* 如果条件为假,则输出下面的语句 */
           printf("a 大于 20
    " );
       }
       printf("a 的值是 %d
    ", a);
     
       return 0;
    }
    

    if/else-if/else 语句

    #include <stdio.h>
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 100;
     
       /* 检查布尔条件 */
       if( a == 10 )
       {
           /* 如果 if 条件为真,则输出下面的语句 */
           printf("a 的值是 10
    " );
       }
       else if( a == 20 )
       {
           /* 如果 else if 条件为真,则输出下面的语句 */
           printf("a 的值是 20
    " );
       }
       else if( a == 30 )
       {
           /* 如果 else if 条件为真,则输出下面的语句 */
           printf("a 的值是 30
    " );
       }
       else
       {
           /* 如果上面条件都不为真,则输出下面的语句 */
           printf("没有匹配的值
    " );
       }
       printf("a 的准确值是 %d
    ", a );
     
       return 0;
    }
    

    嵌套 if 语句

    #include <stdio.h>
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 100;
       int b = 200;
     
       /* 检查布尔条件 */
       if( a == 100 )
       {
           /* 如果条件为真,则检查下面的条件 */
           if( b == 200 )
           {
              /* 如果条件为真,则输出下面的语句 */
              printf("a 的值是 100,且 b 的值是 200
    " );
           }
       }
       printf("a 的准确值是 %d
    ", a );
       printf("b 的准确值是 %d
    ", b );
     
       return 0;
    }
    

    switch 语句

    在这里插入图片描述

    switch(表达式 1)
    {
       case 常量表达式 1 : 语句组 1;
       case 常量表达式 2 : 语句组 2;
       ...
       case 常量表达式 n : 语句组 n;
       default : 语句组 n + 1;
    }
    

    执行过程:

    1. 先计算表达式 1 的值。
    2. 然后依次把表达式 1 的值与常量表达式的值进行比较。
    3. 一旦发现表达式 1 的值能够与某个常量表达式配对, 则以此为入口号,由此开始顺序执行语句。
    4. 若表达式 1 的值与所有的 case 中的常量表达式均无法匹配, 则执行 default 后的语句组 n + 1。

    NOTE:

    • default 是个可选项,如果 switch 语句中没有 default 分支,则当 switch 后的表达式与所有的常量表达式都不匹配时,将不执行任何操作。
    • 每当表达式 oper 找到匹配的常量表达式时,会把顺序执行剩余的语句组。如果目的只是需要特定的运算结果,这时,可以采用 break 语句退出 switch 结构。

    在这里插入图片描述

    switch 语句

    #include <stdio.h>
     
    int main ()
    {
       /* 局部变量定义 */
       char grade = 'B';
     
       switch(grade)
       {
       case 'A' :
          printf("很棒!
    " );
          break;
       case 'B' :
       case 'C' :
          printf("做得好
    " );
          break;
       case 'D' :
          printf("您通过了
    " );
          break;
       case 'F' :
          printf("最好再试一下
    " );
          break;
       default :
          printf("无效的成绩
    " );
       }
       printf("您的成绩是 %c
    ", grade );
     
       return 0;
    }
    

    嵌套 switch 语句

    switch(ch1) {
       case 'A': 
          printf("这个 A 是外部 switch 的一部分" );
          switch(ch2) {
             case 'A':
                printf("这个 A 是内部 switch 的一部分" );
                break;
             case 'B': /* 内部 B case 代码 */
          }
          break;
       case 'B': /* 外部 B case 代码 */
    }
    

    三元运算符

    Exp1? Exp2 : Exp3;
    

    在这里插入图片描述

    #include<stdio.h>
     
    int main()
    {
        int num;
     
        printf("输入一个数字 : ");
        scanf("%d",&num);
     
        (num%2==0)?printf("偶数"):printf("奇数");
    }
    

    循环语句

    循环可以不断的执行一段代码,直到条件变为假,或者计数完成。

    for 循环

    for ( init; condition; increment )
    {
       statement(s);
    }
    
    1. init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
    2. 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
    3. 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
    4. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

    在这里插入图片描述

    #include <stdio.h>
     
    int main ()
    {
       /* for 循环执行 */
       for( int a = 10; a < 20; a = a + 1 )
       {
          printf("a 的值: %d
    ", a);
       }
       return 0;
    }
    

    嵌套 for 循环

    在这里插入图片描述

    for (initialization; condition; increment/decrement)
    {
        statement(s);
        for (initialization; condition; increment/decrement)
        {
            statement(s);
            ... ... ...
        }
        ... ... ...
    }
    

    while 循环

    在这里插入图片描述

    #include <stdio.h>
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 10;
    
       /* while 循环执行 */
       while( a < 20 )
       {
          printf("a 的值: %d
    ", a);
          a++;
       }
     
       return 0;
    }
    

    嵌套 while 循环

    while (condition1)
    {
        statement(s);
        while (condition2)
        {
            statement(s);
            ... ... ...
        }
        ... ... ...
    }
    

    do/while 循环

    在这里插入图片描述

    #include <stdio.h>
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 10;
    
       /* do 循环执行 */
       do
       {
           printf("a 的值: %d
    ", a);
           a = a + 1;
       }while( a < 20 );
     
       return 0;
    }
    

    嵌套 do/while 循环

    在这里插入图片描述

    do
    {
        statement(s);
        do
        {
            statement(s);
            ... ... ...
        }while (condition2);
        ... ... ...
    }while (condition1);
    

    循环控制语句

    • break
      在这里插入图片描述
    • continue
      在这里插入图片描述
    • goto
      在这里插入图片描述

    相关阅读:

  • 相关阅读:
    最简洁的Mysql修改密码,不会你打我
    两步解决jetbrains-agent-latest.zip不能拖入工作区
    JSON学习笔记
    【书评】【不推荐】《机器学习实战——基于Scikit-Learn和TensorFlow》
    weblogic更新部署
    功能网址
    jupyter快捷键
    MYSQL连接字符串参数说明
    C# 格式验证
    Supervisor
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309379.html
Copyright © 2020-2023  润新知