Day4 C++ 程序运行结构

 C/C++支持最基本的三种程序运行结构:==顺序结构、选择结构、循环结构==

  • 顺序结构:程序按顺序执行,不发生跳转

  • 选择结构:依据条件是否满足,有选择的执行相应功能

  • 循环结构:依据条件是否满足,循环多次执行某段代码

选择结构

if选择结构

C++中if语句的语法格式如下:

单条件的if语句
单行格式if语句格式:

if(条件){ 条件满足执行的语句 } 或者if(条件)条件满足执行的语句;

if (condition) statement;

如果条件condition满足,则执行statement语句。

多行格式if语句格式:

if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 }

if (condition) { statement1; statement2; // ... }

如果条件condition满足,则依次执行每行语句statement1statement2等。

多条件的if语句
语法格式:

if(条件1){ 条件1满足执行的语句 }else if(条件2){条件2满足执行的语句}... else{ 都不满足执行的语句}

if (condition1) { statement1; } else if (condition2) { statement2; } else { statement3; }

如果条件condition1满足,则执行statement1;如果条件condition1不满足但condition2满足,则执行statement2;如果所有条件都不满足,则执行statement3

注意:if条件表达式后不要加分号

三目运算符

三目运算符是C++中一种简洁的条件表达式,也被称为条件运算符

语法格式 
condition ? expression1 : expression2;

其中,condition是一个条件表达式,expression1expression2是两个可能的结果表达式。

运行时,首先计算condition的值。

如果它为真(非零),则返回expression1的值;

如果它为假(零),则返回expression2的值。

三目运算符可以用于简化if-else语句的写法,尤其在需要根据条件选择不同的值时,非常方便。

int x = 5; int y = (x > 0) ? 10 : -10; // 如果x大于0,返回10,否则返回-10
注意

三目运算符通常用于简单的条件判断,和if语句比较,三目运算符优点是短小整洁,缺点是如果用嵌套,结构不清晰 如果条件逻辑较复杂,建议使用if-else语句来提高代码的可读性和可维护性。

 switch语句

 switch语句是在C++中用于执行多条件分支的语句。

语法格式:
switch (expression) {
    case value1:
        statement1;
        break;
    case value2:
        statement2;
        break;
    // ...
    default:
        statementN;
        break;
}

其中,expression是一个表达式,用于与各个case后面的值进行比较。根据expression的值,程序将会跳转到对应的case执行相应的语句块。如果没有匹配的case,则会执行default中的语句。

具体的流程:
  1. expression的值会与每个case后面的值进行比较,直到找到匹配的值。
  2. 找到匹配的case后,程序从该位置开始顺序执行后续的语句,直到遇到break语句或者switch语句的末尾。
  3. 如果没有找到匹配的case,则执行default中的语句块。
注意:

在每个case的语句块中,通常需要加上break语句来终止当前分支的执行,否则程序会继续执行下一个case中的语句块,直到遇到break语句或者switch语句的末尾。

循环结构

while循环语句

while循环语句是C++中用于重复执行一段代码块的循环结构。

语法格式

while (condition) { statement; // ... }

其中,condition是一个表达式,用于判断循环是否继续执行。只要condition的值为真(非零),循环会一直执行;一旦condition的值为假(零),循环将停止执行,程序会跳出循环。

具体流程
  1. 首先判断condition的值,如果为真,执行循环内的语句;如果为假,跳出循环。
  2. 执行完循环内的语句后,再次判断condition的值,如果仍然为真,则继续执行循环内的语句;如果为假,跳出循环。
  3. 不断重复上述过程,直到condition的值为假,跳出循环。
注意

如果循环内的语句块只有一条语句,大括号可以省略。但如果语句块中有多条语句,建议使用大括号来明确语句块的边界,以增加代码的可读性和可维护性。

在执行循环语句时候,程序必须提供跳出循环的出口,否则出现死循环

do...while循环语句

do...while循环语句是C++中的一种循环结构,与while的区别在于 do...while会先执行一次循环语句,再判断循环条件,它保证至少会执行一次循环体内的代码,即使循环条件一开始就不满足。

语法格式

do { statement; // ... } while (condition);

其中,statement是要重复执行的语句块,condition是一个表达式,用于判断是否继续执行循环。只有当condition的值为真(非零)时,循环会继续执行;当condition的值为假(零)时,循环将停止执行,程序跳出循环。

具体流程
  1. 首先执行循环内的语句块。
  2. 执行完循环内的语句后,判断condition的值。如果为真,则继续执行循环内的语句;如果为假,则跳出循环。
  3. 不断重复上述过程,直到condition的值为假,跳出循环。

for循环语句

for循环语句是C++中用于重复执行一段代码块的循环结构。它在已知循环次数或遍历集合等场景下非常方便。

语法格式

for (initialization; condition; update) { statement; // ... }

其中,initialization是循环变量的初始化表达式,在循环开始之前执行一次;condition是循环条件表达式,判断循环是否继续执行;update是循环变量更新表达式,在每次循环结束后执行。

具体流程:
  1. 首先执行initialization,进行循环变量的初始化。
  2. 判断condition的值,如果为真,则执行循环内的语句;如果为假,跳出循环。
  3. 执行循环内的语句。
  4. 执行update,更新循环变量。
  5. 再次判断condition的值,重复上述步骤,直到condition的值为假,跳出循环。
注意

循环中的表达式可以是任意有效的表达式,也可以省略某个表达式。例如,initializationupdate可以是空语句,只在condition中判断循环是否继续。for循环中的表达式,要用分号进行分隔。

嵌套循环

嵌套循环是在一个循环结构内部包含另一个或多个循环结构的编程技术。通过嵌套循环,可以实现对二维数组、多维数据结构以及多层循环场景的处理。

在C++中,我们可以使用 forwhiledo...while 循环来实现嵌套循环。

示例:
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        cout << j << " * " << i << " = " << i * j << "\t";
    }
    cout << endl;
}

在上述示例中,外部的 for 循环用于控制乘法表的行数,内部的 for 循环用于控制每行的列数。通过嵌套循环,我们可以遍历每个元素,并按照格式输出乘法表的内容。

嵌套循环可以根据需求多层嵌套,你可以进一步嵌套更多的循环来处理更复杂的问题。但需要注意的是,嵌套循环可能会增加程序的复杂性和执行时间,因此在设计时应慎重选择是否使用嵌套循环,并注意控制循环的层数和次数,以避免性能问题。

跳转语句

break语句

作用: 用于跳出选择结构或者循环结构

break使用的时机
  • 出现在switch条件语句中,作用是终止case并跳出switch

  • 出现在循环语句中,作用是跳出当前的循环语句

  • 出现在嵌套循环中,跳出最近的内层循环语句

示例
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break; // 当 i 等于 3 时跳出循环
    }
    cout << i << endl;
}
continue语句

作用:在==循环语句==中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

示例
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        continue; // 当 i 等于 3 时跳过循环体中的剩余代码,开始下一次循环
    }
    cout << i << endl;
}
注意:

continue并没有使整个循环终止,而break会跳出循环  

return语句

作用:用于跳出函数,并返回指定的值(如果函数有返回值的话)。

 示例
int calculateSum(int a, int b) {
    if (b == 0) {
        return -1; // 当除数为 0 时,跳出函数并返回 -1
    }
    return a / b;
}
注意:

return 语句只能在函数内部使用。它用于终止当前函数的执行,并返回一个值(如果函数有返回类型)。当 return 语句被执行时,函数将立即结束,并将控制权返回给调用该函数的代码。在函数外部的其他地方使用 return 是非法的,并且会导致编译错误

goto语句

作用:可以无条件跳转语句

语法:

goto 标记;

解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置

 示例
int main() {
    int i = 0;
    
    loop: // 定义一个代码标签
    cout << i << endl;
    i++;
    
    if (i < 5) {
        goto loop; // 无条件跳转到 loop 标签处
    }
    
    return 0;
}
注意:

goto 语句容易导致程序的逻辑混乱,使得代码难以理解和维护。因此,在实际编程中,应尽量避免过多使用 goto 语句,并且要慎重选择使用的场景。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值