试题]lh-04-多分支结构和循环结构程序设计.ppt

上传人(卖家):三亚风情 文档编号:3390579 上传时间:2022-08-26 格式:PPT 页数:30 大小:240.01KB
下载 相关 举报
试题]lh-04-多分支结构和循环结构程序设计.ppt_第1页
第1页 / 共30页
试题]lh-04-多分支结构和循环结构程序设计.ppt_第2页
第2页 / 共30页
试题]lh-04-多分支结构和循环结构程序设计.ppt_第3页
第3页 / 共30页
试题]lh-04-多分支结构和循环结构程序设计.ppt_第4页
第4页 / 共30页
试题]lh-04-多分支结构和循环结构程序设计.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、西安电子科技大学 -Xidian University 1主要内容 多分支选择结构 switch语句 循环结构 while语句西安电子科技大学 -Xidian University 2多分支的选择结构多分支的选择结构西安电子科技大学 -Xidian University 3多分支的选择结构根据同一个表达式的各种取值分情况处理根据同一个表达式的各种取值分情况处理表达式表达式e?语句序列语句序列1值值1语句序列语句序列2值值2语句序列语句序列n+1其他值其他值语句序列语句序列n值值n.西安电子科技大学 -Xidian University 4switch语句switch语句用于表示多分支的选语句用

2、于表示多分支的选择结构,其基本形式为:择结构,其基本形式为:switch(表达式表达式e)case 常量表达式常量表达式1:语句序列语句序列1;break;case 常量表达式常量表达式2:语句序列语句序列2;break;.case 常量表达式:常量表达式:语句序列;语句序列;break;default:语句序列语句序列+1;switch语句的含义是:若表达式语句的含义是:若表达式e的值等于某个常量表达式的值等于某个常量表达式i的值,则执行相应的语句序的值,则执行相应的语句序列列i;否则,执行;否则,执行default的语的语句序列。句序列。什么是常量表达式?什么是常量表达式?西安电子科技大学

3、 -Xidian University 5switch语句的使用举例 问题:输入一个百分制的成绩,将其转换为等级分制输出。规则如下:规则如下:90100:A8089:B7079:C6069:D低于低于60:F西安电子科技大学 -Xidian University 6成绩转换1(用if语句)#include main()int score;printf(input a score(0100):);scanf(%d,&score);if(score=90)printf(grade=An);else if(score=80)printf(grade=Bn);else if(score=70)prin

4、tf(grade=Cn);else if(score=60)printf(grade=Dn);else printf(grade=Fn);西安电子科技大学 -Xidian University 7成绩转换2#include main()int score;/*score用于表示百分制分数用于表示百分制分数*/printf(input score(0100):);scanf(%d,&score);switch(score/10)case 10:printf(grade=An);break;case 9:printf(grade=An);break;case 8:printf(grade=Bn);

5、break;case 7:printf(grade=Cn);break;case 6:printf(grade=Dn);break;case 5:printf(grade=Fn);break;case 4:printf(grade=Fn);break;case 3:printf(grade=Fn);break;case 2:printf(grade=Fn);break;case 1:printf(grade=Fn);break;case 0:printf(grade=Fn);break;没有这些没有这些break,该,该程序的执行结果是什程序的执行结果是什么?么?西安电子科技大学 -Xidia

6、n University 8缺少break的switch语句示例 switch(n)case 1:printf(grade=An);case 2:printf(grade=Bn);case 3:printf(grade=Cn);case 4:printf(grade=Dn);case 5:printf(grade=Fn);n=1?YesNo输出输出grade=A输出输出grade=Bn=2?YesNo输出输出grade=C输出输出grade=D输出输出grade=Fn=3?YesNon=4?YesNon=5?YesNo西安电子科技大学 -Xidian University 9switch中的b

7、reak 语句 break 语句的目的 终止 switch 语句的执行 如果没有 break 语句,则程序会从指定的 case 分支开始,并在该分支结束后继续执行下去 除非 switch 语句结束,后面的其他 case 分支或 default 分支中的语句都会得到执行 原因:case 子句中的常数表达式仅起到语句标号的作用,不是分支之间的分隔标记 省略 break 语句的场合 允许多个分支执行同样的代码西安电子科技大学 -Xidian University 10成绩转换3#include main()int score,grade;printf(input a score(0100):);sc

8、anf(%d,&score);grade=score/10;switch(grade)case 10:case 9:printf(grade=An);break;case 8:printf(grade=Bn);break;case 7:printf(grade=Cn);break;西安电子科技大学 -Xidian University 11成绩转换3(续)case 6:printf(grade=Dn);break;case 5:case 4:case 3:case 2:case 1:case 0:printf(grade=Fn);break;default:printf(Invalid inp

9、ut!n);西安电子科技大学 -Xidian University 12成绩转换4(if和switch结合使用)#include main()int score,n;printf(input a score(0100):);scanf(%d,&score);if(score=90)n=1;else if(score=80)n=2;else if(score=70)n=3;else if(score=60)n=4;else n=5;switch(n)case 1:printf(grade=An);break;case 2:printf(grade =Bn);break;case 3:printf

10、(grade=Cn);break;case 4:printf(grade=Dn);break;case 5:printf(grade=Fn);break;/*end of switch*/*end of main*/西安电子科技大学 -Xidian University 13成绩转换5(if和switch结合使用)#include main()int score,n;printf(input a score(0100):);scanf(%d,&score);if(score 60)n=0;else n=(score 60)/10+1;switch(n)case 5:case 4:printf(

11、grade =An);break;case 3:printf(grade=Bn);break;case 2:printf(grade=Cn);break;case 1:printf(grade=Dn);break;case 0:printf(grade=Fn);break;/*end of switch*/*end of main*/至此,我们已经了解了至此,我们已经了解了if语句和语句和switch语句的含义和用法,语句的含义和用法,那么,程序中使用那么,程序中使用if语句的地方能否用语句的地方能否用switch语句替换呢?语句替换呢?西安电子科技大学 -Xidian University

12、14switch示例5编写程序,接受用户输入的年份和月份,输出该月天数编写程序,接受用户输入的年份和月份,输出该月天数#include#include zylib.hint main()int year,month,days_of_month;BOOL leapyear=FALSE;/*输入部分输入部分 */printf(The program gets a year and a month,and prints days of the month.n);printf(The year:);year=GetIntegerFromKeyboard();printf(The month:);mon

13、th=GetIntegerFromKeyboard();if(month 12)printf(Month error!n);return 1;/*计算部分计算部分 */leapyear=year%4=0&year%100!=0|year%400=0;switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:days_of_month=31;break;case 4:case 6:case 9:case 11:days_of_month=30;break;case 2:days_of_month=28+(int)leapyea

14、r;break;/*输出部分输出部分 */printf(Days in%4d-%2.2d is%d.n,year,month,days_of_month);return 0;西安电子科技大学 -Xidian University 15#include void main()int a=1,b=6,c=4,d=2;switch(a+)case 1:c+;d+;case 2:switch(+b)case 7:c+;case 8:d+;case 3:c+;d+;break;case 4:c+;d+;printf(%d,%dn,c,d);switch示例示例6西安电子科技大学 -Xidian Univ

15、ersity 16switch语句小结switch语句用于表示多分支的选语句用于表示多分支的选择结构,可以用择结构,可以用if语句等价语句等价地表示地表示switch(表达式表达式e)case 常量表达式常量表达式1:语句序列语句序列1;break;case 常量表达式常量表达式2:语句序列语句序列2;break;.case 常量表达式:常量表达式:语句序列语句序列n;break;default:语句序列语句序列n+1;可以将各种情况进行归纳后再可以将各种情况进行归纳后再用用switch语句表示,例如语句表示,例如 grade=score/10;break语句在语句在switch语句中有很语句

16、中有很重要的作用重要的作用西安电子科技大学 -Xidian University 17选择结构程序设计小结 掌握并熟练应用if语句和switch语句pAB成立成立不成立不成立ab选择结构选择结构1 1pA成立成立不成立不成立ab选择结构选择结构2 2表达式表达式e?语句序列语句序列1值值1语句序列语句序列2值值2语句序列语句序列n+1其他值其他值语句序列语句序列n值值n.西安电子科技大学 -Xidian University 18C的循环语句C语言提供了描述循环计算的语句:语言提供了描述循环计算的语句:while语句语句 do.while语句语句 for语句语句学习循环结构程序设计就是掌握以上

17、语句的使用方法学习循环结构程序设计就是掌握以上语句的使用方法西安电子科技大学 -Xidian University 19while语句语句西安电子科技大学 -Xidian University 20while语句的格式和含义 while语句的格式:while(表达式表达式p)循环体语句循环体语句ApA真真 假假循环结构循环结构while语句的含义:语句的含义:1)计算表达式计算表达式p;2)若表达式的值为若表达式的值为“假假”,则结束,则结束while语句的执行;否则,执行循环体语语句的执行;否则,执行循环体语句句A,然后转,然后转1);西安电子科技大学 -Xidian University

18、21while语句使用举例1#include int main()int i,s;i=1;s=0;while(i=100)s+=i;i+;printf(%dn,s);return 0;BYNI 1S 0I=100?S S+I输出输出S的值的值开始开始结束结束I I+1AC西安电子科技大学 -Xidian University 22求最大公约数和最小公倍数 void main()int a,b,s1,s2;/s1:最大公约数 s2:最小公倍数int i,j,min,max;printf(请输入两个整数:n);scanf(%d%d,&a,&b);min=ab?a:b;s1=s2=0;for(i=1

19、;i=max;j-)if(j%max=0&j%min=0)s2=j;else continue;printf(%d与%d的最大公约数为:%dt最小公倍数为:%dn,a,b,s1,s2);西安电子科技大学 -Xidian University 23ABCD求最大公约数流程图(欧氏算法)YNr不等于不等于0?输出输出n的值的值输入正整数输入正整数m和和n开始开始结束结束m n;n rr m%nABCDr m%n西安电子科技大学 -Xidian University 24求最大公约数程序#include int main()return 0;YNr不等于不等于0?输出输出n的值的值输入正整数输入正整

20、数m和和n开始开始结束结束m n;n rr m%nr m%nwhile(r!=0)m=n;n=r;r=m%n;printf(input two integers:);scanf(%d%d,&m,&n);r=m%n;int m,n,r;printf(ngcd=%dn,n);西安电子科技大学 -Xidian University 25 分析问题,在求解过程中:存在一个(些)运算(动作)需要重复进行(循环)若干次。重复的次数是事先确定的,或者是根据条件确定的。处理循环计算需要明确的三个问题:循环体:哪些运算(动作)是需要重复进行的;循环条件:重复这些运算的条件是什么,即在什么情况下终止/继续这个重复

21、的过程。循环准备:在进行重复的运算处理之前,需要进行的准备工作是什么;循环结构程序的编写要点西安电子科技大学 -Xidian University 26程序设计练习一球从一球从100m高度自由落下,每次落地后反跳回原来高度的一半,再高度自由落下,每次落地后反跳回原来高度的一半,再落下。求它在第落下。求它在第10次落地时,共经过多少米?第次落地时,共经过多少米?第10次反弹的高度次反弹的高度是多少?是多少?西安电子科技大学 -Xidian University 27落地-反弹一球从一球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落高度自由落下,每次落地后反跳回原来高度的一半,再落下

22、。求它在第下。求它在第10次落地时,共经过多少米?第次落地时,共经过多少米?第10次反弹的高度是多次反弹的高度是多少?少?100m50m25m12.5m设:设:i:落地次数计数落地次数计数h:每次落地时的高度每次落地时的高度sum:落地和反弹所经过的总长度落地和反弹所经过的总长度h1h2h3h4西安电子科技大学 -Xidian University 28落地-反弹(续1)#include main()sum-=h;printf(h=%lf,sum=%lfn,h,sum);TC2.0循环体中必须包含能改循环体中必须包含能改变循环条件的语句,使变循环条件的语句,使得重复计算过程能够结得重复计算过程

23、能够结束束sum+=h;/*将本次落下的高度将本次落下的高度h累加到距离的总长度中累加到距离的总长度中*/h=h/2;/*反弹反弹*/sum=sum+h;/*将反弹的高度将反弹的高度h累加到距离的总长度中累加到距离的总长度中*/i=i+1;double h=100,sum=0;int i;i=1;/*落地次数落地次数*/while(i=10)西安电子科技大学 -Xidian University 29反弹-落地100m50m25m12.5m设:设:i:落地次数计数落地次数计数h:每次落地时的高度每次落地时的高度sum:落地和反弹所经过的总长度落地和反弹所经过的总长度h1h2h3h4西安电子科技大学 -Xidian University 30反弹-落地(续2)#include main()h=h/2;printf(h=%lf,sum=%lfn,h,sum);double h=100,sum=100;int i;i=1;/*反弹和落地次数反弹和落地次数*/h=h/2;/*反弹至前次落地高度的一半反弹至前次落地高度的一半*/sum=sum+h*2;/*完成前次落地后的总距离(前次落地后的反弹完成前次落地后的总距离(前次落地后的反弹+本次落地)距离本次落地)距离*/i=i+1;while(i=9)

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(试题]lh-04-多分支结构和循环结构程序设计.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|