C语言程序设计三大基本结构之选择结构

2023-11-14

目录

前言:

●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!

文章目录:

•  关系运算符与关系表达式

•  逻辑运算符与逻辑表达式

•   if语句 •   switch语句

•   if语句的嵌套

•   switch语句的使用

引言:

一,关系运算符与关系表达式

1. 关系运算符及其优先级

2.关系表达式

3.逻辑运算符及其优先级

4.if语句的三种形式

    当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形:   

   5.条件运算符

6.switch语句

●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!


前言:

●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!

文章目录:

•  关系运算符与关系表达式

•  逻辑运算符与逻辑表达式

•   if语句 •   switch语句

•   if语句的嵌套

•   switch语句的使用

引言:

C语言提供了可以进行逻辑判断的选择语句,由选择语句构成的选择结构,将根据逻辑判断的结果决定程序的不同流程。     选择结构又称分支结构,是结构化程序设计的三种基本结构之一。

一,关系运算符与关系表达式

    在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。

1. 关系运算符及其优先级

                                                     C语言提供了6种关系运算符

含义

运算符

操作数个数

优先级

结合性

小于

双目

6

左结合

<=

小于或等于

双目

大于

双目

>=

大于或等于

双目

==

等于

双目

     7

左结合

!=

不等于

双目

 说明:

(1)关系运算符都是双目运算符,其结合性为左结合。

(2)六个关系运算符分为两级,前四种(<,<=,>,>=)为同级运算符,后两种(==和!=)优先级相同,且前四种的优先级高于后两种。

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

2.关系表达式

用关系运算符把两个表达式连接起来的式子称为关系表达式。

一般形式为:         <表达式1>  <关系运算符>  <表达式2>    

说明:

(1)表达式1和表达式2可以是算术表达式、逻辑表达式、赋值表达式、关系表达式、字符表达式。

(2)关系表达式的值是一个逻辑值,即“真”或者“假”。C语言没有逻辑型数据,所以用“1”表示真,用“0”表示假。

(3)字符常量是以它对应的ASCII码参与运算的。

3.逻辑运算符及其优先级

                                            C语言中提供了3种逻辑运算符

含义

运算符

操作数个数

优先级

结合性

!

非运算

单目

2

右结合

&&

与运算

双目

11

左结合

||

或运算

双目

12

左结合

说明:

(1)基本逻辑运算真值表如下表所示:当两个操作数为不同的逻辑值时,其基本逻辑运算的运算结果。

a

b

!a

a&&b

a||b

F

F

T

F

F

F

T

T

F

T

T

F

F

F

T

T

T

F

T

T

(2)!为单目运算符,具有右结合性。&&和||均为双目运算符,具有左结合性。逻辑运算符和其它运算符优先级的运算顺序由高到低表示如下: !→算术运算符→关系运算符→&&→||→赋值运算符

用逻辑运算符把表达式连接起来的式子称为逻辑表达式。    

一般形式为: [<表达式1>]  <逻辑运算符>  <表达式2>    

说明:

(1)表达式1和表达式2可以是关系表达式,也可以是逻辑表达式。如(!6)||(8<=2)。

(2)与关系表达式相同,由于C语言没有逻辑型数据,所以逻辑表达式的运算结果也是用“1”表示真,用“0”表示假。但反过来在判断一个量是为“真”还是“假”时,把“0”认为“假”,而所有非“0”的数值认为“真”。

(3)在逻辑表达式求解中,并不是所有逻辑运算都被执行。

① a&&b&&c中,由与运算符特点得知,全真为真,其余为假。所以当“&&”一端为0,则不必再计算另一端,该表达式的值肯定为0。

② a||b||c中,由或运算符特点得知,全假为假,其余为真。所以当“||”一端为1,则不必再计算另一端,该表达式的值肯定为1。

4.if语句的三种形式

(1). 单分支结构:                  if(<表达式>)    语句;    

其语义是:先判断条件,如果表达式的值为真,则执行其后的语句,否则不执行该语句。该语句可以是复合语句,即用花括号括起来的多个语句。。

(2). 双分支结构:

if(<表达式>) 语句1;

else 语句2;    

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

其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。

(3).多分支结构:    

if-else-if是一种多分支选择结构,

    if-else-if是一种多分支选择结构,其一般形式为:
if(<表达式1>)              语句1;
else  if(<表达式2>)         语句2;
else  if(<表达式3>)         语句3;
        … 
else  if(表达式n-1)         语句n-1;
else                       语句n;

其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。

说明:    

在使用if语句时应注意以下问题:

(1)if语句中的表达式必须用括号括起来,类型通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至可以是一个变量。

(2)在if语句中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{ }括起来组成一个复合语句。但要注意的是在}之后不能再加分号。

    当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形:   

    if(<表达式>) 
        if语句; 
    或者为
        if(<表达式>) 
            if语句; 
        else 
            if语句;

在嵌套内的if语句允许出现if-else,对出现多个if和多个else重叠的情况,需要特别注意if和else的配对问题。

   5.条件运算符

条件运算符是C语言中惟一的三目运算符。由问号“?”和“:”两个字符组成,用于连接3个运算对象。     其一般形式为: <表达式1>?<表达式2>∶<表达式3>    

其运算过程为:如果表达式1的值为真(非0),则以表达式2的值作为条件表达式的值,否则表达式3的值为条件表达式的值。    

说明:

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

 (2) 条件运算符优先级别为13,仅仅高于赋值运算符 ,低于关系运算符和算术运算符。其结合方向为“自右至左”。 (3) “表达式2”和“表达式3”不仅可以是数值表达式,还可以是赋值表达式或函数表达式。

    C语言提供了另一种用于多分支选择的switch语句,以更方便的实现深层嵌套的if-else逻辑。

6.switch语句

switch语句是多分支选择结构,

switch语句是多分支选择结构,其一般形式为:
switch(表达式)
{       case  <常量表达式1>:  语句1;
         case  <常量表达式2>:  语句2;
        … 
         case  <常量表达式n>:  语句n;
        default:               语句n+1;
}

switch语句的语义是:     先计算switch后面表达式的值,并与case后面常量表达式的值逐个比较。      当与某个常量表达式的值相等时,即执行此常量表达式后面的语句,并且在执行该语句结束后不再进行判断,继续执行后面所有的语句。      如表达式的值与所有case后面常量表达式均不相同时,则执行default后的语句。

说明:使用switch语句时应注意以下几点:

(1)在case后的各常量表达式的值不能相同,否则会出现错误。

(2)在case后,允许有多个语句,可以不用{}括起来。

(3)各case和default子句先后顺序可以变动,不会影响程序执行结果。

(4)default子句可以省略不用。

应用举例:

例. 编写程序,对任意输入的两个实型数以及一个运算符(+、-、*、/),能够输出算式和计算结果:

 #include  "stdio.h"
void main( )
{float data1,data2,data3;char op;
printf("\nType in your expression:");     
scanf("%f%c%f",&data1,&op,&data2);     
switch(op)     
{	
case '+':  data3=data1+data2 ;break;      
case '-':  data3=data1-data2;break;      
case '*':  data3=data1*data2;break;      
case '/':  if(data2==0)       exit(1);       
data3=data1/data2;break;
}
printf("%6.2f%c%6.2f=%6.2f\n",data1,op,data2,data3);
} 

●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言程序设计三大基本结构之选择结构 的相关文章

随机推荐

  • 解读YOLO v7的代码(三)损失函数

    在前两篇博客中我分析了YOLO v7的模型结构以及训练数据的准备 这里将对损失函数的代码进行分析 在train py中 我们可以看到以下的代码是进行损失值计算的 if loss ota not in hyp or hyp loss ota
  • 集成电路模拟版图入门-版图基础学习笔记(一)

    IC模拟版图设计 了解版图 版图的定义 版图是在掩膜制造产品上实现 电路功能且满足电路功耗 性能等 从版图上减少工艺制造对电路的偏差 提高芯片的精准性 版图的意义 1 集成电路掩膜版图设计师实现集成电路制造所必不可少的设计环节 它不仅关系到
  • 爬虫确定分页

    直接能确定分页数的直接根据分页num构造 导航栏目主页不能直接确定分页数 需要通过下一页来确定最后一页 这边主要介绍第二类如果下一页还存在 放进分页列表 就不是最后一页 如果不存在就是最后一页 import requests import
  • 快来考取属于自己的“区块链证书”吧!

    想要学习或参加 区块链咨询师 线上考试的朋友可识别下方海报二维码 进行报名登记 考试成绩合格 80分及以上 者 即可获得 区块链咨询师 初级 证书 证书的持有人身份及发证机构的法人身份由公安部第三研究所牵头的数字身份技术应用联合实验室提供权
  • Matlab数学建模学习(5)-- 神经网络常用传递函数

    常用传递函数 1 线性传递函数 purelin 图像表示为 f x x f x x f x x 2
  • 【学习笔记】 Thymeleaf的前端渲染(价值50)

    学习笔记 Thymeleaf的前端渲染 价值50 博客首页 文章目的 Thymeleaf前端页面的渲染 博主也在学习阶段 如若发现问题 请告知 非常感谢 同时也非常感谢各位小伙伴们的支持 每日一语 不要在夕阳下时幻想 要在旭日东升时努力 吾
  • ubuntu下各种软件与库安装(个人记录)

    ubuntu下各种软件与库安装 个人记录 环境 ubuntu20 04 软件安装 wps2019 Clion grub customizer disk usage analyzer 各种库安装 opencv 3 2 0以及opencv co
  • 19年就业形势怎么样

    我们都知道去年开始就业形势就不太好 尤其是程序员群体 好多人辞职后找不到合适的工作 同时越来越多中小企业出现了大厂 名校的求职者 就业形势的严峻性可见一斑 今天这篇文章结合 19 年上半年的就业数据做一个简单的分析总结 看看目前整体的形势
  • QT不同项目之间怎么调用其他项目里的类对象?

    以下方法解决的问题 假设有A B C三个项目 A中有一个类 B C都有用到 怎么直接调用而不是用笨方法慢慢的复制粘贴 重点在 pri分文件处理上 步骤如下 一 首先把这个共同要使用到的类弄成分文件管理 同一个项目里 分文件管理的方法 1 在
  • ROS初学(rosrun执行找不到可以执行的node)

    此处特殊标注 方案一 在命令空间文件夹内直接执行 catkin make 方案二 在code中 点击ctrl shift b出现 选择catkin make build行的设置图标 保存task json 错误实例 选择catkin mak
  • EndNote和Word关联&&“endnote cwyw dll不是有效的office加载项“解决方案

    一 问题背景 前不久把Word重装了一遍 装好了以后就重新打开 无奈之前的EndNote插件不见了 这对于要查文献的我真的受到了一万点伤害 有点夸张 但其实也还好 不过EndNote导出文献格式真的很方便 对于我看文献做笔记啥的还是非常有帮
  • CentOS7下Grafana简单安装测试使用。

    Grafana安装 yum 方式安装 设置安装源 vim etc yum repos d grafana repo grafana name grafana baseurl https packages grafana com enterp
  • 阿里云2核4G轻量应用服务器5M峰值带宽性能评测

    阿里云双十一金秋云创季轻量应用服务器2核4G配置 系统盘为60GB ESSD云盘 5M峰值带宽 每月1100GB流量 轻量服务器每月流量不够用的的话 超出流量为0 8元每GB 阿里云百科来详细说下阿里云2核4G轻量应用服务器配置及购买条件
  • 奇安信笔试编程题

    package one import java util 3 1 5 21 10 7 0 3 3 1 5 3 3 3 1 5 21 10 0 3 3 1 5 5 public class Main public static int res
  • 指数族分布

    写在前面 本文只是对暂时学到的指数族分布的理论知识进行总结 至于指数族分布在实际机器学习中的具体应用 等后续学习到了再进行补充 也欢迎有经验的大佬赐教 文章将按照下面的思路进行 第一章首先给出指数族分布通用的 pdf 的表达式 简单介绍什么
  • 模板方法设计模式,让我的代码更加优雅了,这一波不亏

    模板方法设计模式属于行为模式的分类 为啥要使用设计模式 使用设计模式可以重构整体架构代码 提交代码复用性 扩展性 减少代码冗余问题 让我们的代码更直观和优雅 模板方法模式和策略模式都有相同之处就是有具体的行为实现 所以也是基于工厂模式的实现
  • 命令行安装卸载驱动服务

    1 创建驱动服务 用法 sc
  • 使用spring的MethodInterceptor实现aop功能的三种方式

    如果对于spring MethodInterceptor或spring aop概念不清楚 参考 spring aop spring interceptor springmvc interceptor有什么区别 以下是在spring boot
  • ADO.NET连接字符串

    ACCESS ODBC 标准安全 Driver Microsoft Access Driver mdb Dbq C mydatabase mdb Uid Admin Pwd 工作组 Driver Microsoft Access Drive
  • C语言程序设计三大基本结构之选择结构

    目录 前言 由于作者水平有限 文章难免存在谬误之处 敬请读者斧正 俚语成篇 恳望指教 文章目录 关系运算符与关系表达式 逻辑运算符与逻辑表达式 if语句 switch语句 if语句的嵌套 switch语句的使用 引言 一 关系运算符与关系表