C语言中的分支语句用法解读

 更新时间:2025年05月06日 08:45:22   作者:wzsygcg  
这篇文章主要介绍了C语言中的分支语句用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前言

C语言是一种结构化程序设计语言,其由三大基本结构组成,分别为:顺序结构,选择结构,循环结构,它们组成的算法结构可以解决任何复杂的问题。

对于顺序结构指的就是从main函数入口开始,从头到尾依次执行代码。

对于选择结构,顾名思义就是进行选择,其有两种语句:

1.if语句

1.1 if语句的语法形式

if(表达式)

语句

1.2 if语句用法

例:输入一个整数,判断是否为奇数

由于表达式判断的依据为真,若为非0值,则执行语句,为0,则不执行语句,所以奇数判断依据 a%2==1 可以略为 a%2.

由上我们可以不由的想,若需要判断出偶数呢?

这就涉及到了if..else语句了

2.if..else语句

2.1 if...else语句的语法形式

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

2.2应用

1.对上文的代码进行完善

2.输⼊⼀个年龄,>= 18岁就输出:成年,否则就输出:未成年

若我们要更加细致的区分不同年龄段的称谓,我们就需要多条的if...else语句进行连用,即

3.嵌套if语句

if else语句可以进行连用构成多重判断。

3.1例

输⼊⼀个⼈的年龄 ,如果年龄<18岁,打印"少年" ,如果年龄在18岁⾄44岁打印"⻘年" ,如果年龄在45岁⾄59岁打印"中⽼年" ,如果年龄在60岁⾄89岁打印"⽼年" ,如果90岁及以上打印"⽼寿星"。

常见编译错误1

问题:

修改后:

4.悬空else问题

对于这个问题,我们需要知道一个规则--else总是与最接近的if匹配

例:

对于上图代码,最后输出的结果是什么呢?

结果其实是没有输出的,这就是典型的悬空else问题。加了大括号后会便于理解,由于else总是与最接近的if匹配,所以在 a=0 的情况下,是不符合if表达式中条件的,故不会有输出。

由此可知,适当的加上大括号会使得代码的可读性高,逻辑更清晰。

当然,大括号还会改变与else最接近的if语句,如:

这样就会输出 haha 。

5.关系操作符

> ,>= , < , <= , == , !=

以上都是关系操作符,其返回 0\1 ,0表示假,1表示真。

常见编译错误2. 要注意区别 == 与 = ,== 是表示相等,若 A==B 表示A与B的值相等,但若是 A = B 则是表示将B赋值给A,两者不能混淆。

温馨小提示:若当一个变量与一个常量比较相等时,建议将常量值放在 == 的左边,这样在写错了== 之后编译器会进行报错,便于检查代码。但若是将常量值位于 == 右边则不会出现该报错,但程序最后的结果时错误的。

常见编译错误3.关系运算符不宜连用,会导致程序结果出错

上图就出现了错误,其执行流程是这样的:

先是a与47进行比较,得出0,后0与100进行比较,得出1,结果为真,返回 hehe。

那在C语言中如何表达 47<=a<=100?这就需要使用到逻辑操作符。

6. 逻辑操作符

  • && :逻辑或 ---真真为真(真就是非0)
  • || :逻辑与 ---假假为假(假就是0)
  • !:逻辑非 ---改变单个表达式的真假

所以就可以表示为 47<=a&&a<=100 ; 若要表示 a<=47或 a>=100,则就是 a<=47||a>=100;

若要表示a不等于47,就是 a!=47。

例:输入年数,判断是不是闰年

7.短路

在C语言逻辑运算中有一个特点,都是先对左侧的表达式求值,再对右侧的表达式求值,其顺序是固定的,所以在左侧的表达式已经符合逻辑运算符的条件的时候,右侧的表达式将不会被执行,这就是短路

例:

1.&&的短路

由于a++是先使用,再+1,所以当a=0的时候进行计算,故左侧表达式为假,所以右侧的表达式不会进行计算,由此输出 1 4 5 0。

2.||的短路

同理,由于a++和c++的计算结果为真(1),所以后面的b++不会被计算了,最后输出 1 4 6 1。

8..条件操作符

是C语言中唯一的三目操作符,其形式为:

例:比较两个数的大小

9.switch语句

9.1 switch语句是一种特殊的if...else 结构,适用于判断条件有多少个结果的情况。提高了代码的可读性,更方便使用。

9.2 switch语句的语法构

switch(整型/字符型表达式)

{

case(整型常量表达式1):(语句)

default:(语句)

}

根据表达式计算出的不同值,程序将会执行不同的case语句。若是找不到对应的case语句,就会执行default分支。

例:1.

2.输⼊⼀个1~7的数字,打印对应的星期⼏

例如:

  • 输⼊:1 输出:星期⼀
  • 输⼊:2 输出:星期⼆
  • 输⼊:3 输出:星期三
  • 输⼊:4 输出:星期四
  • 输⼊:5 输出:星期五
  • 输⼊:6 输出:星期六
  • 输⼊:7 输出:星期天

变题:

1. 输⼊1~5,输出的是“⼯作⽇”;

2. 输⼊6~7,输出“休息⽇”.

若用户输入的不是1-7的数字该如何编写代码?

这时就可以借助default了。

switch语句中的case子句和default子句是没有顺序要求的,只要满足实际需求就行。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C++实现简单遗传算法

    C++实现简单遗传算法

    这篇文章主要介绍了C++实现简单遗传算法,以实例形式较为详细的分析了遗传算法的C++实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • C++实现添加桌面右键新建菜单

    C++实现添加桌面右键新建菜单

    本文给大家汇总了3个版本的C++实现添加桌面右键新建菜单的代码,陆陆续续写的,有需要的小伙伴可以根据自己的需求来选择
    2016-01-01
  • C++ const关键字的实例用法

    C++ const关键字的实例用法

    在本篇文章里小编给大家整理的是一篇关于C++ const关键字的实例用法,需要的朋友们可以学习下。
    2020-02-02
  • C/C++使用API实现数据的压缩与解压缩

    C/C++使用API实现数据的压缩与解压缩

    在Windows编程中,经常会遇到需要对数据进行压缩和解压缩的情况,本文将深入探讨使用Windows API进行数据压缩与解压缩的过程,感兴趣的小伙伴可以了解下
    2023-11-11
  • C++中指针函数与函数指针的使用

    C++中指针函数与函数指针的使用

    今天小编就为大家分享一篇关于C++中指针函数与函数指针的使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++动态数组类的封装实例

    C++动态数组类的封装实例

    这篇文章主要介绍了C++动态数组类的封装,很重要的概念,需要的朋友可以参考下
    2014-08-08
  • C语言自定义类型详解(结构体、枚举、联合体和位段)

    C语言自定义类型详解(结构体、枚举、联合体和位段)

    这篇文章主要给大家介绍了关于C语言中结构体、枚举、联合体和位段自定义类型的相关资料,分别介绍了结构体、枚举、联合体和位段等四种自定义类型,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • C语言键盘控制走迷宫小游戏

    C语言键盘控制走迷宫小游戏

    这篇文章主要为大家详细介绍了C语言键盘控制走迷宫小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C++嵌入式内存管理详情

    C++嵌入式内存管理详情

    这篇文章主要介绍了C++嵌入式内存管理,是对上一篇内存的一个补充,主要讲解Linux中的内存;这部分对于一些端侧部署的伙伴来说比较重要,推荐针对不同的板子,下面来看看详细内容吧,需要的朋友可以参考一下
    2021-12-12
  • C语言实现扫雷小项目

    C语言实现扫雷小项目

    这篇文章主要为大家详细介绍了C语言实现扫雷小项目,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论