分支(判断)语句

简介

一个程序默认是按照代码的顺序执行下来的,有时我们需要选择性的执行某些语句,这时候就需要分支的功能来实现。选择合适的分支语句可以提高程序的效率。

判断语句

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

if语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。如果布尔表达式为 真(非 0),则 if 语句内的代码块将被执行**,否则 if 语句结束后的第一组代码(闭括号后)将被执行。若执行的语句只有一句,则可以省略花括号。

if(boolean_expression)
{
   // 如果布尔表达式为真将执行的语句
}

if...else 语句

一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。

if(boolean_expression)
{
   // 如果布尔表达式为真将执行的语句
}
else
{
   // 如果布尔表达式为假将执行的语句
}

else if 语句

else if 语句是 if 和 else 的组合,对多个条件进行判断并选择不同的语句分支。在最后一条的 else 语句不需要再写条件。例如,若条件 1 为真,执行主体 1,条件 3 为真而条件 1 和条件 2 都为假,执行主体 3,所有的条件都为假才执行主体 4。

if (expression1) {
  // 如果布尔表达式为真将执行的语句;
} else if (expression2) {
  // 如果expression1为假,expression2为真将执行的语句
} else if (expression3) {
  // 如果expression1、2为假,expression3为真将执行的语句
} else {
  // 如果expression1、2、3为假将执行的语句
}

switch 语句

在 C++ 中,switch 语句用于基于不同的条件执行不同的代码块,它通常用来替代一系列的 if-else 语句,使代码更清晰和易读。

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查,在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。

switch(expression){
    case constant-expression  :
       statement(s);
       break; // 可选的
    case constant-expression  :
       statement(s);
       break; // 可选的
  
    // 您可以有任意数量的 case 语句
    default : // 可选的
       statement(s);
}

switch 语句执行时,先求出选择句(expression)的值,然后根据选择句的值选择相应的标签(constant-expression),从标签处开始执行。其中,选择句必须是一个整数类型表达式,而标签都必须是整数类型的常量,与switch中的变量又相同的数据类型。

注意事项

  • break 语句: 每个 case 语句末尾的 break 语句是可选但必要的,用于跳出 switch 语句。如果缺少 break,程序将继续执行下一个 case,这叫做"贯穿"。不过我们可能会有意使用贯穿。

  • default 语句: default 语句是可选的,但通常在所有 case 都不匹配时使用,处理所有未列出的情况。

实例:通过switch语句写一个判断星期几的程序

要求:输入一个范围为[1,1000]的变量day,并输出今天是 {XXXDay}(星期几的英文),如果day取值不符合星期几的范围,则输出Invalid day

#include <iostream>
using namespace std;

int main(){

    int day;

    cin >> day;

    switch(day){
        case 1:
            cout << "今天是 Monday" << endl;
            break;
        case 2:
            cout << "今天是 Tuesday" << endl;
            break;
        case 3:
            cout << "今天是 Wedensday" << endl;
            break;
        case 4:
            cout << "今天是 Thursday" << endl;
            break;
        case 5:
            cout << "今天是 Friday" << endl;
            break;
        case 6:
            cout << "今天是 Saturday" << endl;
            break;
        case 7:
            cout << "今天是 Sunday" << endl;
            break;
        default:
            cout << "Invalid day" << endl;
    }
}

条件运算符

在 3.1的笔记中,有记录过条件运算符。

Exp1 ? Exp2 : Exp3;

其中,Exp1、Exp2 和 Exp3 是表达式。请注意冒号的使用和位置。? : 表达式的值取决于 Exp1 的计算结果。如果 Exp1 为真,则计算 Exp2 的值,且 Exp2 的计算结果则为整个 ? : 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,且 Exp3 的计算结果则为整个 ? : 表达式的值。

Last updated