多路选择结构

1. else-if 多路选择结构

else-if 结构用于处理多个互斥的条件分支,从上到下依次判断,执行第一个为真的分支后跳出整个结构。

通用语法骨架:

if(条件1)
    // 条件1为true时执行
else if(条件2)
    // 条件1为false,条件2为true时执行
else if(条件3)
    // 前两个为false,条件3为true时执行
/* ... 可继续扩展 ... */
else
    // 以上所有条件均为false时执行(可选)Code language: JavaScript (javascript)

核心执行规则:

  • 一真即停:从上往下遇到第一个 true 的表达式,执行对应语句块后直接结束整个 if-else if 链。
  • 全假走else:若所有 if 条件均为 false,执行 else 分支;若省略 else 且全假,则什么都不执行。
  • 条件顺序敏感:判断区间时必须按从小到大(或大到小)严格排序,避免大区间拦截小区间的数据。

2. 薪资区间判断示例解析

if(salary < 5000)
    printf("Your pay is very poor.");      // pay < 5000
else if(salary < 15000)
    printf("Your pay is not good.");       // 5000 <= pay < 15000
else if(salary < 50000)
    printf("Your pay is not bad.");        // 15000 <= pay < 50000
else if(salary < 100000)
    printf("Your pay is very good.");      // 50000 <= pay < 100000
else
    printf("Your pay is exceptional.");    // pay >= 100000Code language: JavaScript (javascript)

逻辑要点:利用“一真即停”特性,省略了下界判断(如 salary >= 5000 && salary < 15000),代码更简洁。若把 salary < 100000 写在最前面,所有小于10万的数都会提前被拦截,导致后续分支失效。

3. 练习:根据时间输出问候语

需求:早晨(<12)输出“早上好”,中午(<14)输出“中午好”,否则输出“下午好”。

#include <stdio.h>
#include <ctype.h> 

int main(void)
{
    int hour = 5;
    if(hour < 12)
        printf("早上好");
    else if (hour < 14)
        printf("中午好");
    else 
        printf("下午好"); 
    return 0;
}Code language: PHP (php)

执行逻辑:hour=5 满足 hour < 12 直接输出“早上好”并结束判断;若为13,首个条件假,满足第二个输出“中午好”;若为15,前两个均假,走 else 输出“下午好”。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注