第一范文网 - 专业文章范例文档资料分享平台

03 学习指导-单元3 选择结构程序设计

来源:用户分享 时间:2020-06-21 本文由仅是祈愿 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

单元3 选择结构程序设计

一、知识要点

通过本章的学习是学生掌握关系、逻辑运算符和表达式以及选择结构程序设计。具体内容如下:

1.关系运算符和关系表达式 (1)关系运算符及其优先次序 C语言提供6种关系运算符: ①< (小于) ②<= (小于或等于) ③> (大于) ④>= (大于或等于) ⑤= = (等于) ⑥!= (不等于) 关于优先次序:

前4种关系运算符的优先级别相同,后两种也相同。前4种高于后两种;关系运算符的优先级低于算术运算符;关系运算符的优先级高于赋值运算符。

(2)关系表达式

由关系运算符连接而成的表达式(可以是算术表达式、关系表达式和其他表达式)称为关系表达式。

2.逻辑运算符和逻辑表达式 (1)逻辑运算符及其优先次序 C语言提供了三种逻辑运算符: && 逻辑与 || 逻辑或 ! 逻辑非 关于优先次序:

!(逻辑非)>算术运算符>关系运算符>&&>||>赋值运算符 (2)逻辑表达式

逻辑表达式由逻辑运算符和运算对象组成,其中参与逻辑运算的对象可以是一个具体的值,还可以是C语言中任意合法的表达式,逻辑表达式的运算结果为1(真)或者为0(假)。

优先级相同(低) 优先级相同(高) 3.if语句

(1)if(表达式)语句 (2)if(表达式)语句1 else 语句2 (3)if(表达式1)语句1

else if(表达式2) 语句2

else if(表达式3) 语句3 ??

else if(表达式m)语句m else 语句m+1 注意:

①“语句”,“语句1”,??,“语句m”这些子句在语法上要求是一条语句,但需要执行多条语句时,需要用花括号{}把它们括起来组成复合语句。

②else不能独立成为一条语句,它仅是if语句的一部分,不能单独出现的程序中,且必须与if进行匹配共同组成if…else语句。

4.条件运算符?:和条件表达式 条件运算符是两个符号的组合: ? :

条件表达式的一般形式为:表达式1 ? 表达式2 :表达式3

条件表达式运算过程及表达式的值:先计算表达式1,若表达式1的值非0,则计算表达式2,不再计算表达式3,此时表达式2的值为整个条件表达式的值;若表达式1的值为0,不再计算表达式2,而计算表达式3,此时表达式3的值为整个条件表达式的值。

利用条件运算可以表达具有二分支的实际问题。 5.switch语句 switch(表达式)

{

case 常量表达式1:<语句组1> case 常量表达式2:<语句组2>

… … … … …

case 常量表达式n:<语句组n> }

说明:

①switch是关键字,switch后面用花括号括起来的部分是switch语句体; ②switch后面括号内的“表达式”,可以是C语言中整型或字符型表达式,但是表达式两边的括号不能省;

③case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后面的表达式类型相匹配,且各case语句标号的值不能相同;

④default也是关键字,起标号的作用,代表除了以上所有case标号之外的那些标号,default语句可以出现在任何标号的位置上,也可以没有。

⑤case语句标号后的语句1、语句2等可以是一条语句,可以是若干条语句,也可以省略;

⑥break语句的作用:跳出switch…case语句。 二、知识拓展

1.switch..case中default的书写位置

default关键字也仅仅起到了标号的作用,与case作用一致,可以出现在switch…case语句的任何地方,不一定要在最后。但是,如果出现在case中间(某些case之前),当default后的语句组执行完毕后不需要执行其后面的case中的语句组时,需要在default语句组之后加上break。

【示例】

int a=3; switch(a) {

case 1:printf(\ default:printf(\case 2:printf(\}

在执行过程中,a的值为3,与case后的常量均不符合,于是执行default语句。输出^^,但是由于没有break,将继续执行printf(\,输出&&。因此执行结果为:

^^ &&

如果只希望输出^^,则要把上述程序段改成

int a=3; switch(a) {

case 1:printf(\ default:printf(\case 2:printf(\}

并且,case 2之后的break可以省略。 2.条件运算符的结合方向

我们知道if…else语句可以与条件表达式相互转换,比如【示例】求两个数的最大值代码:

if(a>b) max=a; else max=b;

可以转换为max=a>b?a:b; 当出现如下数学表达式:

a?b?a?max??ba?b并且b?c?ca?b并且b?c?我们先用if语句来进行表示: if(a>b)

max=a; max=b; max=c; else if(b>c) else

那它是否等价于max=a>b?a:b>c?b:c;呢?

答案否。因为条件运算符?:是右结合,也就是说max=a>b?a:b>c?b:c相当于max=a>b?a:( b>c?b:c),显然于题述不符。

三、常见问题

1.数学关系0

解析:在数学中,关系式0

2.C语言中,表达式a

解析:由上题可知,a

3.表达式中忽略了“=”与“= =”的区别

解析:C语言中,“=”是赋值运算符,“==”是关系运算符。初学者往往把“=”用做关系运算符来判别相等。

先看个示例:下面的程序() #include void fun() { } int main() { }

A.有语法错误不能通过编译; B.输出****

C.可以通过编译,但是不能通过链接,因而不能运行 D.输出#### 本题答案D。

解决本题的关键在于if后面的表达式语句:x=y+z。y+z的值为0,x的值为0,“=”左右两边的值均为0,但是“=”为赋值运算符,即不管x之前的值如何,经过此表达式后,x的值变成0,即if后表达式为假,执行else之后的语句。

如果,if语句改成if(x= =y+z)printf(\

fun(); return 0; int x=0,y=0,z=0; if(x=y+z)

printf(\printf(\else

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新小学教育03 学习指导-单元3 选择结构程序设计 全文阅读和word下载服务。

03 学习指导-单元3 选择结构程序设计 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1090621.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top