10.9下午笔记 选择结构

发布于 2024-10-09  967 次阅读


选择结构

首先我们先了解流程控制结构,流程控制结构是指能够改变程序执行顺序的结构,他们可以根据不同的条件在一段或多段程序中选择一个运行或者不运行

三大控制结构分别为:顺序结构、循环结构、选择结构

顺序结构:自上而下从左至右依次执行

选择结构:选择结构是依据一定的条件选择执行的路径,而非严格按照语句出现的前后顺序执行

循环结构:循环结构是依据一定的条件重复执行某一句或某几句代码,是为反复做某个操作而设置的一种程序结构

现在来了解选择分支结构(选择分支结构就是选择结构的一种,不想浪费时间,就不细分了),C语言支持两种选择结构,分别是if语句和switch语句

if语句

if (condition) {
    // 当条件 condition 为真(非零)时执行的代码块
}

if-else语句

if (condition) {
    // 当 condition 为真时执行的代码块
} else {
    // 当condition为假时执行的代码块
}

需要判断多个条件时,可以使用 else if 语句进行多分支判断

if(condition1){
    //当condition1为真时执行的代码块
}else if(condition2){
    //当condition2为真时执行的代码块
}else{
    //当上面几个条件都是假时执行的代码块
}

其工作原理为:

1.程序从上往下依次判断 if 和 else if 语句中的条件表达式
2.一旦找到为 True(即非零)的条件,执行对应的代码块,然后跳过后面的所有 else if 和 else 语句
3.如果所有的 if 和 else if 条件都为 False,则执行 else 语句中的代码(如果有 else 部分)
4.如果没有 else 部分,并且所有条件都为 False,则程序不会执行任何操作

//从上往下通关,可以失误一万次,因为有else兜底;只赢一次,点到为止

if-else if-else 语句在多条件判断中非常有用

嵌套 if 语句

if(condition1){
  if(condition2){
   //当condition1和condition2同时为true时执行的代码块
}else{
   //当condition1为真(因为你的这个代码也在if condition1中,所以只有condition1为真才能让编译器进来)且condition2为假时执行的代码块
      }
}

C 语言中的条件判断基于整数值:非零值为真,零值为假

其实,如果 ifelse 中的代码只有一行,可以省略大括号:

if (number > 0)
printf("正数\n");
else
printf("非正数\n");

而代码块通常使用大括号 {} 包裹,但为了提高可读性以及更好地维修,即使只有一行代码时,也建议加上大括号以防止错误

switch语句

switch(开关,转换)

switch (expression) {
    case constant1:
        // 当 expression == constant1 时执行
        break;
    case constant2:
        // 当 expression == constant2 时执行
        break;
    ...
    default:
        //当 expression 不等于任何 case 时执行
       }
  1. expressionswitch 中的表达式通常是整数类型intchar等),但不能是浮点数或字符串
  2. case:每个 case 对应一个常量值,如果 expression 的值等于某个 case 后面的常量,就执行该 case 下的语句
  3. break:用于结束当前 case 的执行,并跳出 switch 语句。如果没有 break,程序会继续执行下一个 case,直到遇到 break 或 switch 结束(称为“穿透”)
  4. default可选的 default 语句用于处理 expression 不匹配任何 case 时的情况

switch 语句只能比较常量,不能处理范围判断,因为switch的运行是基于==的关系是运算符。如果需要比较范围,if-else 可能更合适

break 很重要,他能让编译器在case 某个true的值中停下来运行后停下来,如果你忘了加break;就会发生“穿透”,执行多余的 case 语句

//条件只有一个,break;完便点到为止

#include <stdio.h>

int main() {
    int num = 2;

    switch (num) {
        case 1:
            printf("Number is 1\n");
            break;
        case 2:
            printf("Number is 2\n");
            break;
        case 3:
            printf("Number is 3\n");
            break;
        default:
            printf("Number is not 1, 2, or 3\n");
    }

    return 0;
}

最终将输出"Number is 2"

届ける言葉を今は育ててる
最后更新于 2024-11-05