当前课程知识点:C语言程序设计(上) >  数据计算实现与顺序结构程序设计(二) >  2.3 逻辑运算的C程序实现 >  2.3.5 条件运算符

返回《C语言程序设计(上)》慕课在线视频课程列表

2.3.5 条件运算符在线视频

2.3.5 条件运算符

下一节:计算结合性

返回《C语言程序设计(上)》慕课在线视频列表

2.3.5 条件运算符课程教案、知识点、字幕

大家好 我们今天来讨论两件事

什么是条件运算符

在这个运算符号里边 有两个字符

问号 冒号

那自然构成了 三目运算符

这是一个三目运算

哪三目

条件 表达式1 表达式2

那它表达的意思是说什么呢

这个运算的开始

我先判断条件是否正确

就是判断条件是否为真 不是是否正确

那么也就是说 我们举个例子看

我从a和b里边找一个大数

如果a大于b 我们就把a赋值给x

否则 我就把b赋值给x

那大家看 假如说

我把a里边是9 b里边是5

那这时候x里边是什么呢

那一定是说

条件满足的时候是9大于5的

那么这时候我们一定是

x里边获得的是a里边的内容 是9

那么在这个条件运算符里

要说明的一点是什么呢

不是表达式一的结果就是表达式二的结果

我们下边看一个例子

那么对这问题我们怎么考虑呢

最简单的就是这个

条件运算符

一个运算符就解决了这里边的问题

程序是不是可以这样写

我们来把这个程序运行一下看看

这个条件运算符

出现在刚才应该是在这块地方

我们看见的那个程序

那在这个程序里边呢

我们看两个变量

大家现在对这个scanf 看到有

scanf 这是从键盘上获取数据的

那在这里边 我们一定是会有一对引号的

然后引号里边 我们取一个整型的数

这就一定要取这个

一个取d值 然后age

大家 不要忘了这里边的分号

那么下来这个运算 是给谁赋值呢

money是多少呢

我们刚才说了 一个条件表达式

就能够完成

那么条件表达式里边的是谁

以谁来判断呢 age

你的age是大于12吗

如果是的话

你就给我 把80送给money

否则这里边是 冒号隔开

把20送过去

大家看 一定不要忘了

分号 这个程序完成了

我们运行一下看

好 我们现在试一下

输入一个 8岁的小孩

说你的票价是20

回过头来 我们再

刚才走的是这条道

age 8大于12吗

不是的啊 20

我们运行一下 给一个边界

输入的就是12岁

我们看 满足了什么呢

你大于12吗 没有啊

同样还是按照小孩的年龄

那么 我们给一个65岁

我们票价80

回过头来 大家看一下这里边

这是条件运算符构成的一个条件表达式

来完成的这件事

这是我们刚才看到的程序

那现在对于这个条件运算符

大家一定会还有一个疑问是说

它的优先级 这个运算符的优先级呢

因为它是唯一的一个三目运算符

这个运算符的优先级

仅仅比赋值运算符的优先级高一级

赋值运算符我们大家知道

在C里边 是所有运算符里

级别最低的 那它就是倒数第二了

下来咱们讨论结合性

计算结合性

那说到结合性这个是

好像给大家不容易理解的一个词

其实它是一个什么呢 计算方向

那我说这个

其实大家也不一定能够很好的理解

结合性呢我们这么说

就是说当你遇到了

若干个运算符 它的优先级是相同的时候

比如说加减 比如说乘除

比如说关系运算里边

同一个级别上的这些运算符

遇到一起的时候

那么它先从哪个方向上计算

先算哪个

先算前面比如说加和减

我先算后边的减呢还是先算前面的加呢

从前面往后算叫左结合

从左到右算

从右到左算是右结合

那是我强调这句话

多个同一个级别的

优先级相同的情况下

这些运算 放在一起的时候

先算哪一个运算

先从哪个方向上算

这叫我们的结合性

比如说 大家看一下下面这个

第一个我们说 a+b-c

那加和减这两个操作 是同一个 运算优先级

那么先算减还是先算加

我们刚才让左结合 先算加 再计算减

这是 左结合

那我们这样 这箭头表达的是

从左向右算

那下一个 a+b*c

那这时候 大家脑子里一下就出了

那当然先算c了

那这是谁决定的

是结合性决定的 还是优先级决定的

优先级

那是b先乘以c

这是因为乘的优先级比较高

所以呢 我们这里边遵循的还是什么呢

无论是对加还是乘 它的结合性还是左结合

那为什么我们会先算后边的乘呢

是因为它的级 优先级高

所以在这块 大家一定要注意

结合性和优先级 是两个不同的概念

结合性强调的是

相同优先级的运算符放在一起的时候

你到底先算前边的呢 还是先算后边的

那我们再来看这个

复合运算 那这其实是两个运算

那这两个运算

你先赋值再加 还是先加再赋值

这块 我们是右结合

那右结合就是说

你先对你这x进行操作

先算y加上x 再赋值给y

那么 这块是右结合

先对x施加你的运算操作

那下面这个呢 i+++j

这很重要

但是它的重要 并不是决定于它的结合性

而是它的优先级

也就说我们把谁算成自增

把谁算成是加法运算

那这里边 我们说

优先级决定了 它计算的顺序

那是加加自增的优先级高

这一块切割的方法是

i++ 加上j

所以呢 先关注的是i++

然后再加上j

所以他这个呢 是只关注的加法的结合性

是左结合的 加法的结合性

那下边就不同了 我们看

下边是两个赋值

相同的运算符遇到了一起

那我们使 右结合

这赋值运算是右结合

把b送给a 把a再送给y

而不是说 我先算第一个赋值

把a送给y 再把b送给a

这结果完全就不同了

所以我们在这里边现在强调的是说

相同优先级的运算符

碰到一起的时候

你的结合性就是至关重要的

比如说这个是左结合

而这个呢 也是左结合

但是它的优先级别高

这不是相同级别的

相同优先级的运算符遇到了一起

那是优先级决定了它的运算的先后顺序

而后边这个也是右结合

在这一块呢 我们一定要注意结合性

它解决的是我们说的这句话

几个操作符的优先级

相同的时候 先执行哪个方向上的运算

那我们这一块呢

关于结合性

我们在学习资料里边

给大家提供了课上每一个教材上

基本上都有一个列表

我从这个列表上 掐出来一点点

大家看一下 这里边

我们看咱今天说的

条件运算符它的结合性是什么呢

右结合 先算右边

那这怎么体现呢

我这里边还有一个 复合运算符

也是先算右边

比如说 条件运算符

怎么叫先算右边呢

我这个问号 冒号 这是一组

那再一个问号冒号这是第二组

那它的结合性 右结合

一定是先算后边的

再算前边的 这个绿颜色的线

这才是它的一个运算的结合性

比如说我们还把这个自动购票的这个问题

咱们再把它稍微的加一点功能

小于12岁的小孩 20块钱

大于70岁的老人免票

12到69之间咱是80块钱

我们把这个程序改一下大家看看

那关键的这句话 是不是应该是这样子

就说money 里边应该是什么呢

我们第一个判断是 是小孩吗

但是后边又有一个问号冒号

那现在怎么做呢

因为是小孩吗 是或者不是

我们都要取它冒号后边的东西

那我们结合性

这里没有优先级的问题

是两个相同级别 优先级别的运算符

放在了一起

那我们先看的是后边的

因为它是右结合 我们先看后边

是老人吗 如果是 免票

否则我们这个

条件表达式的结果是80

把这个程序运行一下看看

我们把刚才的这个

三个段 把年龄截成三个段这件事

表达在这里边的话 我们先看

刚才我们说的 这已经变化了

是小孩吗 小于12吗

如果是还是不是 问号后边 是说

如果是小于12 你给20

否则 没完

还要判断

那么我们后边再来说

你这age 你是大于69吗

如果是的话 你是免票的

否则 你才是80

大家看 这块是这样

这是我们说的 后边的这个表达式

这是问号和冒号 是前边这组的表达式

我们运行一下这个结果看一下

我们先给一个8岁的小孩

说20 没有问题

我们再运行一下看看

我们给一个 75岁的老人

好了 免票的

那大家看

如果我这两者都不是

我是给了45岁的一个先生

80 没有问题

这块顺便给大家说一下

我们现在已经编写程序了

编写程序的时候 你怎么测试你的程序呢

做这个测试的时候

是找边界 比如说12 70

你到底70岁是免票 还是不免票

是在于你这写的是什么

如果我们把它写成说大于70

那70就是不免票的

所以呢 这种情况

大家 要在你的程序运行完做测试

比如说 我现在把这一句话

拿到咱们的这里边

我就可以 把这个问号去掉了

把这个放在这

那么这个程序里边 大家看

你的边界条件就是什么呢

实际上就成了

12岁 也是20

而70岁 却不是免票

71岁才免票

那你想把70岁变成免票

刚才使我们写69

或者说写大于等于这样子

边界条件非常重要

那么你的程序

不是说小心翼翼给一个正确的输入

得到一个正确的结果

而是说我给任何输入

我都能够得到一个正确结果

或者 一个正确的提示

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

2.3.5 条件运算符笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。