分校C课件第7讲选择结构

上传人:我*** 文档编号:140460825 上传时间:2020-07-29 格式:PPT 页数:37 大小:333.50KB
返回 下载 相关 举报
分校C课件第7讲选择结构_第1页
第1页 / 共37页
分校C课件第7讲选择结构_第2页
第2页 / 共37页
分校C课件第7讲选择结构_第3页
第3页 / 共37页
分校C课件第7讲选择结构_第4页
第4页 / 共37页
分校C课件第7讲选择结构_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《分校C课件第7讲选择结构》由会员分享,可在线阅读,更多相关《分校C课件第7讲选择结构(37页珍藏版)》请在金锄头文库上搜索。

1、第七讲 选择结构,第七讲 选择结构,关系运算 if语句 if-else语句 问号条件运算符 逻辑运算 switch语句 程序设计举例,C语言程序设计,引例 问题:根据输入的x值,计算y值。,选择结构,分析 情况一:条件x2.5满足时 情况二:条件x2.5满足时,引例,引例 源代码(cw0601.c),选择结构,#include int main() float x, y; scanf(%f, ,5 Y = 24.0,1 Y = 2.0,NS流程图,1.关系运算符及其优先次序 6级 (大于) = 6级 (大于或等于) = 7级 (等于) != 7级 (不等于),说明: 关系运算符的优先级低于算术

2、运算符 关系运算符的优先级高于赋值运算符,关系运算符,高于逻辑运算符吗?,关系表达式,关系表达式的值是一个逻辑值:“真”或“假” C语言没有逻辑类型的值,因此 用整数 1 表示“真” 用整数 0 表示“假” 即关系表达式的值是整数 1 或 0 。,选择结构,关系表达式 表达式1和表达式2可以是任何表达式。,ab a+bc)=(bc) Y!=y,举例:写出下面各条件的关系表达式 x为不小于 -5 的整数 x为非零的数 x的平方大于m与n的和,若a=1,b=2,c=3,x=-5 x!=0 !=0可省见P64中部 x*x(m+n),举例:写出下面各条件的关系表达式,0 1 1 1,关系表达式的使用,

3、选择结构,#include int main() int a=1,b=2,c=3,x,m=6,n=7; /下面一句先不加编译连接执行一次,再加上此句执行一次 printf(%dn%dn%dn, ab,a+bc)=(bc); printf(%dn%dn%dn, Y!=y,x=-5,x!=0); printf(%dn,x*x(m+n); return 0; ,0 1 1 1 0 1 1,Cw0602.c,X先不赋值看结果是什么: 变量与整形数比较,变量未赋值不确定,再输入x 分别为3和4看结果,再输入-7呢。,3 0 1 1 1 1 1 0,5 0 1 1 1 1 1 1,scanf(%d”,if

4、选择结构,if选择结构 用于在可选择的几个操作之间做出决策。 伪代码语句举例: if students grade is greater than or equal to 60 Print “Passed” 如果条件满足(学生的课程成绩大于或等于60) 那么就打印 “Passed”,然后程序按顺序执行下一条伪代码语句 否则,即条件不满足(学生的课程成绩小于60) 就忽略打印操作,顺序执行下一条伪代码语句,选择结构,if选择结构,if选择结构是单入单出的 举例,选择结构,if (grade=60) printf(“Passed”);,条件表达式 可以是任何表达式。 0(zero):假 非0(no

5、nzero):真,圆括号不能省略。,if子句只能是单条语句。,if-else选择结构,if 选择结构 只有在条件满足时,才会执行一个操作; 否则就会跳过这个操作。 if-else 选择结构 条件满足时所执行的操作与不满足时所执行的操作不同。 伪代码语句举例: if students grade is greater than or equal to 60 Print “Passed” else Print “Failed” ,选择结构,if-else选择结构,举例,选择结构,if (grade=60) printf(“Passed”); else printf(“Failed”);,if子句,

6、else子句,如果多打印几个等级怎么办?,/*对学生成绩分级:大于等于80为优;低于60为不及格;其他为及格。*/,if-else选择结构,选择结构,Cw0603.c,#include int main() int score; printf(enter a score!n); scanf(%d, ,1、先处理正常情况,再处理异常情况。 要使得正常情况的执行代码清晰。 这样对于代码的可读性和性能都很重要。因为,if语句总是需要做判断,而正常情况一般比异常情况发生的概率更大(否则就应该把异常正常调过来了),如果把执行概率更大的代码放到后面,也就意味着if语句将进行多次无谓的比较。这是程序执行的时

7、间性问题。 把正常情况的处理放在if后面,而不要放在else后面。 2、确保if和else子句没有弄反。 这一点初学者也容易弄错,往往把本应该放在if语句后面的代码和本应该放在else语 句后面的代码弄反了。,如果80以上再分出优秀怎么办?,条件运算符,条件运算符:? : 三目运算符 右结合 条件表达式,选择结构,printf(“%s”,(grade=60)? “Passed”:“Failed”);,(grade=60)?printf(“Passed”):printf(“Failed”);,举例,这两种形式都可以,/*Cw0603三目运算符.c*/ #include /*三目运算符例*/ in

8、t main() int a,b,c; a=b=c=1; a+=b; b+=c; c+=a; printf(a=%d,b=%d,c=%dn,a,b,c); printf(1)%dn,ab?a:b); printf(2)%dn,ac?a-:c+); (a=b=c)?printf(AA):printf(CC); printf(na=%d,b=%d,c=%dn,a,b,c); return 0; ,Cw0603三目运算符.c,并未执行,所以a=2不变,条件运算符,嵌套的选择结构,嵌套的if-else结构 对多种情况进行测试 伪代码语句举例: 根据学生的课程成绩在不同的分数段内,打印正确的等级名称 9

9、0A 8089B 7079C 6069D 59E,选择结构,嵌套的选择结构,嵌套的if-else结构举例 if 学生的分数大于等于 90 打印 “A” else if 学生的分数大于等于80 Print “B” else if 学生的分数大于等于70 Print “C” else if 学生的分数大于等于60 Print “D” else Print “E”,选择结构,注意这里隐含的情况: 分数小于90,If() if() 语句1 else 语句2 else if() 语句3 else 语句4,if( ) if( ) 语句1 else if( ) 语句2 else 语句3,嵌套的选择结构,嵌套

10、的if-else结构 举例,选择结构,if (grade=90) printf(“A”); else if (grade=80) printf(“B”); else if (grade=70) printf(“C”); else if (grade=60) printf(“D”); else printf(“E”);,if (grade=90) printf(“A”); else if (grade=80) printf(“B”); else if (grade=70) printf(“C”); else if (grade=60) printf(“D”); else printf(“E”);

11、,谁更清楚,嵌套的选择结构,举例:嵌套的if-else结构 读下面的程序,说出其功能。,选择结构,if (a0) if (b0) printf(“%d,%d”, a, b);,if (a0) if (b0) printf(“%d,%d”, a, b); else printf(“%d”, a); else if (b0) printf(“%d”, b);,如果a和b的值都是正数,则输出a和b的值。,输出a和b中的正数。,if语句之间可以嵌套,不能交叉。 else总是与在它前面最接近的if匹配。否则要用括起来。,选择结构中的复合语句,选择结构的if子句和else子句可以是复合语句 举例,选择结构

12、,选择结构中的复合语句,举例 读下面的程序,写出结果。,选择结构,int main() int a=2, b=1, c=2; if (a) if (b0) c=0; else c+; /*else 与第二个 if 配对*/ printf(“%d”, c); return 0; ,int main() int a=2, b=1, c=2; if (a) if (b0) c=0; else c+; /*else 与第一个 if 配对*/ printf(“%d”, c); return 0; ,3,为什么会这样?,cw0604.c,2,a!=0条件满足,判断大括号中的内容,不符合,即退出整个条件表达

13、式,直接输出,不再执行else后的语句,,关系运算的不足,关系表达式只能表达一些简单的条件 grade=60 total1000 每个判断只是对一个条件进行测试。 如果要对多个条件进行测试,就要在独立的语句或嵌套的if或if-else结构中进行测试。 例1:10y5 例2:x0,选择结构,if (y5) if (y10) ;,if (x0) ;,1.逻辑运算符及其优先次序 (1) ! (逻辑非) 相当于其他语言中的NOT 右结合 2级 (2) 1、0 2、0 3、0,如改a=2;x=-8则 1、1 2、1 3、1,注意 ! 的运算级别,int main() /cw0604x.c int a=1

14、,b=2,c=3,x=4,m=7,n=9; printf(%dn,(x5)|(xc) ,cw0604x.c,逻辑运算符与其他运算符,常用的运算符优先级小结,选择结构,逻辑表达式的使用,将下面的条件用C语言的逻辑表达式表示 例1:1x10且x7 x=1,选择结构,逻辑与和逻辑非具有短路能力 例1:gender=F c=getchar(); if (c=A ,教程P53-例5-3与P58-例5-9,设x与y有如下函数关系,试根据输入的X值,求y的值。,/*ex0503 用单分支做 */ #include int main() float x,y; printf(please input x:);

15、scanf(%f, ,/*ex0509 用if 嵌套实现 */ #include int main() float x,y; printf(请输入 x:); scanf(%f, ,switch多重选择结构,switch 在一个表达式可能的一组固定数量的值中进行选择,并采取不同的动作。,选择结构,条件表达式:整型/字符型表达式(或枚举表达式) 常量表达式:整型/字符型常量表达式,switch语句,举例 根据考试成绩的等级打印相应的分数段。,选择结构, gra=getchar(); switch(grade) case A: printf(“85100n”); case B: printf(“70

16、84n”); case C: printf(“6069n”); case D: printf(“60n”); default: printf(“errorn”); ,B 7084 6069 60 error,?,此程序正确吗?,switch语句,举例,选择结构,结果分析,错误的流程图,选择结构,正确的流程图,得到正确结果, grade=getchar(); switch(grade) case A: printf(“85100n”); break; case B: printf(“7084n”); break; case C: printf(“6069n”); break; case D: printf(“60n”); break; default: printf(“errorn”); ,B 7084,OK,break语句 跳转至switch语句之后

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号