【教学课件】第四章语句与程序控制结构.ppt
《【教学课件】第四章语句与程序控制结构.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第四章语句与程序控制结构.ppt(104页珍藏版)》请在三一办公上搜索。
1、1,第四章 语句与程序控制结构,4.1 语句总述 4.2 顺序结构4.3 选择结构 4.4 循环结构 4.5 程序举例,2,4.2 顺序结构程序举例 3,4,6例1:输入三角形的三边长,求三角形的面积。公式:#include”math.h”main()float a,b,c,area,s;printf(”Enter a,b,c:”);scanf(”%f,%f,%f”,3,例2:将一个三位整数的各位数符分离出来,并转 换为数字字符倒序输出。main()int num;char c1,c2,c3;printf(”Enter a data(100999):”);scanf(”%d”,4,例3:定期存
2、款一年期利率2.3%,三年期年利率3.2%,今有本金1万元,按一年期连续存三年和按三年期存入,各得多少利息?(按一年期再存时本息一并存)设:d为本金,p为利率一年期利息公式:第一年本息:d+dp=d(1+p)第一年本息:d(1+p)+d(1+p)p=d(1+p)2 三年利息:d(1+p)3d三年期利息公式:dp3,5,源程序:#include math.h#define P1 2.3/100#define P3 3.2/100main()float x1,x3,d;scanf(%f,6,4.3.1 if 语句(分支控制语句)1.if 语句的 三种形式单路分支:条件成立执行操作,不成立什么也不做
3、;双路分支:条件成立执行A操作,不成立执行B操作;嵌套分支:条件成立执行A操作,不成立时还需要进 一步进行分支判断。,4.3 选择结构,7,第一种形式单路分支 if(表达式)语句 内嵌语句;可是一条语句、复 合语句、空语句。描述了条件 成立时要执行的操作。可是任何形式的表达式;通常是关系或 逻辑表达式。描述了分支控制条件。,8,执行流程:首先求解表达式,并对其值进行逻辑判断;非零视为真,执行内嵌语句,之后执行后续语句。若分支条件不成立,则直接执行后续语句。对应算法:,P,T F内嵌 语句,9,例:输入一个整数,为正则输出 main()int x;scanf(”%d”,10,第二种形式双路分支
4、if(表达式)语句1 else 语句2 其中:内嵌语句1是条件成立时所执行的操作;内嵌语句2是条件不成立时所执行的操作;执行流程:首先求解表达式,并对其值进行逻辑判断;为真,执行内嵌语句1,之后执行后续语句。若分支条件不成立,则执行内嵌语句2,之后执行后续语句。,11,对应算法:,P,T F内嵌 内嵌 语句1 语句2,可分行书写:if(表达式)语句1 else 语句2,12,例:根据x求y值 y=main()float x,y;scanf(”%f”,x x0 x2+1 x0,13,条件成立与不成立的输出格式、输出项完全一样,因而上例可化简如下:main()float x,y;scanf(”%f
5、”,14,例:求任意三角形面积,若三边值不能构成三角形时输出表示错误的信息。#include math.h”main()float a,b,c,s,area;printf(”Enter a,b,c:”);scanf(”%f,%f,%f”,15,第三种形式阶梯if(不成立时嵌套分支)if(e1)s1 else if(e2)s2 else if(e3)s3 else if(em)sm else sn其中:ei各层的分支条件;si各层的内嵌语句;执行流程:首先计算并判断e1的值,为真执行s1,之后退出分支。e1为假则计算并判断e2的值,为真执行s2,之后退出分支。依次类推。,e1,e2,T F T
6、F T F s1 s2 s3 s4,e3,16,例:对学生成绩分档;main()int g;printf(”Enter score:”);scanf(”%d”,80100分 A档 7079分 B档 6069分 C档 059分 D档,17,注意:分支条件的正确性 main()int g;printf(”Enter score:”);scanf(”%d”,57 65 89 D C C,18,上例:用单路分支实现main()int g;printf(”Enter score:”);scanf(”%d”,多个并列if语句,执行效率不如阶梯 if。,80100分 A档 7079分 B档 6069分 C档
7、 059分 D档,19,2.if 的嵌套 在一个分支结构中,又完整地包含一个或多个分支结构,则构成了分支结构的嵌套。例:分支条件不成立时需要进一步分支算法表示:算法实现:if(e1)s1 else if(e2)s2 else s3,e1,e2,T F T Fs1 s2 s3,20,例:分支条件成立与不成立,均要进一步分支算法表示:算法实现:,e1 e2 e3,T FT F T Fs1 s2 s3 s4,if(e1)if(e2)s1 else s2else if(e3)s3 else s4,21,例:分支条件不成立时需要若干层进一步的分支算法表示:算法实现:,e1,e2,e3,T F T F T
8、 F s1 s2 s3 s4,if(e1)s1else if(e2)s2 else if(e3)s3 else s4,可见:阶梯if是条件不成立时的嵌套结构,22,例:编程,判定某年是否闰年闰年条件:整百的年份能被400整除;或非整百的年份能被4整除。算法表示:,输入yearyear%100=0,year%400=0,year%4=0,T F T Fleap=1 leap=0 leap=1 leap=0,leap=1,T F,T F,输出“is”输出“not”,23,程序清单:main()int year,leap;scanf(”%d”,24,例:根据 x求y值。,3x-11(0 x 10)y
9、=2x+5(10 x 20)x(20 x 30),x0&x30T F,x10 T F,x20 T F,y=x,y=3x-11,y=2x+5,输出x无效,输出 y,输入x,输出X无效,3x-11y,x0&x30,x10,x20,2x+5y,xy,输出y,F,F,F,T,T,T,25,程序清单:main()float x,y;printf(”Enter x:”);scanf(”%f”,26,方法2:,3x-11(0 x 10)y=2x+5(10 x 20)x(20 x 30),x=30T F,输出 x无效,x10 T F,y=3x-11,y=2x+5,y=x,x20 T F,输出 y,输入 x,s
10、canf(%f,27,if语句嵌套的注意事项:1)采用缩进格式,可清晰地表示出嵌套层次关系;2)C编译系统确定if和else的配对原则是:从最内层else开始识别,将内层else与上面最近的未曾配对的if配对;例:算法实现:if(e1)if(e1)if(e2)s1 if(e2)s1 else s2 else s2,e1 e2,T F T F s1 s2,28,if语句 示例,【例一】以下程序的作用是什么?main()char c;printf(“Input:”);scanf(“%c”,/*将小写字母转换为大写字母*/,29,if语句 示例,【例二】以下程序的执行结果是什么?main()int
11、x=2,y=-1,z=2;if(xy)if(y0)z=0;else z+=1;printf(“%dn”,z);,/*结果是2*/,哦,原来是因为else 总是与靠近它的if配套,常见错误:if(x0);if(x=2)if(10”);y=x-1;,30,4.3.2 switch多分支选择 语句(多路开关语句)1.switch的一般形式 switch(表达式)case 常量1:s1 case 常量2:s2 case 常量n:sn default:sn+1 其中:表达式可是任何形式,但其值应为整型;内嵌语句si可是一条语句、复合或空语句;常量i可是整、字符、符号常量、常量表达式。,31,2.swit
12、ch的执行流程 首先求解表达式,然后测试其值与哪个case后的常量相等,相等则从该case后的语句开始执行,直到其后的所有内嵌语句执行完毕,退出多分支结构。若表达式的值不与任何常量相等,则执行default后的语句,执行完毕退出分支。,32,switch执行流程图:switch(表达式)case c1:s1 case c2:s2 case cn:sn default:sn+1,求解表达式,c1?,c2?,cn?,sn+1,s1,sn,s2,Y,Y,Y,N,N,N,33,求解表达式,c1?,c2?,cn?,sn+1,s1,sn,s2,3.使用说明1)在switch中可以使用break语句跳出sw
13、itch结构;,break,break,break,34,例:对成绩分档 main()char c1;int g;scanf(”%d”,80100分 A档7079分 B档 6069分 C档 059分 D档,break;break;break;break;break;,35,2)case后的各常量不能相同,否则编译无法通过;3)default为可选项,它提供了表达式的值与任何量 都不相同时的执行方案;若表达式的值与任何常量都不相同时什么也不需要做,则省略关键字 default;4)多个case可共用一组执行语句;例:switch(g/10)case 10:case 9:case 8:c1=A;b
14、reak;case 7:c1=B;break;,36,例:设计一个简单的菜单选择程序,根据选择可实 现a与b的四则运算。#include“stdio.h”main()int a,b;char c1;clrscr();printf(”1.Addn”);printf(”2.Subtractn”);printf(”3.Multiplyn”);printf(”4.Dividen”);printf(”Enter your choice:”);c1=getchar();,37,c1=getchar();if(c1=1/*main*/,YS,38,switch语句 示例,main()char s;scanf
15、(“%c”,输入“c”,求输出结果。,结果:6069 60 错误输入,?!,39,switch语句 示例,解决方法break语句:main()char s;scanf(“%c”,这才差不多!,break!,运行结果:6069,40,switch语句 示例,解决方法break语句:main()char s;scanf(“%c”,讨论switch(s)语句中的s实际上并非真正的条件选择,而只是一种跳转指示(与if语句不同),表示下面应该跳转到什么位置继续执行。而各case实际上只是一个跳转处的标记。当程序跳转到某个case处时,并非只执行此case行的程序组,而是从此处开始一直向下执行各条语句,直
16、到整个switch开关体结束(“”)。如果要使每个case处相当于一种if(s)else的效果,必须在其语句组最后加上break语句。,41,switch语句 示例,main()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(“a=%d,b=%dn”,a,b);,说明1、每个case常量表达式的值必须互不相同,否则会出现互相矛盾的结果。2、允许多个case共用一个执行语句。,求程序运行结果。,结果:a=2,b=1
17、。,如果x=2?,结果:a=1,b=1,如果x=3?,结果:a=1,b=1,42,4.3.3 程序举例例:从键盘输入四个整数,输出其中的最大数。main()int a,b,c,d,max;printf(”Enter a,b,c,d:”);scanf(”%d,%d,%d,%d”,43,例:找出三个整数中的最大、最小数。main()int a,b,c,max,min;printf(”Enter a,b,c:”);scanf(”%d,%d,%d”,44,例:输入三个整数,由大到小输出。main()int a,b,c;scanf(“%d,%d,%d”,输入abc,ab?,ab,bc?,ac?,ac,b
18、c,N,N,N,Y,Y,Y,45,例:输入一个不多于5位的正整数要求:1.输出它是几位;2.输出该数;3.逆序、空格分隔输出各位数字;如输入:123,输出:3 2 1,输入a 求a的位数 分离a的各位数字 输出a、位数、逆序数字,46,main()long a;int w,p5,p4,p3,p2,p1;/*p5高位*/printf(”Enter a(1-99999):”);scanf(”%ld”,47,p2=(a-p5*10000L-p4*1000-p3*100)/10;p1=a-p5*10000L-p4*1000-p3*100-p2*10;printf(“t%ld,%dntt”,a,w);s
19、witch(w)case 5:printf(”%dbbb”,p5);/*无须break*/case 4:printf(”%dbbb”,p4);case 3:printf(”%dbbb”,p3);case 2:printf(”%dbbb”,p2);case 1:printf(”%dbbb”,p1);printf(“n”);,YS,48,另一种输出方法:switch(w)case 5:printf(”%d%d%d%d%d”,p1,p2,p3,p4,p5);break;case 4:printf(”%d%d%d%d”,p1,p2,p3,p4);break;case 3:printf(”%d%d%d”
20、,p1,p2,p3);break;case 2:printf(”%d%d”,p1,p2);break;case 1:printf(”%d”,p1);,49,例:输入四个整数,升序排序并输出。,输入a、b、c、dT ab F ab T cd F cd T ac F ac,T bc F bc T bd F bd T cd F cd 输出a、b、c、d,ba,dc,cb,dbB次小,dc,50,while语句一般形式:while(表达式)语句其中:表达式表示了循环条件;形式:任何表达式。内嵌语句为循环体;形式:单条、复合、空语句。执行流程:首先求解表达式并对其值进行逻辑判断,为真执行内嵌语句;之后再
21、次求解表达式并判断,为真再次执行内嵌语句;当表达式值为假时,退出while循环,执行后续语句。,51,循环类型:当型,先判断后执行,循环体有可能一 次也不被执行。例:求 main()int i=1,sum=0;while(i=100)sum+=i;i+;printf(”%d”,sum);,52,使用说明:1)在while的循环体中一定要有使循环趋于结束的 语句;否则将形成死循环;2)注意循环操作的范围、花括号、分号的使用;3)注意与循环有关的变量赋初值的位置及初值的 正确性;如:i=0;sum=1;是错误的。,53,例:输入一个班某门课的成绩,统计80分的人数,并计算出平均成绩,保留小数两位。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第四 语句 程序控制 结构
链接地址:https://www.31ppt.com/p-5665294.html