C语言程序设计第三讲:选择结构程序设计

1. 选择结构概述

  • 定义与重要性
    • 选择结构使得程序可以根据不同的条件执行不同的代码段。
      选择结构示意图

2. if 语句详解

  • 基本形式
    • if (表达式) 语句;:当表达式为真时执行语句。
  • 基本形式示例
int a = 10;
if (a > 5) {
    printf("a is greater than 5\n");
}
  • 扩展形式
    • if (表达式) 语句1; else 语句2;:当表达式为真时执行语句1,否则执行语句2。
    • 多分支结构:使用多个 else if 来处理多种条件。
  • 扩展形式示例
int a = 10;
if (a > 15) {
    printf("a is greater than 15\n");
} else if (a > 10) {
    printf("a is greater than 10 but less than or equal to 15\n");
} else {
    printf("a is less than or equal to 10\n");
}
  • 表达式详解
    • 表达式可以是关系表达式、逻辑表达式或直接是数值。
    • 解释如何构造有效的判断条件。
  • 复合语句的使用
    • 使用花括号 {} 包围的语句块以在条件为真时执行多个语句。

3. 关系与逻辑运算符

  • 关系运算符
    • <, <=, >, >=, ==, !=:用于比较两个值,结果为真或假。
    • 优先级及其与算术运算符的关系。
      关系运算符
      运用示例
  • 关系运算符示例
int a = 10, b = 20;
if (a == b) {
    printf("a is equal to b\n");
} else if (a < b) {
    printf("a is less than b\n");
}
  • 逻辑运算符
    • && (与), || (或), ! (非):用于组合多个关系表达式。
       详细说明
      真值表
  • 逻辑运算符示例
int a = 10, b = 5, c = 20;
if (a > b && a < c) {
    printf("a is between b and c\n");
}

4. 条件运算符

  • 基本概念
    • 由两个符号( ? 和 : )组成,必须一起使用,要求有3个操作对象,称为三目运算符,它是C语言中唯一的三目运算符。
  • 基本用法
    • (条件表达式) ? 表达式1 : 表达式2:根据条件表达式的真假选择表达式1或表达式2。
      用法示例
  • 基本用法示例
int a = 10;
int max = (a > 20) ? a : 20;
printf("Max value is %d\n", max);

5. switch 语句

  • 基本结构
    • if语句只有两个分支可以选择,如果要实现多个分支,使用起来比较复杂,嵌套的层数比较多,大大降低了代码的可读性。C语言提供了switch语句直接处理多分支选择。
      基本格式
  • 执行流程
    (1) switch括号中的表达式,值类型应为整数类型(包括字符型)
    (2) switch下面的花括号是一个复合语句,都属于switch语句的语句体
    (3) case和default是标号,用来标志一个位置
    (4) 执行switch语句时,先计算表达式的值,然后将值与case后面的常量按顺序进行对比,如果相同则从该执行该语句。如果没有相同的常量,则执行default标号后面的语句。
    (5) 可以没有default标号,如果没有与switch表达式相匹配的case常量,则不执行任何语句,继续执行switch语句块后面的代码
    (6) 各个case标号出现次序不影响执行结果。
    (7) 每个常量值不能重复,否则出现冲突
    (8) 在case子句中虽然包含了一个以上执行语句,但可以不必用{ }括起来,会自动顺序执行case标号后面的所有语句。加上{}也可以
    (9) 多个case标号可以公用一组执行语句
    (10) break语句打断,防止执行完对应语句继续向下执行
  • 基本结构示例
int num = 2;
switch (num) {
    case 1:
        printf("Number is 1\n");
        break;
    case 2:
        printf("Number is 2\n");
        break;
    default:
        printf("Number is neither 1 nor 2\n");
}

6. 选择结构的嵌套

  • 嵌套if结构
    • 在if语句中又包含一个或多个if语句称为if语句的嵌套
      嵌套示意图
  • 嵌套if结构示例
int a = 10, b = 20;
if (a > 5) {
    if (b > 15) {
        printf("Both a and b are greater than their respective conditions\n");
    }
}

7. 实战编程示例

  • 综合示例
#include <stdio.h>
int main() {
    int age = 20;
    if (age < 18) {
        printf("You are a minor.\n");
    } else if (age >= 18 && age < 60) {
        printf("You are an adult.\n");
    } else {
        printf("You are a senior citizen.\n");
    }
    int num1 = 10, num2 = 20, num3 = 30;
    int max = (num1 > num2) ? (num1 > num3 ? num1 : num3) : (num2 > num3 ? num2 : num3);
    printf("The maximum number is %d\n", max);
    return 0;
}
  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

szuzhan.gy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值