多重选择结构-if-else-if

一、if-else-if 语句的概念

如果 if 语句的嵌套都发生在 else 分支中,就可以写成 if-else-if 结构。这种形式比深层嵌套更清晰,是处理多重选择时常用的写法。

二、if-else-if 的语法形式

if (表达式1)
    语句1
else if (表达式2)
    语句2
else if (表达式3)
    语句3
...
else
    语句nCode language: PHP (php)

其中语句 1、语句 2、语句 3……语句 n 可以是单条语句,也可以是用大括号括起来的复合语句。

三、执行顺序

程序从上到下依次判断每个表达式的值:

  • 若表达式 1 为 true,执行语句 1,然后跳过整个结构,后续表达式不再判断。
  • 若表达式 1 为 false,继续判断表达式 2。
  • 若表达式 2 为 true,执行语句 2,然后跳过整个结构。
  • 以此类推,若所有表达式都为 false,则执行最后的 else 分支(语句 n)。
  • 如果省略了最后的 else,则所有条件都不满足时,整个结构不执行任何操作。

四、示例:比较两个数的大小

以下代码使用 if-else-if 结构比较两个整数的大小关系:

int x, y;
x = 23;
y = 23;
if (x == y)
{
    cout << "x == y";
}
else if (x > y)
{
    cout << "x > y";
}
else
{
    cout << "x < y";
}Code language: JavaScript (javascript)

分析:首先判断 x 是否等于 y;若不成立,再判断 x 是否大于 y;若仍不成立,则执行最后的 else 分支,输出 x < y。三种情况互斥且完整覆盖。

五、代码示例

以下代码演示了 if-else-if 结构的实际应用:

#include <iostream>
using namespace std;

int main()
{
    // 示例1:判断成绩等级
    int score = 78;
    if (score >= 90)
        cout << "优秀" << endl;
    else if (score >= 80)
        cout << "良好" << endl;
    else if (score >= 70)
        cout << "中等" << endl;
    else if (score >= 60)
        cout << "及格" << endl;
    else
        cout << "不及格" << endl;

    // 示例2:判断字符类型
    char ch = 'A';
    if (ch >= 'a' && ch <= 'z')
        cout << "小写字母" << endl;
    else if (ch >= 'A' && ch <= 'Z')
        cout << "大写字母" << endl;
    else if (ch >= '0' && ch <= '9')
        cout << "数字字符" << endl;
    else
        cout << "其他字符" << endl;

    // 示例3:根据输入数字输出对应星期
    int day;
    cout << "Enter a number (1-7): ";
    cin >> day;
    if (day == 1)
        cout << "Monday" << endl;
    else if (day == 2)
        cout << "Tuesday" << endl;
    else if (day == 3)
        cout << "Wednesday" << endl;
    else if (day == 4)
        cout << "Thursday" << endl;
    else if (day == 5)
        cout << "Friday" << endl;
    else if (day == 6)
        cout << "Saturday" << endl;
    else if (day == 7)
        cout << "Sunday" << endl;
    else
        cout << "Invalid input" << endl;

    // 示例4:判断三角形类型
    int a = 3, b = 4, c = 5;
    if (a + b > c && a + c > b && b + c > a)
    {
        if (a == b && b == c)
            cout << "Equilateral triangle" << endl;
        else if (a == b || b == c || a == c)
            cout << "Isosceles triangle" << endl;
        else
            cout << "Scalene triangle" << endl;
    }
    else
        cout << "Not a triangle" << endl;

    return 0;
}Code language: PHP (php)

发表回复

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