《新编C语言程序设计教程》课件第5章.ppt

上传人(卖家):momomo 文档编号:7904205 上传时间:2024-09-03 格式:PPT 页数:66 大小:369KB
下载 相关 举报
《新编C语言程序设计教程》课件第5章.ppt_第1页
第1页 / 共66页
《新编C语言程序设计教程》课件第5章.ppt_第2页
第2页 / 共66页
《新编C语言程序设计教程》课件第5章.ppt_第3页
第3页 / 共66页
《新编C语言程序设计教程》课件第5章.ppt_第4页
第4页 / 共66页
《新编C语言程序设计教程》课件第5章.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

1、第5章 选择结构程序设计 第第5章章 选择结构程序设计选择结构程序设计 5.1 if语句语句 5.2 switch语句语句 5.3 goto语句语句 5.4 程序设计举例程序设计举例 第5章 选择结构程序设计 5.1 if语句语句5.1.1 单分支单分支if语句语句 格式:if(条件表达式)语句 功能:先计算条件表达式的值,如果条件表达式的值为真(非0),执行语句(选择体),否则执行if语句的下一条语句。NS图:见图5-1 之(a)。第5章 选择结构程序设计 图 5-1 条件表达式语句1(选择体1)语句2(选择体2)TF(b)条件表达式语句(选择体)TF(a)第5章 选择结构程序设计 例如例如

2、:(1)如果x0,输出x。if(x0)printf(x=%f,x);(2)如果a等于b,输出a=b。if(a=b)printf(%s,a=b);第5章 选择结构程序设计 说明:(1)条件表达式必须用小括号括起,同时注意区分作为条件的表达式与作为数值的表达式。(2)if语句中要选择执行的语句称为选择体,选择体从语法上只能是一条语句,如果选择体需多条语句描述,必须采用复合语句。第5章 选择结构程序设计 例如例如:如果x0,求x的平方根。(1)将结果放入变量y 中;(2)输出x的平方根。if(x0)y=sqrt(x);printf(平方根=%f,y);(3)不管选择体多么复杂,包含多少条语句,if语

3、句逻辑上是一条语句,后面的双分支if语句、多分支if语句、switch语句、循环语句均是逻辑上的一条语句。第5章 选择结构程序设计 例例 5 1 计算y,。提示:x等于1函数无定义。程序如下:/*程序5-1,求函数值*/main()float x;float y;printf(请输入x:);scanf(%f,&x);if(x!=1)y=(x+1)/(x-1);printf(x=%6.2f,y=%6.2fn,x,y);输入数据:1.2运行结果:x=1.20,y=11.00 11xxy第5章 选择结构程序设计 5.1.2 双分支双分支if语句语句 格式:if(条件表达式)语句1 else 语句2

4、功能:先计算条件表达式的值,如果条件表达式的值为真(非0),执行语句1(选择体1),否则执行语句2(选择体2),if语句执行完后执行if 语句的下条语句。NS图:见图5-1之(b)。第5章 选择结构程序设计 例如:(1)如果x0,输出x大于0,否则输出x小于等于0。if(x0)printf(x大于0);else printf(x小于等于0);(2)如果a等于b,输出a等于b,否则输出a不等于b。if(a=b)printf(a等于b);else printf(“a不等于b);第5章 选择结构程序设计(3)求两个数x、y的最大值max。if(xy)max=x;else max=y;(4)判断整数i

5、 的奇偶性。if(i%2=0)printf(偶数n);else printf(奇数n);第5章 选择结构程序设计 (1)双分支if语句形式上相当于单分支if语句扩展else分支而来,else分支称为else子句,else子句不能单独存在。(2)在其它高级语言中特别强调else子句前不能有分号,C语言中else子句前必有分号。(3)选择体如为多条语句同样必须采用复合语句。(4)可采用条件运算等价实现,从而以表达式的形式参与运算。例如,上例中三个双分支if语句用条件运算描述:(x0)?printf(x大于0):printf(x小于等于0)(a=b)?printf(a等于b):printf(a不等于

6、b)(xy)?max=x:max=y 第5章 选择结构程序设计 (5)单分支if 语句可认为是双分支if 语句缺省else子句的特殊情况,一条双分支if语句可用两条单分支if语句实现。例如,前例中三条双分支if语句改用单分支if语句实现:if(x0)printf(x大于0);if(xy)max=x;if(x1)y=x+1;elsey=x-1;printf(x=%6.2f,y=%6.2fn,x,y);输入数据:1.2运行结果:x=1.20,y=2.00 程序如下:第5章 选择结构程序设计 例例 5 3 输入两个数,求两个数的最大值、最小值。数据分析:输入量:两个数x、y,float输出量:最大值

7、max、最小值min,float算法分析:输入两个数x、y 比较两个数x、y 大小如果xy,max=x,min=y如果xy)max=x;min=y;else max=y;min=x;printf(max=%6.2f,min=%6.2fn,max,min);输入数据:1.2,2.54运行结果:max=2.54,min=1.20 第5章 选择结构程序设计 5.1.3 多分支多分支if语句语句 if(条件表达式1)if (条件表达式2)语句1 else 语句2else if (条件表达式3)语句3 else 语句4 多分支if语句不是一条具体的语句,它通过if语句的嵌套实现。其一般形式为:第5章 选

8、择结构程序设计 图 5-2 条件表达式2TF语句1语句2条件表达式3TF语句3语句4条件表达式1TF第5章 选择结构程序设计 例例 5 4 计算y,011y000 xxx/*程序 5-4,求函数值*/main()float x;float y;printf(请输入x:);scanf(%f,&x);if(x=90)ch=A;else if (cj=80)ch=B;else if (cj=70)ch=C;else if (cj=60)ch=D;else ch=E;本题是一个典型的多分支问题。假定用cj表示百分制成绩,用ch表示五级记分的等级,则可用如下多分支if语句完成转换:第5章 选择结构程序设

9、计 说明:()多分支if语句中,else子句总是与最近的if 配套。(2)通过加花括号、加注释来明确 else与if的配套关系。(3)多分支if语句可用多条单分支、双分支if 语句等价实现。第5章 选择结构程序设计 例如:例 5 4 用单分支if语句处理:if (x0)y=1;例 5 5 用单分支if语句处理:if (cj=90)ch=A;if (cj=80&cj=70&cj=60&cj70)ch=D;if (cj60)ch=E;第5章 选择结构程序设计 5.2 switch语句语句 switch语句称为开关语句,用于多分支选择的一种特殊情况的处理,即每个分支、每种情况通过一个表达式取不同的值

10、(选择常量、情况常量)来描述,相当于PASCAL语言中的CASE语句。格式:switch(选择表达式)case 常量1:语句1 case 常量2:语句2 case 常量n:语句n default:语句n+1 第5章 选择结构程序设计 switch语句的功能:计算选择表达式的值,当表达式的值与某一个case后面的情况常量相等或相匹配时,就执行此case后面的情况处理语句。执行完一个case后面的语句后,流程控制转移到下一个case处继续执行。若所有case中的常量都不与选择表达式的值相匹配,就执行default后面的语句。第5章 选择结构程序设计 NS图:见图 5 3。图 5 3选择表达式常量1

11、常量2常量ndefault语句1语句2语句 n语句n+1第5章 选择结构程序设计 例例 5 6 根据输入的字符,输出相应的字符串。t-Turbo C b-Borland C m-Microsoft C v-Visual C 第5章 选择结构程序设计/*程序5 6,根据输入的字符,输出相应的字符串*/main()char ch;scanf(%c,&ch);switch(ch)case t:printf(Turbo Cn);break;case b:printf(Borland Cn);break;casem:printf(Microsoft Cn);break;case v:printf(Vis

12、ual Cn);break;default:printf(error Cn);第5章 选择结构程序设计 例例 5 7 将例 5 5 用switch语句实现。switch (int)(cj/10)/*注意选择表达式的构造*/10:9:ch=A;break;8:ch=B;break;7:ch=C;break;6:ch=D;break;default:ch=E;第5章 选择结构程序设计 说明:(1)选择表达式可以是任何表达式,一般为整型、字符型、枚举型表达式。(2)选择表达式必须用小括号括起。(3)case后可以是常量表达式,每一个case后的值必须互不相同,否则会出现二义性。(4)一种情况处理完后

13、,一般应使程序的执行流程跳出switch结构,终止switch语句的执行,这可借助break语句完成。第5章 选择结构程序设计 break语句形式为:break;一般使用的switch语句形式为:switch(选择表达式)case 常量1:语句1break;case 常量2:语句2break;case 常量n:语句nbreak;default:语句n+1 第5章 选择结构程序设计 最后一种情况处理中可以不加break语句。(5)在上述switch语句的一般使用形式下,case出现的次序不影响执行结果。(6)当多个常量代表一种情况时,出现在前面case中的情况处理无语句,这实际上也是多个case

14、共用一组执行语句。(7)可以没有default子句。(8)switch语句描述的是多分支选择的一种特殊情况,可用if语句等价实现,如例5-5和例5-7。第5章 选择结构程序设计 5.3 goto语句语句 格式格式:goto 语句标号;功能功能:将程序的执行流程无条件转移至语句标号所标识的位置语句处执行。说明说明:(1)C语言的语句标号用标识符表示,它仅仅表示goto语句转移的目标地址。(2)带有标号的语句称为标号语句,标号与语句之间用冒号分隔。标号语句仅对goto语句有意义。(3)goto语句往往与if 语句配套使用构成一种远距离的转移。第5章 选择结构程序设计(4)if语句加goto语句还可

15、构成循环。例如:输出数字09。x=0;flag:if(xy)&(xz)max=x;if (yx)&(yz)max=y;if (zx)&(zy)max=z;printf(x=%5.2f,y=%5.2f,z=%5.2f,max=%5.2fn,x,y,z,max);第5章 选择结构程序设计 程序二程序二:/*程序5 7 2,求三个数的最大值*/main()float x,y,z;float max;clrscr();printf(请输入三个数x,y,z:);scanf(%f,%f,%f,&x,&y,&z);max=x;if (ymax)max=y;if (zmax)max=z;printf(x=%5

16、.2f,y=%5.2f,z=%5.2f,max=%5.2fn,x,y,z,max);输入数据:12.34,2.18,10.68运行结果:x=12.34,y=2.18,z=10.68,max=12.34 第5章 选择结构程序设计 例例 5 9 由三边求三角形面积和周长。/*程序 5 9,求三角形的面积和周长 */main()float a,b,c;int flag;/*为1,三边能构成三角形*/float hl;float s,l;clrscr();printf(请输入三角形的三边:);scanf(%f,%f,%f,&a,&b,&c);flag=(a+bc)&(b+ca)&(c+ab);第5章

17、选择结构程序设计 if (flag)l=a+b+c;hl=0.5*l;s=sqrt(hl*(hla)*(hlb)*(hlc);printf(面积=%5.2f,周长=%5.2f n,s,l);else printf(不能构成三角形!);输入数据:3,4,5运行结果:面积=6.00,周长=12.00输入数据:1,1,5运行结果:不能构成三角形!第5章 选择结构程序设计 例例 5 10 求方程ax2+bx+c=0的实根。算法提示:(1)本例是例4-6的改进。(2)有以下一些情况:a=0、b=0、c=0时,方程退化为0 x=0。a=0、b=0、c0时,方程退化为0 x0。a=0、b0时,方程退化为bx

18、+c=0。a0时,有实根。a0时,无实根。第5章 选择结构程序设计 图 5 4 b=0TFc=0 x=-c/b输出xd=b*b-4*a*ca=0TF输入a,b,cd=0TF计算x1计算实部计算x2计算虚部输出x1、x2 输出一对虚根无数解无解TF第5章 选择结构程序设计 程序如下:/*程序 5 10,求方程a*x*x+b*x+c=0的实根*/main()float a,b,c;float d;float x;float x1,x2;clrscr();printf(请输入方程系数a、b、c:);scanf(%f,%f,%f,&a,&b,&c);if (a=0)if(b=0)if(c=0)prin

19、tf(无数解!n);else printf(无解!n);第5章 选择结构程序设计 else x=-c/b;printf(方程的根=%6.2fn,x);else d=b*b-4*a*c;if (d=0)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(第一个根=%6.2f,第二个根=%6.2f n,x1,x2);else printf(方程无实根!n);输入数据:0,2,1运行结果:方程的根=-0.50输入数据:1,2,3运行结果:方程无实根!第5章 选择结构程序设计 例5-11 输入年份,判断是否为闰年。输入月号,输出每月的天数。数据分析:输入量

20、:年份year,月号month,int。中间量:闰年标志leap,int。输出量:无,直接输出。算法提示:(1)闰年用(year%4=0&year%100!=0)(year%400=0)判断。(2)每月天数的输出通过开关语句处理。第5章 选择结构程序设计 程序如下:/*程序5-11,判断是否为闰年,输出每月的数*/main(int year,month;int leap;/*年份的处理*/printf(请输入年份:);scanf(%d,&year);leap=(year%4=0&year%100!=0)(year%400=0);if(leap)printf(%d年是闰年!n,year);els

21、e printf(%d年不是闰年!n,year);/*月号的处理*/printf(请输入月号:);scanf(%d,&month);switch(month)第5章 选择结构程序设计 case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf(%d年%d月的天数为%d天!n,year,month,31);break;case 4:case 6:case 9:case 11:printf(%d年%d月的天数为%d天!n,year,month,30);break;case 2:if(leap)printf(%d年%d月的天数为%d天!n,ye

22、ar,month,29);else printf(%d年%d月的天数为%d天n!,year,month,28);第5章 选择结构程序设计 运行结果:输入年份:19991999年不是闰年!输入月号:12 1999年12月的天数为31天!第5章 选择结构程序设计 例例5-12 两个数的+、*和/的简易计算器程序。数据分析:输入量:两个数x、y,float;运算符op,char。输出量:计算结果j,float。算法提示:(1)运算选择通过开关语句处理。(2)除法运算时要考虑被除数为0的情况。(3)复杂一点的计算器程序参见例6-21。第5章 选择结构程序设计/*程序 5 12,简易计算器程序*/mai

23、n()float x,y;char op;printf(输入两个数:);scanf(%f,%f,&x,&y);printf(输入运算符:);scanf(%c,&op);switch (op)第5章 选择结构程序设计 case +:j=x+y;printf(结果=%9.4fn,j);break;case -:j=x-y;printf(结果=%9.4fn,j);break;case *:j=x*y;printf(结果=%9.4fn,j);break;case /:if (y!=0)j=x+y;printf(结果=%9.4fn,j);else printf(除数为零n);运行结果:输入两个数:3,6

24、输入运算符:*结果=18.0000 第5章 选择结构程序设计 输入两个数x,y输入运算符opop+j=x+y输出 j-j=x-y输出 j*j=x*y输出 j/j=x/y输出 j输出被除数为0y!=0TFdefault输出运算符错图5-5 简单计算器的NS图 第5章 选择结构程序设计 例例5-13 猜数游戏。算法提示:(1)要猜的数调用随机函数rand()产生,猜的数从键盘输入。(2)猜中,输出“你猜对了!”。(3)允许猜多次的话,可用if语句加goto语句或第6章的循环语句来处理。请读者加以实现。第5章 选择结构程序设计 程序如下:程序如下:/*程序5-13,猜数游戏程序*/main()int

25、 n;int x;n=rand();*产生要猜的数*/clrscr();printf(猜数游戏程序:n);printf(输入你猜的数:);scanf(%d,&x);if(x=n)printf(你猜对了!);else printf(你要继续努力!);第5章 选择结构程序设计 例例5-14 通讯录管理主控程序。算法提示:(1)本题是例4-7的进一步讨论。(2)主控程序包括界面显示与选择处理两个部分,界面显示用输出函数处理,选择处理常用开关语句完成。(3)功能项调用相应的处理函数完成。函数没定义好可暂用空语句代替,或用printf()函数输出一些提示信息代替。(4)保持界面的显示需使用循环语句。(5

26、)调用exit()函数退出程序,返回系统。第5章 选择结构程序设计 程序如下:程序如下:/*程序5-14,通讯录管理主控程序*/main()char ch;/*选择变量*/*界面显示*/clrscr();printf(%sn,通讯录管理程序);printf(%sn,Add追加数据 Modify修改数据);printf(%sn,Delete删除数据 Print打印通讯录);printf(%sn,Quit退出程序);printf(请选择(A/M/D/P/Q):);/*选择处理*/第5章 选择结构程序设计 scanf(%c,&ch);switch (ch)case A:case a:printf(追

27、加数据);break;case M:case m:printf(修改数据);break;case D:case d:printf(删除数据);break;case P:case p:printf(打印数据);break;case Q:case q:printf(退出程序);exit(0);第5章 选择结构程序设计 习习 题题 五五 1比较单分支、双分支、多分支的if语句。2 ,下列描述哪些是正确的?(1)if(x0)y=1;else y=0;(4)y=0;if(x=0)if(x0)y=1;else y=1;第5章 选择结构程序设计 3仔细阅读以下程序,指出程序的运行结果。#incluele s

28、tdio.hmain()int a,b;a=b=5;if(a=1)if(b=5)a+=b printf(a=%dn,a);else a=b;printf(a=%dn,a);printf(a+b=%d,a+b);第5章 选择结构程序设计 4仔细阅读以下程序,指出程序的运行结果。#include stdio.hmain()int i=1,j=0,m=1,n=2;switch(i+)case 1:m+;n+;case 2:switch(+j)case 1:m+;case 2:n+;case 3:m+;n+;break;case 4:m+;n+;printf(m=%d,n=%d,m,n);第5章 选择

29、结构程序设计 5仔细阅读以下程序,指出程序的运行结果。#include stdio.h main()char ch;printf(Enter ch:);scanf(%c,&ch);switch(ch)case m:printf(Good morning!n);break;case n:printf(Good night!n);break;default:printf(I can not understand!n);break;printf(All right!n);第5章 选择结构程序设计 6编写程序,求三个数的最小值。进一步考虑求四个数、五个数及更多的数的最小值及最大值。7编写程序,解方程a

30、x+b=0。8编写程序,解方程ax2+bx+c=0。要求分别用if语句和switch语句实现。9编写程序,判断一个整数是否既是2的倍数、又是3的倍数。10编写程序,判断2000年、2008年、2100年是否为闰年。11编写程序,将五级记分成绩转换成百分制成绩,转换规则如下:A95,B85,C75,D65,E55 第5章 选择结构程序设计 12有一个不多于5位的正整数,求它的位数,同时求出它的每位数字。13输入一个字符,编写程序判断该输入字符的种类:数字、字母或其它。14输入三角形三边,编写程序判断三角形的种类:等腰三角形、等边三角形或一般三角形。15编写程序,根据输入的字符输出相应的字串:输入

31、字符 输出字串 a或A American b或B Britain c或C China d或D Denmark 其它 Other 第5章 选择结构程序设计 16编写程序,将输入的数字(06)转换成对应的星期的英文名称输出。17编写个人所得税计算程序。18某公司的利润提成方案是:1万元及1万元以下利润提成5%,2万元及2万元以下利润提成6%,4万元及4万元以下利润提成7%,5万元及5万元以下利润提成8%,5万元以上利润提成9%。总提成采用分段累计计算。张三完成利润10万元,李四完成利润8万元,王五完成利润12万元。编写程序,计算张三、王五、李四可获得的利润提成。第5章 选择结构程序设计 19编写电子词典主控程序,假定电子词典具有单词查询、增加词条、修改词条、删除词条等功能项,每个功能项暂用空语句代替或用printf()函数输出一些提示信息代替。

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《新编C语言程序设计教程》课件第5章.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


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

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


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