《程序的三种基本结构ppt课件.ppt》由会员分享,可在线阅读,更多相关《程序的三种基本结构ppt课件.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统结构化程序设计基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)结构化程序:由三种基本结构反复嵌套构成的程序叫优点:结构清晰,易读,提高程序设计质量和效率三种基本结构顺序结构ABAB流程图N-S图程序的三种基本结构篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统PAB真假PBA真假kA1A2AiAnk=k2k=k1k=knk=ki.l二分支选择结构二分支选择结构l多分支选择结构多分支选择结构选择结构选
2、择结构篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统l当型循环结构l直到型循环结构PA假真当P为真AAP真假A直到P为真注:A,B,A1.An可以是一个简单语句,也可以是一个基本结构循环结构篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统返回第5章 选择语句5.1 if 条件语句5.2 switch多分支选择语句5.3 程序举例篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统 5.1 if条件语句条件语句ifif语
3、句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。执行给出的两种操作之一。5.1.1 5.1.1 if语句的三种形式语句的三种形式1 1单分支选择语句单分支选择语句的形式的形式:ifif(表达式)(表达式)语句语句 这种这种ifif语句的执行过程见图语句的执行过程见图:0(N)表达式表达式语句语句1(Y)main()float x,y;scanf(“%f”,&x);if(x=0)y=2*x;if(x 0)y=3-x;printf(“y=%6.2f”,y);篮球比赛是根据运动队在规定的比赛时间里得
4、分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统任给任给a,b,c三个数,按从小到大的顺序输出。三个数,按从小到大的顺序输出。分析:分析:(1)对于)对于a,b任意两个数:任意两个数:若若ab,则输出,则输出 a,b;否则输出否则输出 b,a;(2)对于三个数,有对于三个数,有6种可能:种可能:abc acb bac bca cab cbb,则交换,则交换a和和b,交换后,交换后ac,则交换,则交换a和和c,交换后,交换后ac,则交换,则交换b和和c,交换后,交换后bb)if(ab)temp=a;a=b;b=a;a=b;b=temp;if(ac)if(ac)temp=a;a
5、=c;c=a;a=c;c=temp;if(bc)if(bc)temp=b;b=c;c=b;b=c;c=temp;printf(%d,%d,%d,a,b,c);printf(%d,%d,%d,a,b,c);运行情况如下:运行情况如下:3 3,7 7,1 1 1,3,7篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2 2双分支选择语句双分支选择语句的形式:的形式:ifif(表达式)(表达式)语句语句1 else 1 else 语句语句2 2 见图见图:表达式表达式语句语句1语句语句2真假main()float x,y;scanf(“%f
6、”,&x);if(x b 则输出a;否则,输出b。#include main()float a,b;scanf(“%f,%f”,&a,&b);if (ab)printf(“%f”,a);else printf(“%f”,b);篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统3 3多分支选择语句多分支选择语句的形式:的形式:if if (表达式(表达式1 1)语句语句1 1 else if else if(表达式(表达式2 2)语句语句2 2 else if else if(表达式(表达式3 3)语句语句3 3 else if else
7、 if (表达式(表达式m m)语句语句m m else else 语句语句n n 流程图流程图表达式表达式1FT表达式表达式3FT表达式表达式2FT表达式表达式4FT语句语句4语句语句5语句语句3语句语句2语句语句1篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统 写一个程序完成下列功能写一个程序完成下列功能:1.输入一个分数输入一个分数score 2.score60 输出输出 E 3.60=score 70 输出输出 D 4.70=score 80 输出输出 C 5.80=score 90 输出输出 B 6.90=score 输出
8、输出 A多分支问题篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统#includemain()int score;scanf(“%d”,&score);if(score60)printf(“E”);else if(score 70)printf(“D”);else if(score 80)printf(“C”);else if(score 90)printf(“B”);else printf(“A”);程序程序篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统如:if(a=b&
9、x=y)printf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a);uif后面的表达式类型任意u语句可以是复合语句u if(x)if(x!=0)if(!x)if(x=0)例 考虑下面程序的输出结果:#include main()int x,y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;else x+;y+;printf(“%d,%dn”,x,y);Compile Error!说明:篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统5.1.2 l一般形式:if
10、(expr1)if(expr2)statement1 else statement2else if(expr3)statement3 else statement4内嵌if内嵌ifif(expr1)if(expr2)statement1 else statement2内嵌ifif(expr1)if(expr2)statement1else statement3 内嵌ifif(expr1)statement1else if(expr3)statement3 else statement4内嵌ifif语句嵌套篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是
11、一种得分类型的系统/*ch4_4.c*/#include main()int x,y;printf(Enter integer x,y:);scanf(%d,%d,&x,&y);if(x!=y)if(xy)printf(XYn);else printf(XYn);else printf(X=Yn);运行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y例 输入两数并判断其大小关系篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统缺省 时,else总是和它上面离它最近的未配对的i
12、f配对if()if()if()else.else.else.if else 配对原则:篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);实现if else 正确配对方法:加 实现if else 正确配对方法篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统 5.2 swit
13、ch语句语句 switchswitch语句是语句是多分支选择语句多分支选择语句。ifif语句只有两个分支可供选择,语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。例如,学生成绩分类(而实际问题中常常需要用到多分支的选择。例如,学生成绩分类(9090分分以为以为A A等,等,80808989分为分为B B等,等,70707979分为分为c c 等,等,);人);人口统计分类(按年龄分为老、中、青、少、儿童);工资统计分类;银口统计分类(按年龄分为老、中、青、少、儿童);工资统计分类;银行存款分类;行存款分类;等。等。当然这些都可以用嵌套的当然这些都可以用嵌套的ifif语句或语句或
14、多分支多分支来处理,来处理,但如果分支较多,则嵌套的但如果分支较多,则嵌套的ifif语句层数多,程序冗长而且可读性降低。语句层数多,程序冗长而且可读性降低。C C语言提供语言提供switchswitch语句直接处理多分支选择,它的一般形式如下:语句直接处理多分支选择,它的一般形式如下:switch switch (表达式)(表达式)case case 常量表达式常量表达式1 1:语句:语句1 1 case case 常量表达式常量表达式2 2:语句:语句2 2 case case 常量表达式常量表达式i i:语句:语句n n default default :语句:语句n+1n+1 篮球比赛是
15、根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统 首先计算表达式的值,然后依次与常量表达式首先计算表达式的值,然后依次与常量表达式 i(i=1,2,n)比较。)比较。若表达式的值与某一个常量表达式,若表达式的值与某一个常量表达式,如如 j(1 j n)相等,则执行语句)相等,则执行语句 j。若表达式的值与所有的常量表达式若表达式的值与所有的常量表达式 i(i=1,2,n)均不)均不相等,则执行相等,则执行defau1tdefau1t后面的语句后面的语句 n+1。功能功能篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的
16、计时计分系统是一种得分类型的系统v语句中的表达式可以是整型或字符型、枚举型。常量表达语句中的表达式可以是整型或字符型、枚举型。常量表达式式 i 必须与表达式类型一致(整型与字符型通用)。必须与表达式类型一致(整型与字符型通用)。i 仅仅起语句标号作用,不做求值判断。起语句标号作用,不做求值判断。v语句结构中各个语句结构中各个case后常量表达式的值必须互不相同;否后常量表达式的值必须互不相同;否则执行时将出现矛盾。则执行时将出现矛盾。v各个各个casecase的出现次序不影响执行结果。例如,可以先出现的出现次序不影响执行结果。例如,可以先出现casecaseD D:,然后是,然后是caseca
17、seA A:vdefault一般出现在所有一般出现在所有case之后,也可以出现在之后,也可以出现在case之之前或两个前或两个case之间之间,default也可以缺省。也可以缺省。v为了在执行完一个为了在执行完一个case分支后能跳出分支后能跳出switch多分支选择语多分支选择语句,可在句,可在case分支结束后,插入一个分支结束后,插入一个break语句。若有语句。若有break语句,就从此语句,就从此break语句跳出语句跳出break所在的当前结构;所在的当前结构;若无若无break语句,执行该语句后,流程控制转移到下一个语句,执行该语句后,流程控制转移到下一个分支分支:继续执行这
18、一个分支的语句,一直到最后一个语句继续执行这一个分支的语句,一直到最后一个语句执行完。执行完。下一页下一页注意注意篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统switch (i)case 1:printf(An);case 3:printf(Cn);case 4:printf(Dn);default:printf(En);假设假设i=3时,则会从时,则会从i=3时做起始语句。时做起始语句。运行结运行结果见右图。果见右图。如果给每条如果给每条语句加上语句加上break这样就这样就只执行一条语句。只执行一条语句。CDE下一页下一页看下
19、面的例子看下面的例子运行结果运行结果case 2:printf(Bn);篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统v如果多种情况需要共用一个执行语句如果多种情况需要共用一个执行语句,可可用用casecase的常量表达式多种情况列出的常量表达式多种情况列出,最后最后一种情况后一种情况后,才放执行的语句。才放执行的语句。vcase后面的语句可以是一条语句,也可后面的语句可以是一条语句,也可以是复合语句,还可以是花括弧括起来以是复合语句,还可以是花括弧括起来的几条语句,还可以是空语句。有多条的几条语句,还可以是空语句。有多条语句时会顺
20、序执行完所有语句。语句时会顺序执行完所有语句。下一页下一页说明说明篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统编程:根据输入的学生的成绩判断等级。编程:根据输入的学生的成绩判断等级。当成绩当成绩score 90时为时为 A等等;成绩成绩70score 90 为为B等等;成绩成绩60score 70 为为C等等;成绩成绩score 60 为为D等;等;(score 为整数为整数)。分析分析:设设score为整型数,在为整型数,在score90 的范围内,的范围内,score可能取可能取100,99,.,90,利用两个整数相除,结果自
21、动取,利用两个整数相除,结果自动取整的特性整的特性 score score/10 90 10,9 7089 7,8 6069 6 60以下以下 defaultscore和和 score/10 有如下对应关系:有如下对应关系:下一页下一页例例如如因此因此,可以用可以用score/10的值的值来确定分支来确定分支篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统#include main()/*用用switch 语句评级语句评级 */int score;scanf(%d,&score);switch(score/10)case 10:case 9:printf(%d:An,score);break;case 8:case 7:printf(%d:Bn,score);break;case 6:printf(%d:Cn,score);break;default:printf(%d:Dn,score);程序程序返回
限制150内