跳到主要内容

C++ if、if...else和嵌套if...else

提示
  1. if、if...else 和嵌套if...else语句:C++使用if...else语句在不同条件下运行不同的代码块,包括if语句、if...else语句和if...else if...else语句。
  2. 条件判断和执行if语句根据条件判断结果来执行代码块。若条件为真,执行if内的代码;若为假,跳过if内的代码。if...else语句在条件为假时执行else内的代码块。
  3. 嵌套if语句的使用:嵌套if语句允许在一个if语句内部使用另一个if语句,以处理更复杂的逻辑判断。这些语句可以包含elseelse if部分,并且可以嵌套多层。

在计算机编程中,我们使用 if...else 语句在某些条件下运行一段代码,在其他条件下运行另一段代码。

例如,根据学生获得的成绩分配成绩(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 语句的主体
}

if 语句评估括号 ( ) 中的 condition

  • 如果 condition 评估为 trueif 的主体中的代码将被执行。
  • 如果 condition 评估为 falseif 的主体中的代码将被跳过。

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

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 被评估为 trueif 的主体中的语句被执行。

输出 2

输入一个整数: -5
这条语句总是执行。

当用户输入 -5 时,条件 number > 0 被评估为 falseif 的主体中的语句未被执行。

C++ if...else

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

if (condition) {
// 如果条件为真,则执行的代码块
}
else {
// 如果条件为假,则执行的代码块
}

if..else语句会计算括号内的condition

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...else if 语句

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
  • 如果condition2true,则执行代码块 2
  • 如果condition2false,则执行代码块 3

if...else if...else语句的工作原理

注意: 可以有多个else if语句,但只能有一个ifelse语句。

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

// 程序用于检查整数是正数、负数还是零

#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) {
// 语句
}
}

注意:

  • 我们可以根据需要向内层if语句添加elseelse if语句。
  • 内层if语句也可以插入到外层的elseelse if语句中(如果它们存在的话)。
  • 我们可以嵌套多层if语句。

示例 4:C++嵌套的if

// C++程序查找一个整数是正数、负数还是零
// 使用嵌套的if语句

#include <iostream>
using namespace std;

int main() {

int num;

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

// 外层if条件
if (num != 0) {

// 内层if条件
if (num > 0) {
cout << "这个数字是正数。" << endl;
}
// 内层else条件
else {
cout << "这个数字是负数。" << endl;
}
}
// 外层else条件
else {
cout << "这个数字是0,既不是正数也不是负数。" << endl;
}

cout << "这行总是被打印。" << endl;

return 0;
}

输出 1

输入一个整数: 35
这个数字是正数。
这行总是被打印。

输出 2

输入一个整数: -35
这个数字是负数。
这行总是被打印。

输出 3

输入一个整数: 0
这个数字是0,既不是正数也不是负数。
这行总是被打印。

在上述示例中,

  • 我们从用户那里获取一个整数作为输入,并将其存储在变量num中。

  • 然后我们使用if...else语句来检查num是否不等于0

  • 如果true,则执行内层if...else语句。

  • 如果false,则执行外层else条件下的代码,这将打印"这个数字是0,既不是正数也不是负数。"

内层if...else语句检查输入的数字是否为正数,即num是否大于0

  • 如果true,则打印一条说明该数字为正数的语句。
  • 如果false,则打印该数字为负数。

注意: 如您所见,嵌套的if...else使逻辑变得复杂。如果可能,您应该尽量避免使用嵌套的if...else

if...else中只有一个语句的主体

如果if...else的主体只有一个语句,你可以在程序中省略{ }。例如,你可以将

int number = 5;

if (number > 0) {
cout << "这个数字是正数。" << endl;
}
else {
cout << "这个数字是负数。" << endl;
}

替换为

int number = 5;

if (number > 0)
cout << "这个数字是正数。" << endl;
else
cout << "这个数字是负数。" << endl;

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

注意: 虽然如果if...else的主体只有一个语句,不使用{ }也是可以的,但使用{ }会让你的代码更具可读性。

更多关于决策制定

在某些情况下,三元运算符可以替代if...else语句。要了解更多,请访问C++ 三元运算符

如果我们需要基于给定的测试条件在多个选项中做出选择,可以使用switch语句。要了解更多,请访问C++ switch

查看这些示例以了解更多:

C++程序检查数字是偶数还是奇数

C++程序检查字符是元音还是辅音

C++程序查找三个数字中的最大数字