第4章 选择结构程序设计ppt课件.ppt
第4章 选择结构程序设计条条 件件YN语句语句2语句语句1【例例4.24.2】:用:用if形式编写程序,判断变量形式编写程序,判断变量x、y 的值的大小关系并输出对应的数值。的值的大小关系并输出对应的数值。 问题分析:问题分析: 本例要求判断本例要求判断变量变量x,y的值的大小的值的大小关系。首先应该从关系。首先应该从键盘输入变量键盘输入变量x,y的值,然后再采用的值,然后再采用缺省形式缺省形式if语句判语句判断它们的大小关系断它们的大小关系并输出对应的数值。并输出对应的数值。 程序如下:程序如下: #include main() int x,y; printf(Please input x,y:); scanf(%d,%d,&x,&y); if(xy) printf(xyn); printf(%d,%dn,x,y); 运行程序 通常判断某年为闰年有两种情况:通常判断某年为闰年有两种情况: (1) (1) 年号能被年号能被4 4整除但不能被整除但不能被100100整除;整除; (2) (2) 年号能被年号能被400400整除。整除。假设用整型变量假设用整型变量Y Y表示该年的年号。表示该年的年号。上述两种情况分别可以表示为:上述两种情况分别可以表示为:(1) (Y%4=0)&(Y%100!=0)(2) Y%400=0最终判断某年是否为闰年的表达式为:最终判断某年是否为闰年的表达式为: (Y%4=0)&(Y%100!=0) | (Y%400=0)【例例4.34.3】:设计程序,判断某年是否为闰年。:设计程序,判断某年是否为闰年。问题分析:问题分析: 流程图:流程图: 开始开始 Y%4=0&Y%100!=0|Y%400=0 Y%4=0&Y%100!=0|Y%400=0YYNN定义定义Y, leap leap输入输入Yleap=1leap=1leap=0leap=0 leap=1leap=1输出输出Y为闰年为闰年输出输出Y非闰年非闰年结束结束#include #include main()main() int Y,leap; int Y,leap; printf(Please insert the year number:); printf(Please insert the year number:); scanf(%d,&Y); scanf(%d,&Y); if(Y%4=0)&(Y%100!=0)|(Y%400=0)if(Y%4=0)&(Y%100!=0)|(Y%400=0) leap=1; leap=1; else leap=0; else leap=0; if(leap=1)if(leap=1) printf(%d is a leap year.n,Y); printf(%d is a leap year.n,Y); else else printf(%d is not a leap year.n,Y); printf(%d is not a leap year.n,Y); 程序如下程序如下运行程序 在一个在一个ifif语句又包含一个或多个语句又包含一个或多个ifif语句(或者语句(或者说说ifif语句中的执行语句本身又是语句中的执行语句本身又是ifif结构语句的情况)结构语句的情况)称为称为ifif语句的嵌套。语句的嵌套。 标准语法格式为:标准语法格式为: if(表达式表达式1) if(表达式表达式2) 语句语句1; else 语句语句2;else if(表达式表达式3) 语句语句3; else 语句语句4; 功能:功能:先先判断判断表达式表达式1 1的值,若表的值,若表达式达式1 1为非为非0 0,再判断,再判断表达式表达式2 2的值,若表达式的值,若表达式2 2为非为非0 0,则执行语句则执行语句1 1,否则执行语,否则执行语句句2 2。若表达式。若表达式1 1的值为的值为0 0,再判断再判断表达式表达式3 3的值,若表的值,若表达式达式3 3为非为非0 0,则执行语句,则执行语句3 3,否则执行语句否则执行语句4 4。 流程图流程图 表达式表达式1语句语句1表达式表达式2表达式表达式4YNYNYN语句语句2语句语句3语句语句4有关嵌套有关嵌套ifif语句使用的几点说明:语句使用的几点说明:嵌套嵌套ifif语句使用非常灵活,不仅标准语句使用非常灵活,不仅标准ifif语句可以嵌套,其它语句可以嵌套,其它ifif语句也可以嵌套;被嵌套的语句也可以嵌套;被嵌套的ifif语句可以是标准语句可以是标准ifif语句,也可语句,也可以是其它以是其它ifif语句。语句。2. 2. 被嵌套的被嵌套的ifif语句本身又是一个嵌套的语句本身又是一个嵌套的ifif语句,则称为语句,则称为ifif语句语句的多重嵌套。的多重嵌套。3. 3. 在多重嵌套的在多重嵌套的ifif语句中,语句中,elseelse总是与离它最近并且没有与其总是与离它最近并且没有与其它它elseelse配对的配对的ifif是配对关系。是配对关系。 【例例4.44.4】从键盘上输入从键盘上输入3 3个实数个实数a,b,c,a,b,c,求出求出 其中的最小值并输出其值。其中的最小值并输出其值。 #include main( ) float a,b,c,min; printf(Please input a,b,c:); scanf(%f%f%f,&a,&b,&c); if(ab) if(ac) min=a; else min=b; else if(bc) min=b; else min=c; printf(min=%fn,min); 程序如下:程序如下:运行程序四、四、多分支多分支ifelse if语句形式语句形式 语法格式:语法格式:if(表达式表达式1) 语句语句1; else if(表达式表达式2) 语句语句2; else if(表达式表达式n-1) 语句语句n-1; else 语句语句n; 功能:功能:首先计算表达式首先计算表达式1的值,若值为真,的值,若值为真,则执行分支语句则执行分支语句1;否则,再计算表达式;否则,再计算表达式2的值,若值为真,则执行分支语句的值,若值为真,则执行分支语句2,如如果所有果所有if后的表达式都不为真,则执行分支后的表达式都不为真,则执行分支语句语句n。 if-else-if形式形式表达式表达式1语句语句1Y表达式表达式2N语句语句2YN 表达式表达式n-1Y语句语句n-1N语句语句n【例例4.54.5】编写程序,要求输入一个学生的考试编写程序,要求输入一个学生的考试成绩,输出其分数和对应的等级。成绩,输出其分数和对应的等级。 问题分析:学生成绩共分问题分析:学生成绩共分5个等级:小于个等级:小于60分为分为“E”;6070分为分为“D”;7080分为分为“C”;8090分为分为“B”;90分以上为分以上为“A”。 #include main() int f; printf(Please input a students score:); scanf(%d,&f); if(f=0&fEn,f); else if(fDn,f); else if(fCn,f); else if(fBn,f); else if(fAn,f); else printf(Your input are error!n); 程序如下程序如下运行程序1.if1.if语句中的条件表达式必须用()括起来,并且语句中的条件表达式必须用()括起来,并且 在括号外部不能加分号;在括号外部不能加分号;2.if2.if或或elseelse子句后面的执行语句均有分号;子句后面的执行语句均有分号;3.else3.else是是ifif语句的子句,必须与语句的子句,必须与ifif搭配使用,不可搭配使用,不可 以单独使用;以单独使用;4.4.当当ifif或或elseelse子句后是多个执行语句构成的语句组子句后是多个执行语句构成的语句组 时(复合语句),必须用时(复合语句),必须用 括起来,否则各子句括起来,否则各子句 均只管到其后第一个分号处;均只管到其后第一个分号处;5.if5.if或或elseelse子句后只接单个分号时,应把之作为空子句后只接单个分号时,应把之作为空 语句处理。语句处理。 有关有关ifif语句使用的几点说明:语句使用的几点说明:程序如下:程序如下:include main() int a,b,max; printf(Please input a,b:); scanf(%d%d,&a,&b); if(ab)?a:b); 【例例4.64.6】用条件表达式输出最大值。用条件表达式输出最大值。运行程序 说明说明:上年,月息上年,月息r为为10 ;分析:根据身高与体重的关系,医务工作者经分析:根据身高与体重的关系,医务工作者经过广泛的调查分析得出以下过广泛的调查分析得出以下“体指数体指数”与肥胖与肥胖程度的关系:程度的关系: 体指数体指数t=体重体重w/(身高身高h)2 当当t=27时,为肥胖。时,为肥胖。 其中其中w单位为千克,单位为千克,h单位为米。单位为米。