《选择结构程序结构设计.ppt》由会员分享,可在线阅读,更多相关《选择结构程序结构设计.ppt(36页珍藏版)》请在三一办公上搜索。
1、1,第 4 章,选择结构程序设计,2,第四章 选择结构程序设计,一、关系运算符和关系表达式二、逻辑运算符和逻辑表达式三、使用if语句实现的选择结构四、条件运算符和条件表达式 五、switch语句 六、选择结构程序举例,主要内容,3,关系运算符,=!=(6种),第四章 选择结构程序设计,优先级,赋值 关系(后2前4)算术,关系表达式,用关系运算符将两个表达式连接起来的式子.,算术、关系、逻辑、赋值、字符。,值,真(1)假(0),53,一、关系运算符和关系表达式,4,21,9,举例,已知 a=5,b=4,c=3,d=7 求下列表达式的值,a+b=c*d,abc,a!=bc,a+b=c*d,0,ab
2、c,1,0,a!=b c,0,1,算术运算符的优先级高于关系运算符,不能用于判断b的值是否在a 与c 之间,“”运算符的优先级高于“!=”,5,逻辑运算符,!(逻辑非)&(逻辑与)|(逻辑或),运算规则,优先次序,赋值|&关系算术!,第四章 选择结构程序设计,(1)!:取逻辑值的相反值。(2)&:参加运算的两个逻辑值都为真时,结果为真(1)。(3)|:参加运算的两个逻辑值都为假时,结果为假(0)。,逻辑表达式,用逻辑运算符将关系表达式和逻辑量连接起来的式子。,举例,已知:(a=b=),1,a|b&0,!a&(53)|b,0,双目,单目,二、逻辑运算符和逻辑表达式,6,第四章 选择结构程序设计,
3、二、逻辑运算符和逻辑表达式,第五章 选择结构程序设计,举例,53&8 4-!0,0,(53)&(8(4-!0),4&53|(a=6),1,逻辑运算符两侧的运算对象不但可以是和,也可以是或非的整数,也可是任何类型的数据。系统判定标准:为假;非为真。,当“与运算”的左侧为0,或者“或运算”的左侧为1时,右侧的表达式不再进行计算。,短路现象,#include void main()int a=1,b=1;if(a1,1,1,7,选择结构,单分支,双分支,if(表达式)语句,多分支,if(表达式)语句else 语句,if(表达式1)语句else if(表达式)语句else 语句n,if 语句的嵌套,s
4、witch语句,第四章 选择结构程序设计,选择结构的分类,8,格式,流程图,第四章 选择结构程序设计,if(表达式)语句,三、if语句实现选择结构 单分支,if(xy)printf(“%d”,x);,举例,9,例4.5,第四章 选择结构程序设计,#include stdio.hint main()int num1,num2,max;printf(input two numbers:n);scanf(%d%d,56 41 max=56,三、if语句实现选择结构 单分支,输入两个整数,输出其中较大的数。,10,例4.6,第四章 选择结构程序设计,#include int main()float a
5、,b,t=0;scanf(“%f,%f”,3,4 3.00,4.00,if(ab)t=a;a=b;b=t;,if(ab)t=a;a=b;b=t;,3,4 4.00,0.00,当某些语句作为一个整体出现的时候,必须是复合语句的形式。,三、if语句实现选择结构 单分支,输入两个实数,按由小到大的数序输出它们。,11,格式,if(xy)printf(“%d”,x);else printf(“%d”,y);,第四章 选择结构程序设计,if(表达式)语句else 语句,三、if语句实现选择结构 双分支,举例,流程图,12,第四章 选择结构程序设计,#include int main()float a,b
6、,c,p,s;scanf(“%f,%f,%f”,输入三角形的三边,求三角形的面积。,3,4,5s=6.00,3,4,8Not a triangle!,三、if语句实现选择结构 双分支,例4.9,13,编程实现如下分段函数,输出结果保留2位小数。,练习1,#include#include int main()float x,y;scanf(“%f”,这4行包含几条语句?,if(x0)y=sqrt(x);,14,编程实现分段函数。,例4.11,0 x&x=10,x=10,y=5*x-1,if(x=0)y=0;else if(x=10)y=1.0/x;else if(x=20)y=y=2*x+1;e
7、lse y=5*x-1;,输出y,15,第四章 选择结构程序设计,if(表达式1)语句组else if(表达式)语句组else if(表达式n)语句组nelse 语句组n+1,三、if语句实现选择结构 多分支,(1)ifelse if形式,16,#include stdio.hint main()float x,y;scanf(%f,第一次运行:,5 x=5.00,y=0.20,15 x=15.00,y=31.00,第二次运行:,21.67 x=21.67,y=107.35,第三次运行:,程序如下:,17,编程实现分段函数 换一种判断顺序,例4.11,y=1.0/x,y=5*x-1,if(x=
8、10)if(x=0)y=0;else y=1.0/x;else if(x=20)y=2*x+1;else y=5*x-1;,输出y,if(x=10)if(x=0)y=0;else y=1.0/x;else if(x=20)y=2*x+1;else y=5*x-1;,18,if语句的嵌套,第四章 选择结构程序设计,if(表达式)if(表达式)语句else 语句else if(表达式3)语句3else 语句4,注意,if与else的配对原则:从else入手,找它上面最近的未配对的if配对。,三、if语句实现选择结构 多分支,(2)if语句嵌套结构,19,练习,第四章 选择结构程序设计,已知a=3
9、b=4 c=5 d=0,d=?,if(ab)d=a;else if(cb)d=c;else d=b;,if(ab)if(cb)d=c;else d=b;,if(ab)if(cb)d=c;else d=b;,if(ab)if(cb)d=c;else d=b;else d=a;,d=5,d=3,d=0,d=4,20,使用if语句中应注意的问题,在if关键字之后的括弧内为表达式,该表达式通常是逻辑表达式或关系表达式,但也可以是其它任何合法的C表达式 条件判断表达式必须用括弧括起来,后面没有分号。但在语句之后必须加分号。如果希望在满足/不满足条件时执行一组(多个)语句,则必须把这一组语句用 括起来组成
10、一个复合语句,#include int main()float a,b,c,p,s;scanf(“%f,%f,%f”,21,条件运算符条件表达式,举例,if(ab)max=a;else max=b;,第四章 选择结构程序设计,表达式?表达式:表达式,max=(ab)?a:b;,条件运算符的使用条件,若if语句中,在表达式为“真”和“假”时,都只执行一个赋值语句给同一个变量赋值,则可以用简单的条件运算符来处理。,取值,表达式1为真,则取值为表达式2的值;表达式1为假,则取值为表达式3的值。,四、条件运算符和条件表达式,右结合方向,22,使用条件表达式求两个数的较大值。(自己看),#include
11、 stdio.hint main()float num1,num2,max=0;scanf(%f,%f,例4.14,第一次运行:,3.2,4 4.00,第二次运行:,4,3.2 4.00,23,思考,一个简单的菜单选择程序。,示例1,示例2,if-else,switch,24,开关语句,第四章 选择结构程序设计,switch(表达式)case 常量表达式1:语句组1 case 常量表达式2:语句组2 case 常量表达式3:语句组3 case 常量表达式n:语句组n default:语句组n+1,五、switch 语句实现多分支,break;,执行过程,定位入口、依次执行、遇break跳出,整
12、型或字符型,25,例4.17,#include void main()char grade;printf(“请输入考试等级AD:”);scanf(“%c”,B,根据输入的考试成绩等级打印出百分制分数段。A:80100 B:7079 C:6069 D:60,说明:应在每一个printf后加break语句,第四章 选择结构程序设计,7079606960Error,26,#include void main()char grade;printf(“请输入考试等级AD:”);scanf(“%c”,B7079,最后一行的break可以省略。,第四章 选择结构程序设计,例4.17,根据输入的考试成绩等级打
13、印出百分制分数段。A:80100 B:7079 C:6069 D:60,27,思考,示例1,示例2,28,思考(例4.18),#include void main()int score;printf(“请输入考试成绩0100:”);scanf(“%d”,根据输入的考试成绩(百分制整数)打印出等级水平。(使用ifelse语句实现)A:80100 B:7079 C:6069 D:60,思考:使用switch语句如何实现?,程序,第四章 选择结构程序设计,29,#include void main()int score;printf(“请输入考试成绩0100:”);scanf(“%d”,根据输入的考
14、试成绩(百分制整数)打印出等级水平。(使用switch语句实现)A:80100 B:7079 C:6069 D:60,思考:本程序有问题么?,程序,思考(例4.18),30,#include void main()int score;printf(“请输入考试成绩0100:”);scanf(“%d”,太麻烦了有没有简单的办法呢?,改进程序1,101种情况,思考(例4.18),根据输入的考试成绩(百分制整数)打印出等级水平。(使用switch语句实现)A:80100 B:7079 C:6069 D:60,31,#include void main()int score,p;printf(“请输入
15、考试成绩0100:”);scanf(“%c”,改进程序2,11种情况,思考:不同case值时执行相同的操作,是否可以合并?,第四章 选择结构程序设计,32,#include void main()int score,p;printf(“请输入考试成绩0100:”);scanf(“%c”,改进程序3,注意:多个case共用一组执行语句时,共用的执行语句写在最后一个case的后面。,第四章 选择结构程序设计,33,第四章 选择结构程序设计,例4.10,求方程 ax2+bx+c=0 的解。(自学),六、选择结构程序设计举例,34,第四章 选择结构程序设计,#include#include void
16、main()float a,b,c,disc,x1,x2,p,q;scanf(%f%f%f,3 4 1该方程有两个不等的实根:-0.3333 and-1.0000,4 3 1该方程有两个复根:-0.3750+0.3307 i-0.3750+0.3307 i,例4.10,求方程 ax2+bx+c=0 的解。(各种形式),第一次运行:,第二次运行:,35,第四章 选择结构程序设计,例4.13,输入三角形的三边,判断能否构成三角形。如果能,说明所组成的三角形是等腰、等边、直角、等腰直角还是一般三角形。(假定边长均为整数),#include void main()int a,b,c;int f1=0,
17、f2=0;printf(“输入三角形的三边:”);scanf(“%d%d%d”,if(a+bc&a+cb&b+ca)else printf(“不构成三角形!”);,输出“一般三角形”,判断的顺序是否可以任意调整?,if(a=b&a=c)printf(“等边三角形!”);else,if(a=b|b=c|a=c)f1=1;,if(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a)f2=1;,if(f1=1 else if(f1=1)printf(“等腰三角形”);else if(f2=1)printf(“直角三角形”);else printf(“一般三角形”);,36,作 业,P87习题4:一、二、三(写本上)实验二 选择结构程序设计实验指导选做题见课程学习网站预习程序要求必须先写好,上机课先检查。,