《C语言程序设计ppt课件 第3章 选择结构.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计ppt课件 第3章 选择结构.ppt(30页珍藏版)》请在三一办公上搜索。
1、C语言程序设计,第3章 选择结构,本章主要内容,1.表达式,2. if语句,3. switch语句,4. 选择结构的嵌套,5. 选择结构的应用,选择结构,在解决大量的实际问题时,常常需要根据不同的情况或条件,制定出不同的解决方案或对策。,选择结构,选择结构是通过对条件的判断来选择执行不同的程序语句。,C语言中是用if语句或switch语句来构成选择结构的。if语句可用于构成两路或多路选择结构;switch语句能方便地构成多路选择结构。,一个程序若具有了判断和选择功能,就具备了最基本的智能。,3.1 表达式,条件是以表达式的形式来表示的表达式是用运算符和括号将运算对象连接起来的式子,运算对象可以
2、是常量、变量、函数、表达式等,第2章中已经介绍了算术表达式、赋值表达式和逗号表达式,本章将介绍关系表达式、逻辑表达式和条件表达式。,关系表达式: 2+5=a & ch=z条件表达式: xy?x:y,关系运算符,关系运算符: 、 =、 =、 !=结合性为:左结合优先级为: 、= = 、!= 优先级相同(高) 优先级相同(低)关系表达式的值有逻辑真和逻辑假。当表达式成立时值为“真”,用整数“1”表示;当表达式不成立时值为“假”,用整数“0”表示C中无逻辑型数据,常用整型变量存放逻辑值,关系表达式举例,例 设a= 4 ,b= f ,判断下列关系表达式的值 A b 相当于: 4 f 或52102,值为
3、假 F =b 相当于:70=102,值为假注意:进行相等比较时一定要用双等号“=”,因为C语言中的单个等号是赋值运算符。,逻辑运算符,逻辑运算符:!(非)、&(与)、|(或)优先次序: 高 低结合性:右结合 左结合左结合 运算规则:,逻辑表达式的值为逻辑真或逻辑假,逻辑表达式的应用,例 设a=1,b=a,c=3.0,d=0,e=3,ch=A,判断下列逻辑表达式的值:!(c-b) 值为0 a=a & ch=A & b=0 & e3-!b 值为1,逻辑表达式的应用,main() int m1,m2,n=1; m1=(13) ,在C的逻辑表达式的求解过程中,并不是所有的逻辑运算符都被执行,只是在必须
4、执行下一个逻辑运算符才能求出表达式的解时才执行该逻辑运算,程序的结果m1=? m2=?,条件表达式,由条件运算符?和:把多个表达式连接起来的式子: e1 ? e2:e3其中:e1、e2、e3可以是变量或表达式运算规则:若e1的值为真(非0值),则表达式的结果值取e2;否则e1的值为假(0值), 则表达式的结果值取e3。 实例:设 a=2,b=4,c=6,求x和y的值。x=aa?c:(b!=4?4:8); y的值为6,3.2if语句,if语句也称为条件语句,用于构成选择结构。if是根据条件是否成立来控制执行不同的语句组,以完成不同的功能。条件可以是任何类型的表达式,如逻辑型,关系型,数值型等,单
5、个已赋过值的变量或常量也可以作为表达式的特例,如x或5。if语句可构成下列选择结构:,if语句的第一种形式-可构成简单选择结构,if(表达式) 语句组,执行过程:若表达式的值为真,则执行语句组;若表达式的值为假,则执行结构后的第1条语句,简单选择结构的应用,#include stdio.hmain() float sx,yw,average; scanf(%f,%f,输入:90,80输出:?,输入:96,88输出:?,简单选择结构的应用,例: 从键盘上任意输入三个整数a,b,c,并按从大到小的顺序显示出来,该算法假定程序处理后,a中放三个数中的最大值,b中放三个数中的次大值,c中放三个数中的最
6、小值,if语句的第二种形式-可构成两路选择结构,if(表达式) 语句组1else 语句组2,执行过程 :若表达式的值为真,则执行语句组1;若表达式的值为假,则执行语句组2。选择结构执行完成后,执行结构后的第1条语句。,两路选择结构的应用,main() int exp; char ch; ch=getchar(); exp=ch=a ,输入:9输出:?,例 从键盘上输入年号,判断这一年是否为闰年,若是闰年则输出“Y”,否则输出“N”。闰年的判断依据是:若某年号能被4整除但不能被100整除,则这一年是闰年;或者这一年能被400整除也是闰年。判断闰年的逻辑表达式为:(year%4=0 & year%
7、100!=0) | year%400=0),两路选择结构的应用,main() int year,p; scanf(%d, ,输入:2012输出:?,if语句的第三种形式-可构成多路选择结构,if(表达式1) 语句组1else if(表达式2) 语句组2else if(表达式3) 语句组3 else if(表达式n) 语句组nelse 语句组n+1,执行过程:依次计算各表达式的值,哪个表达式的值为真,则执行相应的语句组。若所有表达式的值均为假时,执行else后的语句组。选择结构执行完成后,执行结构后的第1条语句。,整个if语句中只有一个分支被执行,多路选择结构的应用,main() char c;
8、 c=getchar(); if(c=a ,3.3Switch多路选择语句,执行过程:先计算switch语句中表达式的值,再依次与1到n个常量表达式的值进行比较,当表达式的值与某个case后的常量表达式的值相等时,则执行该case后的语句组。如果所有常量表达式的值都不等于switch中表达式的值,则执行default后的语句。break语句的功能是结束switch选择结构,转去执行结构后的第一条语句。,switch语句的应用,例从键盘上输入一个学生的总平均成绩(大于0且小于100),按分数段评定出成绩的相应等级,90以上为A级,8089为B级,7079为C级,6069为D级,59以下为E级。,
9、问题分析:switch语句中的表达式只能是整型或字符型,所以可用成绩的高位数字来确定其对应的分数段,而每一个分数段又对应switch中的一路选择。可用表达式“(int)(成绩/10)”计算出成绩的高位数字,其中,“(int)”的功能是将表达式的值强制转换成整数。,关键语句:switch(int)(score/10.0) case 9: grade=A; break; case 8: grade=B; break; case 7: grade=C; break; case 6: grade=D; break; case 5: case 4: case 3: case 2: case 1: cas
10、e 0: grade=E;,能用if- else if来替换吗?,3.4选择结构的嵌套,当一个选择结构中又包含另一个选择结构时,称该选择结构为嵌套的选择结构。,int a=1,b=3,c=5,d=4;if(ab)if(cd) x=1;elseif(ac)if(bd) x=2;else x=3;else x=6;else x=7;,if 语句嵌套使用时,C规定,else总是与它上面最近的if配对,选择结构的嵌套,main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 1: a+; break; case 0: b+; case 2
11、: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(n a=%d,b=%d,a,b);,无break将继续往下执行,if、switch可相互嵌套,3.5选择结构的应用,例设计一个屏幕菜单,用户通过输入选择字符,可方便地输出选择所对应的计算结果。,一个应用程序通常有许多功能,如教学管理系统中包含学生基本情况管理、教师基本情况管理、学生选课管理、学生成绩查询管理等多项功能。在应用程序中,一般使用菜单的形式来显示所有功能。这样,用户便可以通过点菜单来调用应用程序中的各项功能。在C语言中,通常使用printf()函数、scanf()函数
12、与switch语句来设计屏幕菜单,为用户提供各种选择功能,以方便用户选择想要完成的任务。,程序,算法比较,同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。一个算法的评价主要从时间复杂度和空间复杂度来考虑。,算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。,例从键盘输入三个不同的、无序的整数,并分别存放到变量x、y、z中,然后通过判断输出三个数中的最大数。要求将最大数存放在变量max中。,#include stdio.hvoid main() int x,y,z,max; printf(“n Please input x,y,z: ); scanf(%d
13、%d%d, ,程序,语法练习(单选题),1设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是 。A)x A)9,9,9 B)8,8,10 C)9,10,9 D)1,11,10,语法练习(填空题),4以下程序执行后的输出结果是_。 main() int x=10,y=20 ,t=0; if(x=y) t=x; x=y; y=t; printf(%d,%dn,x,y); 5以下程序执行后的输出结果是_。main() int n=0,m=1,x=2; if(!n) x-=1;if(m) x-=2;if(x) x-=3; printf(%dn,x); ,语法练习(编程题),6.编写一个程序,从键盘输入1个整数,判断并输出它是奇数还是偶数。,请一位学生完成编程,本章作业,本章“3.6自测练习”全部教材C语言程序设计习题与实践第二部分中第3章中的:一、知识要点二、习题三、实验完成教学平台相应周中要求的所有作业并提交预习下一章的内容,