C语言学习日记——选择结构程序设计

    目录

5.1关系运算符和关系表达式

5.1.1关系运算符及其优先次序

5.1.2关系表达式

5.2逻辑运算符和逻辑表达式

5.3if语句

5.4switch语句


选择结构,它是3种基本结构之一。在大多数程序中都会包含选择结构。它的作用是,根据所指定的条件是否满足,决定从给定的两组操作选择其一。

5.1关系运算符和关系表达式

5.1.1关系运算符及其优先次序

C语言提供6种关系运算符:
①< ;②<= ; ③> ; ④>= ; ⑤== ; ⑥!=   ; 
关于优先次序:
(1)前4种关系运算符(<,<=,>,>=)的优先级别相同,后2种也相同。前4种
高于后2种。
(2)关系运算符的优先级低于算术运算符。
(3)关系运算符的优先级高于赋值运算符。

5.1.2关系表达式

关系表达式的值是一个逻辑值,即“真”或“假”。C语言没有逻辑型数据(C+有逻辑型变量和逻辑型常量,以True表示“真”,以False表示“假”)。在C的逻辑运算中,以“1”代表“真”,以“0”代表
“假”。
非零即为真。

5.2逻辑运算符和逻辑表达式

在条件判断时不可以使用关系运算符进行连续比较,例如a>b>c。需要使用逻辑运算符。

在使用逻辑运算时,C语言为了提高效率,当逻辑运算符前的语句可以决定表达式时,C语言将不执行逻辑运算符后的语句,称为表达式截断。

5.2.1逻辑运算符及其优先次序

C语言提供3种逻辑运算符:
(1)“&&”逻辑与(相当于其他语言中的AND)
(2)“||”逻辑或(相当于其他语言中的OR)
(3)“!”逻辑非(相当于其他语言中的NOT)
“&&.”和“||”是“双目(元)运算符”,“!”是“一目(元)运算符”,因此“!”的优先级高于另外两个运算符,其中“&&”运算符的优先级又高于“||”优先符。并且“&&”运算符和“||”运算符的优先级都低于算数运算符和关系运算符。

5.2.2逻辑表达式

和关系表达式相同,逻辑表达式的值应该是一个逻辑量“真”或“假”。C语言编译系统在表示
逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0
代表“假”,
非零即为真

5.3if语句

5.3.1if语句的3种形式

注意:

1 表达式:的类型不限于逻辑表达式,可以是任意的数值类型(包括整型、实型、字符型、指针型数据)。

2 else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。
3{}内的若干语句是一个复合语句。

4 if语句与复合语句间不留空行,不能有其他语句。

5.3.2if语句的嵌套

这里需要注意else和离它最近的if配套。

5.3.3条件运算符

若在if语句中,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向
同一个变量赋值时,可以用一个条件运算符来处理。

条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三
目运算符。条件表达式的一般形式为
表达式1?表达式2:表达式3

表达式1为关系表达式,表达式2和表达式3不仅可以是数值表达式,还可以是赋值表达式或函数表达式。

条件运算符的优先级
条件运算符优先于赋值运算符,比关系运算符和算术运算符都低。

5.4switch语句

switch语句是多分支选择语句。用来实现多分支选择结构。if语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。

switch(表达式)
{
case常量表达式1:
        语句1
case常量表达式2:
        语句2

        .............
case常量表达式n:
        语句n
default:
        语句n十1
}

        下面是一段判断月份天数的代码

示例代码如下:

        从示例代码中可以知道:

1 case中可以内嵌if语句;

2 对于不同case使用相同语句的情况,可以像示例中对case进行叠加;

3 switch语句必须使用int型参数或者与int型兼容的参数

5.5总结

        对于选择结构程序设计,设计先行。在编写代码前设计好流程图,可以对代码逻辑有更清楚的认识。在使用if语句时注意else与if的对应关系。对于不清楚输入结果是否符合已经设计好的程序要求时,可以使用assret(断言)语句。

运行结果如下:

可以看到输入月份22时,断言语句判断为逻辑假,中止了程序运行。

相关推荐

  1. 四:C语言-选择结构

    2024-01-29 21:46:01       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-29 21:46:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-29 21:46:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-29 21:46:01       82 阅读
  4. Python语言-面向对象

    2024-01-29 21:46:01       91 阅读

热门阅读

  1. jvm垃圾回收器

    2024-01-29 21:46:01       61 阅读
  2. 利用aspose进行word转pdf、打印pdf

    2024-01-29 21:46:01       73 阅读
  3. 爬虫学习笔记-站长素材网站图片下载

    2024-01-29 21:46:01       56 阅读
  4. Linux之父:我们正在从C语言转向Rust

    2024-01-29 21:46:01       52 阅读
  5. 【Python笔记】设计模式

    2024-01-29 21:46:01       64 阅读
  6. 计算机网络之三次握手,四次挥手

    2024-01-29 21:46:01       54 阅读
  7. Mongodb查询投射中的$elemMatch

    2024-01-29 21:46:01       52 阅读
  8. VLM 系列——Monkey——论文解读

    2024-01-29 21:46:01       61 阅读
  9. Web 上升的圆心

    2024-01-29 21:46:01       46 阅读