第三章 选择结构

1.关系运算符和关系表达式

关系运算符用于比较两个量的值,并返回一个逻辑值(真或假)。常见的关系运算符包括:

1. 相等 (==) 
2. 不相等  (!=) 
3. 大于 (>) 
4. 小于 (<) 
5. 大于等于 (>=) 
6. 小于等于 (<=) 

        关系运算符优先级低于算术运算符,高于赋值运算符。

关系表达式的形式

表达式 关系运算符 表达式

例子

 a+b > c-d

x > 6

'b'-1 < c

i * 5 - 6 == k+1

也允许出现嵌套情况:
a > (b < c)

a != (c==d)

 C语言中,0表示假,非0表示真

 2.逻辑运算符和逻辑表达式

         逻辑表达式使用逻辑运算符来组合多个关系表达式,最终得到一个逻辑值(真或假)。

        常见的逻辑运算符包括:逻辑与(&&)、逻辑或(||)和逻辑非(!)

例子

#include <stdio.h>

int main() {
    int a = 10, b = 20, c = 30;

    // 逻辑与运算符(&&):只有所有条件都为真时,整个表达式才为真
    if (a < b && b < c) {
        printf("a 小于 b,并且 b 小于 c\n");
    } else {
        printf("条件不满足\n");
    }

    // 逻辑或运算符(||):只要有一个条件为真,整个表达式就为真
    if (a == 5 || b == 20) {
        printf("a 等于 5 或者 b 等于 20\n");
    } else {
        printf("条件不满足\n");
    }

    // 逻辑非运算符(!):对条件进行取反
    if (!(a > b)) {
        printf("a 不大于 b\n");
    } else {
        printf("a 大于 b\n");
    }

    return 0;
}

3.条件运算符和条件表达式 

        条件运算符(三元运算符)是C语言中的一个特殊运算符,用于根据条件选择两个表达式中的一个。

        条件表达式由三部分组成:条件、真值表达式和假值表达式。

        其语法为:条件 ? 真值表达式 : 假值表达式(三目运算符)。

例子

#include <stdio.h>

int main() {
    int a = 10, b = 20;
    int max;

    // 使用条件运算符来比较两个数的大小,并将较大的值赋给 max
    max = (a > b) ? a : b;

    // 输出较大的值
    printf("较大的值是: %d\n", max);

    return 0;
}

 4.if语句

 1)if语句

#include <stdio.h>

int main() {
    int num = 10;

    if (num > 0) {
        printf("num 是一个正数\n");
    }

    return 0;
}

if语句根据条件 num>0  的结果来判断是否执行后面的语句。

2) if...else语句

#include <stdio.h>

int main() {
    int num = 10;

    if (num > 0) {
        printf("num 是一个正数\n");
    } else {
        printf("num 不是一个正数\n");
    }

    return 0;
}

根据条件 num >0  判断执行 if分支还是 else分支。

3) if...else if语句

#include <stdio.h>

int main() {
    int num = 10;

    if (num > 0) {
        printf("num 是一个正数\n");
    } else if (num == 0) {
        printf("num 是零\n");
    } else {
        printf("num 是一个负数\n");
    }

    return 0;
}

在这个例子中,根据不同的条件判断来执行相应的分支。如果  num>0,则执行第一个分支;如果 num==0,则执行第二个分支;如果都不成立,则执行 else分支。

 4)if语句嵌套

#include <stdio.h>

int main() {
    int num1 = 10, num2 = 20;

    if (num1 > 0) {
        if(num2 > 0) {
            printf("num1和num2均为正数\n");
        } else {
            printf("num1为正数,num2不是正数\n");
        }
    } else {
        if(num2 > 0) {
            printf("num2为正数,num1不是正数\n");
        } else {
            printf("num1和num2均不是正数\n");
        }
    }

    return 0;
}

利用了 if 语句的嵌套结构来判断两个数 num1 和 num2 的正负情况,实现了更复杂的逻辑分支。

 5.switch语句

#include <stdio.h>

int main() {
    int choice;
    printf("请输入选项(1-3):");
    scanf("%d", &choice);

    switch (choice) {
        case 1:
            printf("您选择了选项1\n");
            break;
        case 2:
            printf("您选择了选项2\n");
            break;
        case 3:
            printf("您选择了选项3\n");
            break;
        default:
            printf("无效选项\n");
    }

    return 0;
}

在这个例子中,用户输入一个整数选项,程序根据用户输入的选项值执行不同的代码块。如果用户输入1,则输出"您选择了选项1";如果输入2,则输出"您选择了选项2";如果输入3,则输出"您选择了选项3";如果输入其他值,则输出"无效选项"。

switch语句中的值可以是整数类型(如整数常量、变量或表达式的值),每个 case 标签表示一个分支,当 switch 后的值等于某个 case 标签的值时,程序会执行该分支的代码块。default 标签是可选的,用于处理没有匹配到任何 case 的情况。

 break 和 continue 

除了 break 语句之外,C语言中还有一种跳出循环的语句叫做 continue

#include <stdio.h>

int main() {
    // 使用 break 跳出循环的例子
    printf("使用 break 跳出循环的示例:\n");
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            break;  // 跳出循环
        }
        printf("%d ", i);
    }
    printf("\n");
    
    // 使用 continue 跳过当前循环执行下一次循环的例子
    printf("\n使用 continue 跳过当前循环执行下一次循环的示例:\n");
    for (int j = 1; j <= 5; j++) {
        if (j == 3) {
            continue;  // 跳过当前循环执行下一次循环
        }
        printf("%d ", j);
    }
    printf("\n");

    return 0;
}

        在上面的例子中,第一个循环使用了 break语句,当 i 的值等于3时,break语句会使循环立即终止,跳出整个循环,因此 3 之后的数字不会被输出。

        第二个循环使用了 continue语句,当 j 的值等于3时,continue语句会跳过当前循环的剩余部分,直接执行下一次循环,因此 3 不会被输出,但后续的数字会继续输出。

        综上所述,break 用于跳出循环,终止整个循环的执行;而 continue 用于跳过当前循环的剩余部分,继续下一次循环的执行。


~over~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值