Tutorial Study Image

C++ 中的决策


2022年8月17日, Learn eTutorial
1689

决策是根据某些条件确定语句应执行的顺序,或重复一组语句直到满足某些指定条件的过程。

为了使决策结构能够工作,程序员必须指定一个或多个条件供程序评估或测试,以及如果条件为真时要执行的一个或多个语句,以及可选地,如果条件为假时要执行的附加语句。

大多数编程语言中典型的决策结构的一般形式如下所示。

C++ 支持以下语句来处理决策

  1. if 语句
  2. switch 语句
  3. 条件运算符语句
  4. goto 语句

C++ if 语句

如何使用 if 语句进行决策?

if 语句中,一个布尔表达式后跟一个或多个语句。根据要测试的条件的复杂性,if 语句可以以多种方式实现。

各种形式如下

  • 简单 if 语句
  • if....else 语句
  • 嵌套 if....else 语句
  • else if 语句

简单 if 语句

最简单的决策语句是 if 语句。它用于确定是否执行特定的语句或语句块,即,如果特定条件为真,则执行一个语句块,否则不执行该语句块。

if control flowchart

简单 if 语句的语法


if(expression)
{
    statement-inside;
}
    statement-outside;

 

如果表达式为真,则执行“statement-inside”;否则,它将被跳过,只执行“statement-outside”。

if control flowchart

If 语句的工作原理

示例:编写一个程序,打印用户输入的正数,如果用户输入负数,则跳过。


#include <iostream>
using namespace std;

int main() {

  int number;

  cout << " Please enter an integer: ";
  cin >> number;

  // checks whether if the given number is positive
  if (number > 0) {
    cout << " yes you entered a positive integer: " << number << endl;
  }

  cout << "This statement is always executed.";

  return 0;
}

输出1

Please enter an integer: 8
yes you entered a positive integer: 8
This statement is always executed.

当用户输入 8 时,条件 number > 0 被评估为真,if 主体内的语句成功执行。

输出2

Please enter an integer: -9
This statement is always executed.

当用户输入 -9 时,条件 number > 0 被评估为假,if 主体内的语句不被执行。

C++ if....else 语句


if(expression)
{
    statement-block1;
}
else
{
    statement-block2;
}
 

如果“表达式”为真或返回真,则执行“statement-block1”;否则,跳过“statement-block1”并执行“statement-block2”。

if control flowchart

if….else 语句如何工作

if control flowchart

如果条件为真,则执行 if 主体内的代码,并跳过 else 主体内的代码而不执行。

假设如果条件被发现为假,则执行 else 主体内的代码,而不执行 if 主体内的代码。

例如:让我们编写一个程序来检查一个整数是正数还是负数,根据这个程序,0 被认为是正数。


#include <iostream>
using namespace std;

int main() {

  int number;

  cout << " Please enter an integer: ";
  cin >> number;

  if (number >= 0) {
    cout << "You  successfully entered a positive integer: " << number << endl;
  }
  else {
    cout << "You successfully entered a negative integer: " << number << endl;
  }

  cout << "This is always printed..";

  return 0;
}

输出1

Please enter an integer: 2
You  successfully entered a positive integer: 2
This is always printed..

在前面的程序中存在条件 number >= 0。如果我们输入的数字大于或等于零,那么条件为

假设我们输入了一个整数 2,那么条件就满足了。因此,if 主体内的语句成功执行。

输出2

Please enter an integer: -1
You successfully entered a negative integer: -1
This is always printed..

假设我们输入了一个整数 -1,那么条件未满足。因此,else 主体内的语句成功执行。

C++ Else if 语句


if(expression 1)
{
    statement-block1;
}
else if(expression 2) 
{
    statement-block2;
}
else if(expression 3 ) 
{
    statement-block3;
}
else 
    default-statement;

 

表达式从上到下进行测试。一旦发现真条件,与其关联的语句就会被执行。

Nested if control flowchart

例如,

让我们用 else if 语句编写一个 C++ 程序,来判断一个整数是正数、负数还是零。


#include <iostream>

using namespace std;

int main() {

    int number;

    cout << "Enter an integer: ";
    cin >> number;

    if (number > 0) {
        cout << "You entered a positive integer: " << number << endl;
    } else if (number < 0) {
        cout << "You entered a negative integer: " << number << endl;
    } else {
        cout << "You entered 0." << endl;
    }

    cout << "This is always printed..";

    return 0;
}

输出

Enter an integer: 2
You entered a positive integer: 2
This is always printed..

Enter an integer: -1
You entered a negative integer: -1
This is always printed..
 
Enter an integer: 0
You entered 0.
This is always printed.

如果值大于零,则执行 if 块内的代码。如果值小于零,则执行 else if 块内的代码。否则,执行 else 块内的代码。

C++ 嵌套 if....else 语句

有时我们可能需要在一个 if 语句内部使用另一个 if 语句。这被称为嵌套 if 语句。

Nested if control flowchart

嵌套 if 语句的语法


if (expression) {
    if (expression1) {
        statement - block1;
    } else {
        statement - block2;
    }
} else {
    statement - block3;
}
 

如果“表达式”为返回假,则执行“statement-block3”;否则,执行进入 if 条件并检查“expression 1”。然后,如果“expression 1”为返回真,则执行“statement-block1”;否则,执行“statement-block2”。

例如

让我们用嵌套 if 语句编写一个 C++ 程序,来判断一个整数是正数、负数还是零。
 


#include <iostream>

using namespace std;

int main() {

    int num;

    cout << " Please enter an integer: ";
    cin >> num;

    // outer if condition
    if (num != 0) {

        // inner if condition
        if (num > 0) {
            cout << "yes the number is positive." << endl;
        }
        // inner else condition
        else {
            cout << "yes the number is negative." << endl;
        }
    }
    // outer else condition
    else {
        cout << "The number is 0 and it is neither positive nor negative." << endl;
    }

    cout << "This is always printed.." << endl;

    return 0;
}
 

输出


Please enter an integer: 4
yes the number is positive.
This is always printed..

Please enter an integer: -9
yes the number is negative.
This is always printed..

Please enter an integer: 0
The number is 0 and it is neither positive nor negative.
This is always printed..

在上面的程序中;我们从用户那里接受一个整数并将其存储在变量 num 中。然后,我们使用一个 if...else 语句来检查 num 是否不等于

  • 当条件为时,执行内部的 if...else 语句。
  • 如果为,则执行外部 else 条件内的代码,并打印“The number is 0 and it is neither positive nor negative.”(该数字是0,既不是正数也不是负数。)

内部的 if...else 语句确定输入的数字是否为正数,即 num 是否大于零。

  • 如果这为,我们打印一条语句,说明该数字是正数。
  • 如果这为,我们打印一条语句,说明该数字是负数。

C++ 支持的用于处理决策的 switch 语句、条件运算符语句和 goto 语句将在下一篇教程中讨论。