程序控制结构ppt课件

上传人:资****亨 文档编号:145853063 上传时间:2020-09-23 格式:PPT 页数:84 大小:877KB
返回 下载 相关 举报
程序控制结构ppt课件_第1页
第1页 / 共84页
程序控制结构ppt课件_第2页
第2页 / 共84页
程序控制结构ppt课件_第3页
第3页 / 共84页
程序控制结构ppt课件_第4页
第4页 / 共84页
程序控制结构ppt课件_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《程序控制结构ppt课件》由会员分享,可在线阅读,更多相关《程序控制结构ppt课件(84页珍藏版)》请在金锄头文库上搜索。

1、.,第4章 程序控制结构,4.3 选择控制,4.4 循环控制,小结,.,语句是程序的基本语法成分,C语言语句以分号结束。程序设计语言的语句按功能可以分成: 1 表达式语句 描述对数据的处理 int x =5; int y; y=x-5 2 说明(申明)语句 变量、常量、函数的定义或申明 int NumOfStudent,4.1 C语言语句概述,4.1 C语言语句概述,3 复合语句(语句块): 括住的若干条语句构成一个语句块称为复合语句。在语法上复合语句也是单语句。 语句块内可以定义变量 变量仅在定义它的语句块内(包括下层语句块)有效(scope.c) 同一个语句块内的变量不可同名,不同语句块可

2、以同名(homonym.c) 各司其职、下层优先 尽量不要在下层语句块内定义变量,也尽量不要定义同名变量 复合语句可以用在任何可以使用语句的地方,4 控制语句 用于控制程序的执行流程。包括三种控制结构和转向语句 所有程序都只能包含三种控制结构: 顺序结构、选择结构和循环结构 转向语句 goto,break,continue,return 后面详细说明,4.1 C语言语句概述,已经证明,任何程序均可只用三种结构实现 Bhm, Corrado, and Jacopini Guiseppe. Flow diagrams, Turing machines and languages with only

3、 two formation rules. Communication of ACM, 9(5):366-371, May 1966. 只用这三种结构的程序,叫结构化程序 程序“必须”符合结构化规则,4.2 C语言的基本结构,4.2 C语言的基本结构,顺序结构,选择结构,循环结构,语句块,.,对给定的条件进行判断,并根据判断的结果选择不同的操作,4.3 选择语句,条件运算表达式 根据判断条件,决定表达式的值 不改变程序语句执行流程,1if 语句的形式和执行流程,if( 表达式 )语句 块;,4.3.1 if 语句,语句形式(1),语句形式(2),if( 表达式 ) 语句块1 ; else 语句

4、块2 ;,1if 语句的形式和执行流程,4.3.1 if 语句,4.3.1 if 语句,2if 语句的嵌套,if 语句中的执行语句如果又是另一个if语句,称为嵌套if语句 if 与 else 的配对关系:C+规定,else 总是与它接近的if 配对,if (表达式1) 语句块1;else if (表达式2)语句块2;else if (表达式3)语句块3;else语句块4;语句块5; else部分可以没有,2if 语句的嵌套,应用举例,(1) 把输入字符转换为小写字母。对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不转换。,/ 例 #include void main() char

5、 ch; cout ch ; if ( ch = A ,输入的是大写字母,计算ASCII码偏移值,应用举例,把输入字符转换为小写字母。对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不转换。,/ 例 #include void main() char ch; cout ch ; if ( ch = A ,改写为条件表达式 ch = ( ch = A ,(1) 当条件表达式中包含 int b=10; int c=0 if (a2 | b/c10) .,由于a3这个表示式计算结果为0,所以后面的表达式不再计算,即使出现了除0错误; 如果没有短路求值,则发生”除0错误”,由于a2这个表示

6、式计算结果为1,所以后面的表达式不再计算,if 语句的的注意事项,if 语句的的注意事项,(2) 不可将浮点变量用“=”或“!=”与任何数字比较。 无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“=”或“!=”与数字比较,应该设法转化成“=”或“=”形式。,if (x=-EPSINON) break; case 常量2:语句块2; break; case 常量n:语句块n; break; default:语句块n + 1; break; ,语句标记,4.3.2 switch语句,swith语句执行流程,4.3.2 switch语句,switch使用注意事项

7、: (1) case后可以是常量表达式或者整数值;常量表达式样值只能是整型、字符型、枚举型,不能是其他类型 (2) 每一个case表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。,4.3.2 switch语句,(3) 各个case和default的出现次序不影响执行结果。例如,可以先出现“default:”,再出现“case D:”,然后是“case A:”。 (4) 执行完一个case子句后,流程控制转移到下一个case子句继续执行。“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断.直到遇到break或者switch结束为止。

8、,4.3.2 switch语句,#include using namespace std; int main(void) int day; cin day; switch (day) case 0:cout Sunday endl; break; case 1:cout Monday endl; break; case 2:cout Tuesday endl; break; case 3: cout Wednesday endl; break; case 4:cout Thursday endl; break; case 5:cout Friday endl; break; case 6:co

9、ut Saturday endl; break; default: cout Day out of range Sunday . Saturday endl; break; ,例:4-3,4.3.2 switch语句,switch ( int (E1) ) case 1 : S1 ; break ; case 0 : S2 ; ,if 与 switch 语句互换,if ( E1) S1 ; else S2 ;,2.1.2 switch 语句,4.3.2 switch语句,if 与 switch 语句互换,switch ( int (a b) ) case 1 : max = a ; break

10、 ; case 0 : max = b ; ,if ( a b) max = a ; else max = b ;,2.1.2 switch 语句,4.3.2 switch语句,if 语句switch 语句 形成分支控制流程 不形成程序控制流程 用于复杂条件判断 表达式的值为数值集合时作多分支控制, 可读性较好,与 if 语句比较:,2.1.2 switch 语句,为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。,循环概念,4.4 循环控制,为了锻炼身体,我要每天晚上在操场在跑10圈,两种典型循环结构,4.4 循环控制,4.4.1 while语句,语句形式,w

11、hile( 表达式 e)循环体 s;,逻辑表达式 不管表达式形式如何,结果都作为逻辑值,重复执行的操作 直至表达式的值为false ( 0 ),执行流程,# include void main () int i = 1 , sum = 0 ; while ( i = 100 ) sum = sum + i ; i + ; cout sum = sum endl ; ,一个简单的循环跟踪: 求,4.4.1 while语句,求两个正整数 m 和 n 的最大公约数,例如: m = 24,n = 9 24 和 9 的最大公约数等于 ( 24 % 9 ) = 6 和 9 的最大公约数; 9 和 6 的最

12、大公约数等于 ( 9 % 6 ) = 3 和 6 的最大公约数; 6 和 3 的最大公约数等于 ( 6 % 3 ) = 0 和 3 的最大公约数; 所以, 24 和 9 的最大公约数等于 3。,辗转相除法: 当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数; 当 n = 0,m 和 n 的最大公约数等于 m 。,a = m , b = n , r = b ; while ( r != 0 ) 把 a%b 的值赋给 r ; 用 b 的值替换 a 的值 ; 用 r 的值替换 b 的值 ; a 是最大公约数,辗转相除法: 当 m n,m 与 n 的最大公约数等于 n 和 m%n

13、 的最大公约数; 当 n = 0,m 和 n 的最大公约数等于 m 。,24 % 9,求两个正整数 m 和 n 的最大公约数,a = m , b = n , r = b ; while ( r != 0 ) 把 a%b 的值赋给 r ; 用 b 的值替换 a 的值 ; 用 r 的值替换 b 的值 ; a 是最大公约数,辗转相除法: 当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数; 当 n = 0,m 和 n 的最大公约数等于 m 。,求两个正整数 m 和 n 的最大公约数,a = m , b = n , r = b ; while ( r != 0 ) 把 a%b 的值

14、赋给 r ; 用 b 的值替换 a 的值 ; 用 r 的值替换 b 的值 ; a 是最大公约数,辗转相除法: 当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数; 当 n = 0,m 和 n 的最大公约数等于 m 。,求两个正整数 m 和 n 的最大公约数,9 % 6,a = m , b = n , r = b ; while ( r != 0 ) 把 a%b 的值赋给 r ; 用 b 的值替换 a 的值 ; 用 r 的值替换 b 的值 ; a 是最大公约数,辗转相除法: 当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数; 当 n = 0,m 和 n

15、的最大公约数等于 m 。,求两个正整数 m 和 n 的最大公约数,a = m , b = n , r = b ; while ( r != 0 ) 把 a%b 的值赋给 r ; 用 b 的值替换 a 的值 ; 用 r 的值替换 b 的值 ; a 是最大公约数,辗转相除法: 当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数; 当 n = 0,m 和 n 的最大公约数等于 m 。,求两个正整数 m 和 n 的最大公约数,a = m , b = n , r = b ; while ( r != 0 ) 把 a%b 的值赋给 r ; 用 b 的值替换 a 的值 ; 用 r 的值替

16、换 b 的值 ; a 是最大公约数,辗转相除法: 当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数; 当 n = 0,m 和 n 的最大公约数等于 m 。,求两个正整数 m 和 n 的最大公约数,6 % 3,a = m , b = n , r = b ; while ( r != 0 ) 把 a%b 的值赋给 r ; 用 b 的值替换 a 的值 ; 用 r 的值替换 b 的值 ; a 是最大公约数,辗转相除法: 当 m n,m 与 n 的最大公约数等于 n 和 m%n 的最大公约数; 当 n = 0,m 和 n 的最大公约数等于 m 。,求两个正整数 m 和 n 的最大公约数,a = m , b = n , r = b ; while ( r != 0 ) 把 a%b 的值赋给 r ; 用 b 的值替换 a 的值 ; 用 r 的值替换 b 的值 ; a 是最

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号