最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

C++ 流程控制if, if…else 和嵌套 if…else

XAMPP相关 admin 86浏览 0评论

第七章:C++ if, if…else 和嵌套 if…else

在此篇教程中,我们将通过示例程序来了解 if…else 语句,用以创建决策程序。

在C++编程中,我们使用  if  语句仅在满足特定条件时才运行相应的代码块。

例如,根据学生获得的分数分配成绩(A、B、C)。

  • 如果百分比超过 90,指定成绩为 A
  • 如果百分比超过 75,指定成绩为 B
  • 如果百分比超过 65,指定成绩为 C

下面是C++中 if...else 语句的三种形式:

  1. if 语句
  2. if...else 语句
  3. if...else if...else 语句

C++ if 语句

if 语句的语法是:

if (condition)

{

   // 语句的主体
}

if 语句判断括号 ( )内的 condition :

  • 如果 condition 判断为 true,则执行 if 主体内的代码。
  • 如果 condition 判断为 false,则跳过 if 主体内的代码。

Note: { } 中的代码是 if语句的主体。

dra0099

C++ if 语句工作原理

示例 1:C++ if 语句

// 打印用户输入的正数的程序
// 如果用户输入负数,则跳过

#include <iostream>
using namespace std;

int main()

{

    int number;

    cout << "请输入整数: ";
    cin >> number;

    // 检查输入的数字是否为正数

if (number > 0)

{

        cout << "你输入的正整数: " << number << endl;
    }
    cout << "该语句始终被执行。";
    return 0;
}

输出 1:

请输入整数: 5
你输入的正整数: 5
该语句始终被执行。

当用户输入 5时, 条件 number > 0 被判断为 true 并执行 if 主体内的语句。

输出 2:

请输入整数: -5
该语句始终被执行。

当用户输入 -5时,条件 number > 0 被判断为 false 并且不执行 if 主体内的语句。


C++ if…else

if 语句可以有一个可选的 else 子语句。它的语法是:

if (condition)

{

    // 条件为真时,执行的代码块
}

else

{

    // 条件为假时,执行的代码块
}

if..else 语句判断括号内的 condition :

dra00099

C++ if…else语句工作原理

 

如果 condition 判断为 true,则:

  •  if 主体内的代码被执行
  •  else 主体内的代码被跳过执行

如果 condition 判断为 false,则:

  •  else 主体内的代码被执行
  •  if 主体内的代码被跳过执行

示例 2: C++ if…else 语句

// 检查整数是正数还是负数的程序
// 该程序将0视为正数

#include <iostream>
using namespace std;

int main()

{

     int number;

    cout << "请输入一个整数: ";
    cin >> number;

if (number >= 0)

{

        cout << "你输入的正整数为: " << number << endl;
    }

else

{

        cout << "你输入的负整数为: " << number << endl;
    }
    cout << "此行始终被执行.";
    return 0;
}

输出 1:

请输入一个整数: 4
你输入的正整数为: 4
此行始终被执行.

从上面的程序中,我们有条件 number >= 0。如果输入大于或等于 0,的数 ,则条件判断为 true

以上,当输入 4。则条件为 true。因此,执行 if 主体内的语句。

输出 2:

请输入一个整数: -4
你输入的负整数为: -4
此行始终被执行.

以上,当输入 -4。则条件为 false。因此,执行 else 主体内的语句。


C++ if…else if…else语句

if...else 语句用于在两个条件中执行代码块。但是,如果我们需要在两个以上的条件之间做出选择,我们可以使用 if...else if...else 语句。

if...else if...else 语句的语法是:

if (condition1)

{

    // 代码块 1
}

else if (condition2)

{

    // 代码块 2
}

else

{

    // 代码块 3
}

此处,

  • 若 condition1 判断为 true,  代码块1 被执行。
  • 若 condition1 判断为 false, condition2 被执行。
  • 若 condition2 是 true,  代码块2 被执行。
  • 若 condition2 是 false,  代码块3 被执行。

dra000099

if…else if…else 语句工作原理

Note: 可以有多个 else if语句,但只有一个 if 和 else 语句。


示例 3: C++ if…else if…else

// 检查输入的整数是正数、负数还是0的程序

#include <iostream>
using namespace std;

int main()

{

    int number;

    cout << "输入一个整数: ";
    cin >> number;

if (number > 0)

{

        cout << "你输入的正整数为: " << number << endl;
    }

else if (number < 0)

{

        cout << "你输入的负整数为: " << number << endl;
    }

else

    {

        cout << "你输入了 0." << endl;
    }
    cout << "始终打印此行.";
    return 0;
}

输出 1:

输入一个整数: 1
你输入的正整数为: 1
始终打印此行.

输出 2:

输入一个整数: -2
你输入的负整数为: -2
始终打印此行.

输出 3:

输入一个整数: 0
你输入了 0.
始终打印此行.

在这个程序中,我们从用户输入那里获取一个数字。然后我们使用 if...else if...else  阶梯式来检查数字是正数、负数还是零。

如果数字大于  0,则执行  if 块内的代码。如果数字小于  0,则执行 else if  块中的代码。否则,执行  else 块内的代码。


C++ 嵌套 if…else

有时,我们需要在另一个 if  语句中使用  if  语句。这称为嵌套  if语句。

这将其视为多层 if 语句。一个外部  if  语句内部是另一个内部  if  语句。它的语法是:

// 外部if语句

if (condition1)

{

    // 代码

    // 内部if语句

if (condition2)

{

        // 代码
    }
}

Notes:
1、我们可以根据需要在内部 if 语句中添加 elseelse if 语句。
2、我们可以嵌套多层 if 语句。

示例 4: C++ 嵌套 if

// C++ 程序来查找一个输入的整数是偶数还是奇数或两者都不是 (0)
// 使用嵌套的if语句
#include <iostream>
using namespace std;

int main()

{

    int num;
    cout << "输入一个整数: ";  
    cin >> num;    
    // 外部if条件
    if (num != 0) { 
        // 内部if条件
        if ((num % 2) == 0) {
            cout << "此数字是偶数." << endl;
        }
        // 内部else条件
        else {
            cout << "此数字是奇数." << endl;
        }  
    }
    // 外部else条件
    else {
        cout << "此数字是0,它既不是偶数也不是奇数." << endl;
    }
    cout << "此行始终被打印." << endl;
}

输出 1:

输入一个整数: 34
此数字是偶数.
此行始终被打印.

输出 2:

输入一个整数: 35
此数字是奇数.
此行始终被打印.

输出 3:

输入一个整数: 0
此数字是0,它既不是偶数也不是奇数.
此行始终被打印.

在上面的例子中:

  • 我们将一个整数作为用户的输入并将其存储在变量  num中。
  • 然后我们使用  if...else  语句来检查 num 是否不等于  0
    • 若为 true, 然后执行内部 if...else 的语句。
    • 若为false, 执行外部 else 条件内的代码,打印“此数字为 0,既不是偶数也不是奇数.”。
  • 内部 if...else 语句检查输入数字是否被 2整除。
    • 若为 true,然后打印出这个数字是偶数。
    • 若为 false,打印出这个数字是奇数。

请注意,0 也可以被 2 整除,但它实际上不是偶数。这就是为什么我们首先要确保外部 if 条件中的输入数字不为 0 。

Note: 如上述所见,嵌套 if...else 使你的逻辑变得复杂。如果可能,你应该始终尽量避免使用嵌套 if...else


if…else的主体只是一个语句

如果 if...else 的主体只有一个语句,则可以在程序中省略 { }。例如,可以替换此以下

int number = 5;

if (number > 0)

{

        cout << "The number is positive." << endl;
    }

else

{

        cout << "The number is negative." << endl;
    }

为:

int number = 5;

    if (number > 0)
        cout << "The number is positive." << endl;
    else
        cout << "The number is negative." << endl;

两个程序的输出是相同的。

Note: 尽管如果 if...else 的主体只有一个语句就没有必要使用 { },但是使用 { } 会使得代码更具可读性。


关于更多的条件决策

在某些情况下,三元运算符可以替换 if...else 语句。要了解 C++ 三元运算符,请翻阅后续篇 [C++三元运算符]

如果我们需要根据给定的条件在多个备选方案之间做出选择,则可以使用 switch 语句。要了解更多,请翻阅后续篇[C++ switch...case语句]

 

来源:视觉算法与编程实验室

转载请注明:XAMPP中文组官网 » C++ 流程控制if, if…else 和嵌套 if…else