【C语言】选择语句

简介: C语言中选择语句的相关知识点

1. if 语句

1.1 if 语句的三种形式

1.1.1 if 语句

1.1.1.1 if 语句的语法格式

if (表达式)
    语句;

表达式部分必须用()括起来,它可以是一个常量或变量,也可以是关系表达式或逻辑表达式。

如果表达式的值为非0,则执行紧跟其后的语句,然后顺序执行后续语句;如果表达式的值为0,则跳过紧跟的语句,执行后续语句。(C语言中0表示假,非0表示真)

相当于“如果......那么......”。

1.1.1.2 if 语句的流程图

​​image.png

1.1.1.3 if 语句的使用

int main()
{
   
    int age = 0;
    scanf("%d", &age);
    if (age >= 18)
        printf("成年\n");
    return 0;
}

image.png

1.1.2 if-else 语句

1.1.2.1 if-else 语句的语法格式

if (表达式)
    语句1;
else
    语句2;

if-else语句中的表达式可以是一个常量或变量,也可以是关系表达式或逻辑表达式。如果表达式的值为非0,则执行语句1;否则,执行语句2。(C语言中0表示假,非0表示真)

相当于“如果......否则......”。

1.1.2.2 if-else 语句的流程图

image.png

1.1.2.3 if-else 语句的使用

#include <stdio.h>
int main()
{
   
    int age = 0;
    scanf("%d", &age);
    if (age < 18)
        printf("未成年\n");
    else
        printf("成年\n");
}

image.png
image.png

if和else后面一般都用{ }将需要执行的语句括起来,执行语句只有一条语句时可以省略{ }。

1.1.3 if-else if 语句

1.1.3.1 if-else if 语句的语法格式

if (表达式1)
    语句1;
else if (表达式2)
    语句2;
else if (表达式3)
    语句3;
...
else if (表达式n)
    语句组n;
else
    语句组n+1;

if-else if语句中的表达式是一个常量或变量,也可以是关系表达式或逻辑表达式。依次计算各表达式的值,哪个表达式的值为非0,则执行相应的语句组,若所有表达式的值均为0时,则执行else后的语句组。(C语言中0表示假,非0表示真)

相当于“如果满足某种条件,进行某种处理;否则,如果满足另一种条件,则执行另一种处理......”

else总是和离它最近的if匹配。

1.1.3.2 if-else if 语句的流程图

image.png

1.1.3.3 if-else if 语句的使用

#include <stdio.h>
int main()
{
   
    int age = 0;
    scanf("%d", &age);
    if (age < 18)
        printf("少年\n");
    else if (age >= 18 && age < 30)
        printf("青年\n");
    else if (age >= 30 && age < 50)
        printf("中年\n");
    else if (age >= 50 && age < 80)
        printf("老年\n");
    else
        printf("老寿星\n");
    return 0;
}

image.png
image.png
image.png

2. switch 语句

2.1 switch 语句的使用

switch (表达式)
{
   
case 常量值1:
    语句1;
    break;
case 常量值2:
    语句2;
    break;
...
case 常量值n:
    语句n;
    break;
default:
    语句n + 1;
    break;
}

switch 语句的说明

(1)在switch 语句中,表达式需为整型或字符型。

(2)每一个case后的常量值必须是整型字符型,而且值不能相同,因为选择语句只允许一路选择所对应的语句被执行。

(3)在执行switch 语句中,从匹配表达式的相应case处入口,一直执行到break语句或到达switch的末尾为止。(这里的break语句是跳转,也就是跳出当前分支,如果在case对应的语句块中没有break,那么程序会一直向下执行,也就是说break语句的实际效果是把语句列表划分为不同的分支部分

(4)每个case后的语句可以是单个语句或空语句,也可以是复合语句。

(5) 在switch语句中,default和语句组n+1可以同时省略。

2.2 switch 语句的流程图

image.png

2.3 switch语句的使用

#include <stdio.h>
int main()
{
   
    int day = 0;
    scanf("%d",&day);
    switch (day)
    {
   
    case 1:
        printf("星期一\n");
        break;
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期天\n");
        break;
    default:
        break;
    }
    return 0;
}

image.png

3. if 语句与switch 语句的比较

(1)使用if语句可以构成各种各样的选择结构,尤其适合在构成有复杂的逻辑条件判断的选择结构中。

(2)对于选择较多,且判断条件较简单的情况,如判断整型数值或字符值是否相等时,常用switch语句来构成选择结构。

(3)用switch语句构成的选择结构清晰,执行效率比if语句构成的选择结构高。但是switch语句判断的时候只能整型字符型不可以是一个区间

相关文章
|
7月前
|
存储 弹性计算 对象存储
预留空间是什么?阿里云OSS对象存储预留空间说明
阿里云OSS预留空间是预付费存储产品,提供折扣价以锁定特定容量,适用于抵扣有地域属性的Bucket标准存储费用及ECS快照费。通过购买预留空间,如500GB通用预留+100GB标准-本地冗余存储包,用户可优化成本。
291 4
|
7月前
|
存储 定位技术
【天梯赛】L2-048 寻宝图 (DFS做法)
遇到一个非'0'字符(也就是'1'和 宝藏'2'到'9')就让ans++,同时将这个非'0'字符染色为'0',然后往四个方向(上、下、左、右)搜索,这里的目的是那一片岛屿(也就是那一片为'1'的部分)都染色为‘0’。本题就请你统计一下,给定的地图上一共有多少岛屿,其中有多少是有宝藏的岛屿。为了判断有宝藏的岛屿,这里我开了一个全局变量f来判断这一片岛屿是否有宝藏(也就是有无字符'2'-'9'),当搜到字符'2'~'9'时就将f标记为1。在一行中输出 2 个整数,分别是岛屿的总数量和有宝藏的岛屿的数量。
132 5
|
7月前
|
算法 iOS开发 C++
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); 的作用和注意事项
默认情况下,C++的输入输出流与C标准库的输入输出函数是同步的,这会造成一定的性能损失。:使用cin.tie(0)和cout.tie(0)可以取消cin与cout之间的绑定,这意味着在进行输入操作时,不需要强行刷新输出缓冲区。:如果你的程序在输入输出中同时使用了C++的输入输出流和C标准库的输入输出函数(如scanf和printf),则不应该使用这段代码。:在使用了这段代码后,应避免使用C标准库的输入输出函数(如printf和scanf),因为这些函数与输入输出流的同步已被关闭。这段代码的主要用途是。
288 1
|
8月前
|
人工智能 NoSQL atlas
Questflow借助MongoDB Atlas以AI重新定义未来工作方式
Questflow借助MongoDB赋能AI员工,助力中小型初创企业自动化工作流程,简化数据分析,提升客户体验,推动AI与员工的协作,重新定义未来工作方式
5514 2
|
开发者
阿里云开发者社区Markdown语法
阿里云开发者社区Markdown语法
17648 4
|
9月前
|
人工智能 开发者
7月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区7月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
2829 81
7月更文挑战赛火热启动,坚持热爱坚持创作!
|
开发工具
新人乘风者礼品兑换指南
仅限2023年11月15日(含11月15日)后入驻博主用于兑换礼品,此前完成入驻的博主按原邮寄方式进行。
4471 9
|
开发者
2024 乘风者计划全新启航!快来加入吧!
 2021年,阿里云开发者社区焕新升级,重磅推出“乘风者计划”!诚邀四海技术博主入驻社区,泼墨云间,书写天地。入驻社区,即可享丰厚权益! 新的一年,乘风者计划重磅升级!
250652 81
2024 乘风者计划全新启航!快来加入吧!
|
开发者 黑灰产治理
阿里云开发者积分细则
为了鼓励大家在阿里云开发者社区里积极分享、学习、体验和贡献,每一次真实地分享、学习、体验和贡献都可以获得积分,积分可用于在社区内兑换礼品、服务和更多权益。
10291 37
|
9月前
|
开发者
4月更文挑战赛火热启动,寻找热爱技术内容创作的你
开发者社区4月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
4151 37

热门文章

最新文章