打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
程序的控制结构(中国大学慕课)学习笔记(2014-11-11)
选择结构是这样一种情况,就是当根据表达式计算出来的值,选择语句是执行还是不执行,比如讲在幻灯片左边,是一个一路分支这样的写法,语法是这样写的:if是关键字,括号表达式后面是一个语句序列,这样的一个写法表示什么意思呢?表示是如果if后面这个表达式的值计算出来为真(为1或任何非0的数),那么就执行if后面所跟的这个语句序列;反之如果计算出来的值为0(为假),就不执行语句序列,即跳过if后面语句序列,而执行if后面另一语句序列。这个就称为选择结构。所以选择结构就是根据条件成立与否选择if后面语句是否执行。
   在if后面所跟的语句序列需要注意的是:既可以是一个单一语句,也可以是多个语句。如果if后面所跟的是多个语句,特别要注意的一点是应该用花括号把它们括起来,形成一个复合语句;否则的话,特别容易犯的错误if后面只会执行第一个语句(有作用),后面的语句会没有作用。
      而另外一个要注意的问题是,前面我们已经讲过,每一个C语言的语句都是以分号结尾的,那么对于if语句特别要注意的是,当if表达式和语句序列整个才组成一个完整的if语句,所以在if表达式后面是没有分号的;如果有了分号,表示在这个分号后面是一个空语句。这时候不管表达式为真为假,那么执行完空语句就完了,后面的语句序列都会照常执行,这一点特别要注意一下。
两路分支,除了一个if,还有一个新的关键词else,它表示根据表达式的值选择执行语句序列1或者
选择执行语句序列2。也就是说,在进入if语句之后,首先计算该表达式的值,为真(不为0),表示条件成立,会执行语句序列1里的所有语句,然后跳过else语句序列2,执行else后面的语句;如果表达式的值为假(为0),那么会跳过语句序列1直接执行语句序列2。当语句序列2执行完之后继续执行后续的语句。因此对于这样一个两路分支,它的一个明显特征就是语句序列1给语句序列2在依次程序执行的时候,只会执行其中之一,而不能两个都执行。因为表达式要么为真要么为假,只能二选一的情况。
对于这样一个if语句,如果是一个逻辑运算符或关系运算符,那么出来的结果必然一个为真值,一个为假植,特别要注意的是如果计算出来的不是我们所期望的值,比如2+3,那么怎样判断真假呢?这时候就牵扯到强制转换问题,C语言规定,如果算出来的不是一个逻辑值的话,那么任何非0的值都视为真,只有0视为假。初学者比较容易犯的一个错误,是在赋值语句应用到表达式里面,比如要判断a给3是否相等,正确的写法应该是if(a==3),连续有两个等号,因为我们知道两个等号表示的是一个关系表达式,如果a等于3了的话,表示该关系表达式成立,其值为真。如果a不等于3的话,表示其值为假,初学者容易犯的一个错误就是漏掉了一个等号,写成了if(a=3),只有一个等号,那么很不幸的是,C语言编译器并不认为它是一个错误的写法,它会这样理解这样一个语句,因为这是一个赋值语句,它并不是表示判断a的值是否等于3,而是让3赋给a,让a的值等于3,那么最终的结果该表达式的值是3,(不为0),所以该表达式为真,也就是说,永远都是由语句序列1执行,而不会执行到语句序列2.这点特别要注意一下。
下面我们来看一个if语句的例子:输入两个实数,按数值由小到大的次序输出这两个数。怎样做这个题呢?我们只需要比较一下a是否大于b.如果a大于b了,那么输出a,否则的话输出b。写出来应该是 if(a>b),那么print f a,然后else print f b就可以了。
  如果需要有多个表达式进行判断的话,还有一个简单的写法,就是幻灯片所示的if else if else 等等,形成了表达式1表达式2表达式3表达式4这样嵌套的写法。那么当表达式1为真的时候执行语句1,否则的话要判断表达式2,......

 
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C语言第12课:讲解一些常见运算符的用法,以及逻辑运算符的“短路特性”
For循环和while循环如何区分?
python流程控制
《C语言程序设计教程》第四章选择结构
第7章 程序控制结构
oracle PL/SQL的基本构成,结构控制语句,分支结构,选择结构,loop循环结构,...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服