第一讲多分支嵌套结构的实现课件.ppt

上传人:牧羊曲112 文档编号:1525831 上传时间:2022-12-03 格式:PPT 页数:40 大小:579KB
返回 下载 相关 举报
第一讲多分支嵌套结构的实现课件.ppt_第1页
第1页 / 共40页
第一讲多分支嵌套结构的实现课件.ppt_第2页
第2页 / 共40页
第一讲多分支嵌套结构的实现课件.ppt_第3页
第3页 / 共40页
第一讲多分支嵌套结构的实现课件.ppt_第4页
第4页 / 共40页
第一讲多分支嵌套结构的实现课件.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《第一讲多分支嵌套结构的实现课件.ppt》由会员分享,可在线阅读,更多相关《第一讲多分支嵌套结构的实现课件.ppt(40页珍藏版)》请在三一办公上搜索。

1、1,第二部分 模块化程序设计,2,第二部分 主要内容,第一讲 多分支嵌套结构的实现第二讲 循环嵌套结构的实现第三讲 数据文件及应用第四讲 指针及应用,3,第一讲多分支嵌套结构的实现,4,主要内容,回顾程序的三种基本结构嵌套结构选择嵌套结构if语句深入switch语句应用实例参考 2.2.2 2.3 2.4,5,顺序结构,选择结构,三种基本结构的示意图,循环结构,6,嵌套结构,自顶向下,逐步细化的分析结果。三种基本结构中的语句组(顺序语句组、if分支语句组、else分支语句组、循环体语句组)可以包含任意结构的语句,从而形成不同的嵌套结构。嵌套结构没有特定的结构形式,由分析方法自然形成。,7,选择

2、嵌套结构if语句深入,if语句的多种结构if和else的匹配原则,8,if语句的多种结构,if (条件表达式) 语句1else 语句2,双分支结构(复习)十字路口或直行或右转弯单分支结构十字路口或直行或停选择嵌套结构多分支结构参考2.2.2,9,单分支结构,if(条件) 语句,if(m = c) m=m;else m=c ;,if(c!=m) m=c;,常见错误写法:,示例:若m与c相同,m值不变,否则c的值给m,正确写法:,单分支结构示例-求绝对值,#include int main(void) int number; printf(Enter a number: ); scanf(%d,

3、,10,Enter a number: 10 The absolute value is 10.,Enter a number: -300 The absolute value is 300.,sample21_02.cpp,分析:负数求反,正数跳出,编程实现,11,选择嵌套结构,在if语句中又包含一个或多个if语句if语句的嵌套参考 2.2.2,12,完整嵌套结构 P39,if(条件1) if(条件2) 语句1 else 语句2else if(条件3) 语句3 else 语句4,注:条件多以表达式形式出现,if (x 0) y = 0; else if (x = 15) y = 4 * x

4、/ 3; else y = 2.5 * x - 10.5; ,13,实例1 (多分支)分段计算水费sample21_03.cpp,# include int main(void) double x, y; printf(Enter x:); scanf(%lf, ,Enter x: -0.5f(-0.50) = 0.00,Enter x: 9.5f(9.50) = 12.67,Enter x: 21.3f(21.30) = 42.75,写出If语句,完整程序,上机调试!,2种嵌套if语句的比较,y=x+1 x=2,14,if (x 1) y = x + 1; else if (x 2) y =

5、 x + 2; else y = x + 3;,if (x 2) if (x 1) y = x + 1; else y = x + 2;else y = x + 3;,编程比较结果!,15,不对称嵌套结构示例:求实足年龄 sample21_04.cpp,age=sysY-bthY; if(sysMbthM) age=age-1; else if(sysM=bthM) if (sysDbthD) age=age-1;,年龄=当前年份-生日年份如果生日月份还没到年龄减一岁否则如果生日月份已到但生日还没到年龄减一岁,age=sysY-bthY; if(sysMbthM) age=age-1; els

6、e if(sysM=bthM),用复杂条件表示 :,16,else 和 if 的匹配,if(表达式1)if(表达式2) 语句1else 语句2 elseif(表达式3) 语句3 else 语句4,if(表达式1)if(表达式2) 语句1 elseif(表达式3) 语句3 else 语句4,else 与最靠近它的、没有与别的 else 匹配过的 if 匹配,if(表达式1)if(表达式2) 语句1 elseif(表达式3) 语句3 else 语句4,17,改变else 和 if 的配对,改写下列 if 语句,使 else 和第1个 if 配对。 if (x 2) if (x 1) y = x +

7、 1; else y = x + 2;,if (x 2) if (x 1) y = x + 1; else y = x + 2;,if (x 2) if (x 1) y = x + 1; else;else y = x + 2;,18,多分支结构,if (表达式1) 语句1else if (表达式2) 语句2else if (表达式n-1) 语句n-1else 语句n,#include void main(void) char cLevel; int fScore; printf(请输入成绩:); scanf(%d,实例: 输入百分制成绩,按A、B、C、D、E输出相应等级。,#include

8、main( ) int fScore; char cLevel; printf(请输入成绩:); scanf(%d,#include void main(void) char cLevel; int fScore; printf(请输入成绩:); scanf(%d,default :cLevel =E;,21,switch(表达式) case 常量表达式1:语句段1; break; case 常量表达式2:语句段2 ; break; . case 常量表达式n:语句段n ; break; default : 语句段n+1 ; ,switch(fScore /10) case 10: case

9、9: cLevel =A;break; case 8: cLevel =B;break; case 7: cLevel =C;break; case 6: cLevel =D;break; default :cLevel =E;,22,switch语句,处理多分支选择问题,3种情况1、在switch语句的每个语句段中都使用break语句,但不使用default switch(表达式) case 常量表达式1:语句段1; break; case 常量表达式2:语句段2 ; break; . case 常量表达式n:语句段n ; break; default : 语句段n+1 ;,2、在switc

10、h语句的每个语句段中都使用break语句,并使用default,#include main( ) int fScore; char cLevel; printf(请输入学生成绩:); scanf(%d,default :cLevel =E;,例2-5计算器程序。问题描述:任意输入两个数,根据用户选择的功能菜单,求出它们的和、差、积、除的结果。,#include void main(void) double dLOper,dROper,dResult;/* 存放左右操作数 */ int nFun;/* 存放运算符 */ printf( -n);/* 构造功能菜单 */ printf( 加法运算-

11、1n); printf( 减法运算-2n); printf( 除法运算-3n); printf( 乘法运算-4n); printf( -n); printf( 请输入功能选择: ); scanf(%d, /* 输出结果 */,26,3、在switch中不使用break,switch(表达式) case 常量表达式1:语句段1; case 常量表达式2:语句段2; . case 常量表达式n:语句段n; default : 语句段n+1;,27,switch(表达式) case 常量表达式1:语句段1; case 常量表达式2:语句段2; . case 常量表达式n:语句段n; default

12、: 语句段n+1;,fScore89cLevel =?,switch(fScore /10) case 10: case 9: cLevel =A; case 8: cLevel =B; case 7: cLevel =C; case 6: cLevel =D; default :cLevel =E; ,求某年某月某日是该年的第几天,sample21_14.cpp / y年,m月,d日 / days计算的天数 days=d; switch(m-1) case 12:days+=31; case 11:days+=30; case 10:days+=31; case 9:days+=30; ca

13、se 8:days+=31;,case 7:days+=31; case 6:days+=30; case 5:days+=31; case 4:days+=30; case 3:days+=31; case 2:days+=isLeap(y)?29:28; case 1:days+=31; ,28,复合赋值运算符 P53,days+=31days=days+31在“=”前加上某些运算符复合赋值运算符C语言可以构成复合运算符的有:+ - * / % & | 详见P53:表3-1双目复合运算符常用:+= -= *= 等,自增,自减运算,单目运算符所构成的复合赋值运算+ 自增1- 自减1如:i+

14、参与运算后,i+1+i i+1后,参与运算i- 参与运算后,i-1-i i-1后,参与运算,int x=0,y=0,i=1;x=i+;y=+i;printf(x=%d,y=%d,i=%d,x,y,i);,x=1,y=3,i=3,条件表达式 P39,一般形式:表达式1 ? 表达式2 : 表达式3值:若“表达式1 ”的值为真,则以“表达式2”为该条件表达式的值;否则以“表达式3”为该条件表达式的值。通常用于赋值语句中,如:days+= isLeap(y)?29:28; if(ab) max=a;else max=b max=(ab)?a:b;,32,Is函数构造,判断函数,返回1或0表示真或假调用

15、时通常表示一个条件,运用if语句再作进一步处理。,判奇数int isOdd(int m)判偶数int isEven(int m)判闰年int isLeap(int year),33,判奇数,int isOdd(int m) if(m%2=1) return 1; else return 0;,int isOdd(int m) return m%2;,34,判偶数,int isEven(int m) if(m%2=0) return 1; else return 0;,int isEven(int m) return !(m%2);,35,判闰年,int isLeap(int year) ret

16、urn (year%4=0,完整程序:求2010年3月20日是2010年的第几天,#includeint isLeap(int year);void main()int y,m,d,days; y=2010,m=3,d=20; days=d; switch(m-1) case 12:days+=31; case 11:days+=30; case 10:days+=31; case 9:days+=30; case 8:days+=31; case 7:days+=31; case 6:days+=30; case 5:days+=31; case 4:days+=30; case 3:day

17、s+=31; case 2:days+=isLeap(y)?29:28; case 1:days+=31; ,printf(days=%d,days);int isLeap(int year) return ( year%4=0,运行过程days=20m-1=22010%4!=0且2010%400!=0返回0days=20+28=48days=48+31days=79,改为通用程序,从键盘输入年、月、日!,37,实例1,假设自动售货机出售4种商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),售价分别是每份3.0、2.5、4.0和3.5元。在屏

18、幕上显示以下菜单当用户输入编号14,显示相应商品的价格;输入0,退出查询;输入其他编号,显示价格为0。1 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 Exit,上机编程,调试实现!,38,#include int main(void) int choice; double price; printf(1 Select crisps n); printf(2 Select popcorn n); printf(3 Select chocolate n); printf(4 Select cola n); prin

19、tf(0 exit n); printf(Enter choice: ); scanf(%d, ,1 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice: 1price = 3.0,1 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice: 7price = 0.0,1 Select crisps2 Select popcorn 3 Select chocolate4 Selec

20、t cola 0 ExitEnter choice: 0Thanks,39,实践,使用switch语句实现个人所得税的计算。2011.9.1日起执行7级超额累进税率:扣除3500元。 全月应纳税所得额 税率 速算扣除数(元) 全月应纳税额80000元 45% 13505,40,输入n个数,调用int isEven(int m)函数求偶数之和sample21_11.cpp,#includeint isEven(int m);int main() int i,n,x,sum;printf(input n:);scanf(%d, ,printf(sum=%d,sum);return 0;int isEven(int m) return !(m%2);,如果是求奇数,如何修改程序?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号