C语言:选择结构


C语言中的选择结构用于根据特定条件执行不同的代码段。选择结构是C语言编程中实现程序逻辑流程控制的基础,它们能够使程序根据不同的输入或条件执行不同的操作。选择结构主要包括 if语句、 switch语句等。

1.if 语句

1.1.if

if语句是C语言中最基本的选择结构之一,它允许程序根据条件的真假来执行不同的代码块。
if语句的基本形式如下:

if (条件表达式) {
    // 条件为真时执行的代码块
}

当条件表达式为真(即非零)时,if语句后面的代码块将被执行;如果条件表达式为假(即零),则跳过代码块,继续执行后面的代码。

1.2.if-else

if-else语句是C语言中的一种基本选择结构,它允许程序根据条件的真假来执行两个不同的代码块。if-else语句的通用形式如下:

if (条件表达式) {
    // 条件为真时执行的代码块
} else {
    // 条件为假时执行的代码块
}

当程序执行到if-else语句时,首先会评估条件表达式。如果条件表达式为真(即非零),则执行if后面的代码块;如果条件表达式为假(即零),则执行else后面的代码块。在if-else结构中,总是只有一个代码块会被执行,然后程序继续执行if-else语句之后的代码。

1.3.if的嵌套

在C语言中,if语句的嵌套是指在一个if语句的主体内又包含了一个或多个if语句。这种结构允许程序进行更复杂的条件判断。下面是if语句嵌套的基本形式:

if (条件表达式1) {
    // 当条件表达式1为真时执行的代码块
    if (条件表达式2) {
        // 当条件表达式2也为真时执行的代码块
    }
}

在这个例子中,内部的if语句只有在外部的if语句的条件表达式为真时才会被执行。嵌套的if语句可以包含else子句,形成if-else嵌套:

if (条件表达式1) {
    // 当条件表达式1为真时执行的代码块
    if (条件表达式2) {
        // 当条件表达式2也为真时执行的代码块
    } else {
        // 当条件表达式2为假时执行的代码块
    }
} else {
    // 当条件表达式1为假时执行的代码块
}

在嵌套的if-else结构中,每个else子句都与最近的未配对的if语句关联。这意味着上面的代码中,内部的else子句与内部的if语句配对,而不是与外部的if语句配对。

举例
示例

当然,下面是一个简单的if else嵌套例子,用于判断一个学生在某门课程中的成绩等级:

#include <stdio.h>
int main() {
    int score = 82;
    if (score >= 60) {
        // 如果分数大于等于60,则及格
        printf("你通过了考试\n");
        if (score >= 90) {
            // 如果分数大于等于90,则成绩为A
            printf("你的成绩是A\n");
        } else if (score >= 80) {
            // 如果分数大于等于80,则成绩为B
            printf("你的成绩是B\n");
        } else {
            // 否则,成绩为C
            printf("你的成绩是C\n");
        }
    } else {
        // 如果分数小于60,则不及格
        printf("你没有通过考试\n");
    }
    return 0;
}
结果

在这里插入图片描述

分析

在这个例子中,我们首先检查学生的分数是否及格(即是否大于等于60)。如果及格,我们再根据分数的不同区间,使用嵌套的if else语句来判断成绩等级。如果分数大于等于90,则成绩为A;如果分数在80到89之间,则成绩为B;如果分数在60到79之间,则成绩为C。如果学生的分数不及格,则直接打印出不及格的信息。

举例

示例

#include <stdio.h>

int main() {
    int a = 1;
    int b = 2;

    if (a > b){
        printf("a大于b\n");
      }else {
        printf("a小于b\n");
      }
    
    return 0;
}

结果

在这里插入图片描述

2.switch语句

switch语句是C语言中的一种多分支选择结构,它允许程序根据一个变量的值选择多个代码块中的一个来执行。switch语句通常用于处理具有多个明确值的条件,比如枚举值、字符、整数等。
switch语句的通用形式如下:

switch (表达式) {
case 常量表达式1:
    // 当表达式的结果与常量表达式1匹配时执行的代码块
    break; // 跳出switch语句
case 常量表达式2:
    // 当表达式的结果与常量表达式2匹配时执行的代码块
    break; // 跳出switch语句
// ...
case 常量表达式N:
    // 当表达式的结果与常量表达式N匹配时执行的代码块
    break; // 跳出switch语句
default:
    // 当表达式的结果与任何case都不匹配时执行的代码块
}

switch语句中,表达式的结果会与case标签后的常量表达式进行比较。如果匹配成功,则执行相应的代码块。每个case标签必须是唯一的,并且是一个常量表达式或枚举常量。
break语句用于终止switch语句,防止代码自动地继续执行到下一个case。如果没有break,会发生“fall through”,即继续执行下一个case直到遇到breakswitch结束。default部分是可选的,当表达式的结果与所有case都不匹配时,会执行default后面的代码块。

举例

示例

#include <stdio.h>
int main() {
    char grade = 'B';
    switch (grade) {
        case 'A':
            printf("优秀\n");
            break;
        case 'B':
            printf("良好\n");
            break;
        case 'C':
            printf("中等\n");
            break;
        case 'D':
            printf("不及格\n");
            break;
        case 'F':
            printf("差\n");
            break;
        default:
            printf("输入错误\n");
    }
    return 0;
}

结果

在这里插入图片描述

分析

在这个例子中,程序根据字符变量grade的值打印出不同的评价。如果grade的值是’A’,则打印”优秀";如果值是’B’,则打印"良好",以此类推。如果grade的值不是’A’到’F’之间的任何一个字符,则执行default部分的代码块,打印"输入错误"。

switch语句提供了一种清晰的方式来处理多个条件,特别是当这些条件是基于同一个变量的不同值时。它比使用多个if else语句更加简洁和易于理解。

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值