C语言中的分支结构

分支结构

  • ifswitch 实现分支结构。

if 语句

语法形式

if 语句语法形式

if (表达式)
    语句;
//表达式成立(为真),则语句执行
//表达式不成立(为假),则语句不执行
// 0 为假,非 0 为真

if … else …语句语法形式

if (表达式)
    语句 1;
else
    语句 2;

分支中包含多条语句

  • 默认在 ifelse 语句中都只控制一条语句
  • 若要 if 语句同时控制两条及以上语句,使用 {} 将代码括起来

嵌套 if 语句

  • if else 语句中, else 可以与另一个 if 语句连用,构成多重判断

else 问题

  • 如果有多个 ifelseelse 总是跟最接近的 if 匹配

if 语句实现分支结构示例

#include <stdio.h>

int main() 
{
    int num = 0;
	scanf ("%d", &num);
    if (num < 0) 
    {
        printf("num是负数\n");
    }
    else if (num > 0) 
    {
        printf("num是正数\n");
    }
    else 
    {
        printf("num是零\n");
    }
    return 0;
}

关系操作符

  • C语言用于比较的表达式,称为“关系表达式
    • 关系表达式通常返回 01 ,表示真假
    • C语言中, 0 表示假,所有非零值表示真
    • 关系表达式常用 ifwhile 结构
  • 关系表达式⾥⾯使用的运算符就称为“关系运算符”,主要有下⾯6个。
    • > 大于运算符
    • < 小于运算符
    • >= 大于等于运算符
    • <= 小于等于运算符
    • == 相等运算符
    • != 不相等运算符
      • 多个关系运算符不宜连用,关系运算符是从左往右计算
      • i < j < k
        
        //实际执行
        (i < j) < k	//(i < j)返回的数值是 0 或 1,即最终结果是 0 或 1 与 k 比较
        
        //若要判断 j 是否在 i 和 k 之间,应该这样写
        i < j && j < k
        

逻辑操作符

  • ! :逻辑取反运算符。
  • && :与运算符。
  • || :或运算符。

短路

  • C语言逻运算符特点,总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。
  • 如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。
    • 对于 && 操作符来说,左边操作数的结果是 0 的时候,右边操作数就不再执行。
    • 对于 || 操作符的左操作数的结果不为 0 时,就无需执行右操作数。
  • 仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进行计算的运算称为短路求值

switch 语句

语法形式

  • switch 语句是一种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。
  • switch 后的 expression 必须是整型表达式
  • case 后的值,必须是整形常量表达式
  • case 和后边的数字之间必须有空格
  • 每一个 case 语句中的代码执行完成后,需要加 break ,才能跳出这个 switch 语句。
switch (expression)
{
    case value1: statement
    case value2: statement
    case value3: statement
    default: statement
}
//根据表达式 expression 不同的值,执行相应的 case 分支。
//如果找不到对应的值,就执行 default 分支。

switch 语句中的 break

  • 只有在 switch 语句中使用 break 才能在跳出 switch 语句
  • 如果某一个 case 语句的后边没有 break 语句,代码会继续往下执行,有可能执行其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。
    • switch 语句中 break 语句是非常重要的,能实现真正的分支效果。
    • break 不是每个 case 语句都得有,要根据实际情况。

switch 语句中的 default

  • 在使用 switch 语句的时候, switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入 default 子句。
  • switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执行 default 子句。

switch 语句实现分支结构示例

#include <stdio.h>

int main() 
{
    char grade = 'B';
    scanf("%c", &grade);
    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");
    }

    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jl12800

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值