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语言实现支持动态拓展和销毁的线程池,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • c++自定义sort()函数的排序方法介绍

    c++自定义sort()函数的排序方法介绍

    这篇文章主要介绍了c++自定义sort()函数的排序方法介绍,文章通过围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 浅谈使用C++多级指针存储海量qq号和密码

    浅谈使用C++多级指针存储海量qq号和密码

    这篇文章主要介绍了浅谈使用C++多级指针存储海量qq号和密码,分享了相关实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • C++数据结构与算法之反转链表的方法详解

    C++数据结构与算法之反转链表的方法详解

    这篇文章主要介绍了C++数据结构与算法之反转链表的方法,结合实例形式分析了C++反转链表的原理、实现方法及相关注意事项,需要的朋友可以参考下
    2017-08-08
  • C++虚函数表深入研究

    C++虚函数表深入研究

    这篇文章主要介绍了C++的虚函数表,内容非常详细,思路清晰,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • C语言 深入探究动态规划之区间DP

    C语言 深入探究动态规划之区间DP

    这几天在做有关dp的题,看到一个石子合并的问题,本来以为是个贪心,后来仔细一想压根不是贪心。贪心算法的思路是每次都取最大的,然而石子合并问题有个限制条件就是每次只能取相邻的,这就决定了它不是个贪心
    2022-04-04
  • C++ static的作用解读

    C++ static的作用解读

    这篇文章主要介绍了C++ static的作用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • C++中函数使用的基本知识学习教程

    C++中函数使用的基本知识学习教程

    这篇文章主要介绍了C++中函数使用的基本知识学习教程,涵盖了函数的声明和参数以及指针等各个方面的知识,非常全面,需要的朋友可以参考下
    2016-01-01
  • Opencv图像处理之轮廓外背景颜色改变

    Opencv图像处理之轮廓外背景颜色改变

    这篇文章主要为大家详细介绍了Opencv图像处理之轮廓外背景颜色改变,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • C++实现将输入的内容输出到文本文件

    C++实现将输入的内容输出到文本文件

    这篇文章主要介绍了C++实现将输入的内容输出到文本文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论