zoukankan      html  css  js  c++  java
  • 二、分支结构

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

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

    2. if 语句

    • if 语句有三种方式:

      1. 单分支结构

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

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

      • 示例代码

        #include <cstdio>
        int main() {
            int a = 0;
            printf("请输入小于100的整数:
        ");
            scanf("%d", &a);
            if (a >= 100) {
                printf("不是说好的小于100吗?你是个大骗子!!!
        ");
            }
            printf("再见!
        ");
            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 <cstdio>
          int main() {
              int score = 0;
              printf("请输入你的考试分数:
          ");
              scanf("%d", &score);
              if (score >= 60) {
                  printf("恭喜你,及格啦!
          ");
              } else {
              	printf("你太弱了!
          ");
              }
              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 <cstdio>
        int main() {
            int a = 0;
            printf("请输入一个整数:
        ");
            scanf("%d", &a);
            if (a > 0) {
                printf("这是个正数
        ");
            } else if (a == 0) {
            	printf("这是0
        ");
            } else {
            	printf("这是负数
        ");
            }
            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 <cstdio>
        int main() {
        	float a, b, ans;
        	char op;
        	scanf("%f %f %c", &a, &b, &op);
        	switch (op) {
        		case '+': printf("%f
        ", a + b); break;
        		case '-': printf("%f
        ", a - b); break;
        		case '*': printf("%f
        ", a * b); break;
        		case '/':
        			if (b != 0) {
        				printf("%f
        ", a / b);
        			} else {
        				printf("Divided by zero!");
        			}
        			break;
        		default: printf("Invalid operator!"); break;
        	}
        }
        

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

  • 相关阅读:
    定时器
    自定义个性化 EditPeople控件
    infopath 2010 调试.
    MOSS 查询
    网站项目建设流程概述
    跨站点显示列表数据 ListViewWebPart
    VIM记事——大小写转换
    事务码记录 程序优化常用st12
    SAP各模块字段与表的对应关系
    固定资产一览
  • 原文地址:https://www.cnblogs.com/hbhszxyb/p/12232064.html
Copyright © 2011-2022 走看看