热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

二、分支结构

1.前期准备——如何判断真假在C语言中,表达式的值为0,表示逻辑“假”(false),表达式的值为非0,表示逻辑“真”(true)。常见的运算符1.算术运算符:$+,,,,\%,+

1. 前期准备——如何判断真假

  • 在 C 语言中,表达式的值为 0,表示逻辑“假”(false),表达式的值为非 0,表示逻辑“真”(true)。
  • 常见的运算符
    1. 算术运算符:$ +, -, *, /, %, ++, -- $
    2. 关系运算符:$ ==, !=, >, <, >=, <= $
    3. 逻辑运算符:&&, ||, !
    4. 位运算符:&, |, ^
    5. 赋值运算符:$ = $

2. if 语句

  • if 语句有三种方式:

    1. 单分支结构

      • if(条件表达式){
            语句1;
            语句2;
            ...
        }
      • 功能:如果条件表达式的值为真,即条件成立,花括号中的语句将被顺序执行。否则,花括号中的所有语句将被忽略(不被执行),程序将按顺序从整个选择结构之后的下一条语句继续执行。执行流程如图所示。

        *说明:格式中的“条件表达式”必须用圆括号括起来。

    技术图片

    • 示例代码

      #include 
      int main() {
          int a = 0;
          printf("请输入小于100的整数:\n");
          scanf("%d", &a);
          if (a >= 100) {
              printf("不是说好的小于100吗?你是个大骗子!!!\n");
          }
          printf("再见!\n");
          return 0;
      }
    1. 双分支结构

      • 格式

        if (条件表达式) {//操作1
            语句1;
            语句2;
            ...
        } else {//操作2
            语句3;
            语句4;
            ...
        }
        语句5;
      • 如果(条件表达式)的值为“真”,即条件成立,则执行语句1、语句2……,执行完后,从整个if-else结构的后的语句5继续向下执行;

      • 如果(条件表达式)的值为“假”,即条件不成立,那么跳过if后面花括号的所有语句,选择else后面花括号的所有语句,顺序执行 ,执行完后从整个if-else结构后的语句5继续向下执行;

      • 也就是说if-else语句总是根据(条件表达式)的结果,选择对应分支中的语句执行,执行完以后,整个if-else就算执行完了。执行流程如图所示:

      技术图片

      • 示例代码

        #include 
        int main() {
            int score = 0;
            printf("请输入你的考试分数:\n");
            scanf("%d", &score);
            if (score >= 60) {
                printf("恭喜你,及格啦!\n");
            } else {
               printf("你太弱了!\n");
            }
            return 0;
        }
    2. 多分支结构

      • 格式

        if (条件表达式1) {
            语句1;
            语句2;
            ...
        } else if (条件表达式2){
            语句3;
            语句4;
            ...
        } else {
            语句5;
            语句6;
            ...
        }
        语句7;
      • 如果(条件表达式1)的值为“真”,即条件成立,则执行语句1、语句2……,执行完后,从语句7继续向下执行;

      • 如果(条件表达式1)为“假”,程序将跳过第一个花括号中的所有语句,进而判断(条件表达式2),如果值为“真”,即条件成立,则执行语句3、语句4……,执行完后,从语句7继续向下执行;

      • 如果两个条件表达式的值都为“假”,则程序只执行语句5、语句6……执行完以后,从语句7继续向下执行。执行流程如图所示:

    技术图片

    • 示例代码

      #include 
      int main() {
          int a = 0;
          printf("请输入一个整数:\n");
          scanf("%d", &a);
          if (a > 0) {
              printf("这是个正数\n");
          } else if (a == 0) {
           printf("这是0\n");
          } else {
           printf("这是负数\n");
          }
          return 0;
      }

3. switch...case语句

  • 应用条件语句可以很方便地使程序实现分支,但是出现分支比较多的时候,虽然可以用嵌套的if语句来解决,但是程序结构会显得复杂,其至凌乱。为方便实现多情况选择,C++提供了一种switch开关语句。

  • 格式选择类语句包括 if语句和 switch 语句,用它们来解决实际应用中按不同的情况进行不同处理的问题。如根据学生的成绩,对学生做出不同的等第评价。

    switch (表达式) {
      case 常量表达式1:
          语句序列1;
          break;
      case 常量表达式2:
          语句序列2;
          break;
      …… 
      case 常量表达式n:
          语句序列n;
          break;
      default:
          语句序列n+1;
      }
  • 该语句中可以使用一次或多次case标号,但只能使用一次default标号,或者省略整个default部分;多个case标号也允许使用在同一个语句序列的前面;每个语句标号有保留字case和后面的常量表达式及冒号组成,每个常量表达式通常为字面常量,如常数或字符,一般情况下,每个case语句中不允许定义变量

  • switch语句执行过程分为以下3步描述:

    1. 计算出switch后面圆括号内表达式的值,假定为M,若它不是整型,系统将自动舍去其小数部分,只取其整数部分作为结果值
    2. 依次计算出每个case后常量表达式的值,假定它们为M1、M2、…,同样若它们的值不是整型,则自动转换为整型。
    3. 让M依次同M1、M2、…进行比较,一旦遇到M与某个值相等,则就从对应标号的语句开始执行;在碰不到相等的情况下,若存在default子句,则就执行其冒号后面的语句序列,否则不执行任何操作;当执行到复合语句最后的右花括号时就结束整个switch语句的执行。
  • 在使用switch语句时,还应注意以下几点:

    1. case语句后的各常量表达式的值不能相同,否则会出现错误码。
    2. 每个case或default后,可以包含多条语句,不需要使用“{”和“}”括起来。
    3. 各case和default子句的先后顺序可以变动,这不会影响程序执行结果。
    4. default子句可以省略,default后面的语句末尾可以不必写break。
  • 示例代码

    • 实现一个最简单的计算器支持+,-,\*,/四种运算。输入只有一行:两个参加运算的数和一个操作符(+,-,\*,/)。

    • 输出运算表达式的结果。考虑下面两种情况:

      1. 如果出现除数为0的情况,则输出:Divided by zero!
      2. 如果出现无效的操作符(即不为+,-,*,/之一),则输出:Invalid operator!
      // 以下代码为了节约纸张,多条语句放在了一行,同学们请按照上面的格式书写
      #include 
      int main() {
          float a, b, ans;
          char op;
          scanf("%f %f %c", &a, &b, &op);
          switch (op) {
              case &#39;+&#39;: printf("%f\n", a + b); break;
              case &#39;-&#39;: printf("%f\n", a - b); break;
              case &#39;*&#39;: printf("%f\n", a * b); break;
              case &#39;/&#39;:
                  if (b != 0) {
                      printf("%f\n", a / b);
                  } else {
                      printf("Divided by zero!");
                  }
                  break;
              default: printf("Invalid operator!"); break;
          }
      }

      上面的示例代码同时使用了分支结构的嵌套,从而实现更为复杂的分支结构

二、分支结构


推荐阅读
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • 本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
author-avatar
campionezhao
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有