基本控制结构程序设计(c程序设计(第2版)吴乃陵)

上传人:tian****1990 文档编号:74603398 上传时间:2019-01-28 格式:PPT 页数:45 大小:510.81KB
返回 下载 相关 举报
基本控制结构程序设计(c程序设计(第2版)吴乃陵)_第1页
第1页 / 共45页
基本控制结构程序设计(c程序设计(第2版)吴乃陵)_第2页
第2页 / 共45页
基本控制结构程序设计(c程序设计(第2版)吴乃陵)_第3页
第3页 / 共45页
基本控制结构程序设计(c程序设计(第2版)吴乃陵)_第4页
第4页 / 共45页
基本控制结构程序设计(c程序设计(第2版)吴乃陵)_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《基本控制结构程序设计(c程序设计(第2版)吴乃陵)》由会员分享,可在线阅读,更多相关《基本控制结构程序设计(c程序设计(第2版)吴乃陵)(45页珍藏版)》请在金锄头文库上搜索。

1、第二章 基本控制结构程序设计,结构化程序设计的特点是任何程序都可由三种基本结构及其组合来描述。 本章将介绍C+分支结构和循环结构的设计方法。还将介绍一些常用算法。,第二章 基本控制结构程序设计,2.2 分支结构程序设计,2.7 枚举类型,2.6 常用算法的应用实例,2.4 转向语句,2.3 循环结构程序设计,2.8 输入输出文件简介,2.5 结构化程序设计思想(选读),2.1 算法的概念与表示方法,2.1 算法的概念与表示方法,2.1.1 算 法 的 概 念,2.1.3 算 法描述的三种基本结构,2.1.2 算 法 的 表 示,2.1.1 算 法 的 概 念,算法: 算法是解决问题的步骤。 计

2、算机算法的特征: 可执行性 确定性 有穷性 可输入输出信息 算法是程序设计学习的重点。,2.1.2算法的表示,流程图: 流程图是图形化的表示方法,比较直观,基本组成元件包括矩形框、菱形框、箭头线等。其中矩形框表示要执行的指令,在框内标注指令内容;菱形框表示要判断其中表达式的值是真还是假;箭头线则标示指令的流程方向。 伪码: 伪码是介于自然语言和程序设计语言之间的一种类自然语言的表示方法,书写形式自由,容易转换为程序。,2.1.3算法描述的三种基本结构,3 循 环 结 构,1 顺 序 结 构,2 分 支 结 构,算法的基本结构: 对算法的理论研究和实践表明,任何算法的描述都可以分解为三种基本结构

3、或它们的组合,这三种基本结构是顺序结构、分支结构和循环结构。,num115;,2.1.3算法描述的三种基本结构,(1) 顺序结构,【例21】 求两数之和。,流程图,显示结果:35,num220;,sumnum1+num2;,演示算法执行过程,输出sum;,2.1.3算法描述的三种基本结构,(2) 分支结构,【例22】 输入三个数,输出其中的最大数。,x7;,y12;,z10;,if(xy) maxx; else max y;,if (zmax) maxz;,输出max;,显示结果:12,流程图,块1,块2,真,假,演示算法执行过程,2.1.3算法描述的三种基本结构,【例23】求4个整数的和。,

4、显示结果:60,演示算法执行过程,12,3,14,26,2,16,42,1,18,60,0,count4; /整数个数 sum0; /累加和的初值 while (count0) x输入一个整数; sumsum+x; countcount-1; 输出sum;,2.2 分支结构程序设计,对程序的运行流程进行控制,主要通过执行专门用来控制流程的语句来实现。 分支语句是基本流程控制语句之一。C+提供三种分支语句。,2.2.1 if语句,2.2.2 if语句的嵌套,2.2.4 swich语句,2.2.3 条件运算符“?:”,2.2.1 if 语句,if语句基本格式: 1、if (表达式) 语句1; 2、

5、if (表达式) 语句1; else 语句2;,【例2.4】 输入一个年份,判断是否闰年。,【例2.5】 从键盘上输入三个整数,输出其中的最大数。,嵌套if语句: if 语句中,如果内嵌语句又是if语句,就构成了嵌套if语句。if 语句可实现二选一分支,而嵌套if语句则可以实现多选一的多路分支情况。 嵌套有两种形式,嵌套在else分支中: if (表达式1) 语句1; else if (表达式2) 语句2; else if else 语句n; 嵌套在if分支中: if () if () ; else;,2.2.2 if 语句的嵌套,【例2.6】用嵌套if语句完成【例2.5】的任务。,2.2.3

6、 条件运算符“?:”,三元运算符: 三元运算符条件运算符“?:”可以用来简化if语句表达。其构成的表达式格式为: 表达式1 ? 表达式2 : 表达式3 例如: int a=6,b=7, min=ab?a:b; min=ab?+a:+b; min=ab?a+:b+;,ok,/a=6 b=7 min=6,/ a=7 b=7 min=7,/a=7 b=8 min=7,2.2.4 switch语句,开关语句(switch语句) 用来实现多选一: switch (表达式) case 常量表达式: 语句序列break; case 常量表达式 2 : 语句序列 2break; case 常量表达式n :语句

7、序列nbreak; default:语句序列 ,开关语句注意要点: (1)各个case(包括default)分支出现的次序可以任意,通常将default放在最后。 (2)break语句可选,如果没有break语句,每一个case分支都只作为开关语句的执行入口,执行完该分支后,还将接着执行其后的所有分支。因此,为保证逻辑的正确实现,通常每个case 分支都与break语句联用。,2.2.4 switch语句,(3)每个常量表达式的取值必须各不相同,否则将引起歧义。 (4)允许多个常量表达式对应同一个语句序列。 例如: char score; cinscore; switch (score) ca

8、se A: coutexcellent; break; case a: coutexcellent; break; case B: coutgood; break; case b: coutgood; break; default: coutfair; ,2.2.4 switch语句,(3)每个常量表达式的取值必须各不相同,否则将引起歧义。 (4)允许多个常量表达式对应同一个语句序列。 例如: char score; cinscore; switch (score) case A: case a: coutexcellent; break; case B: case b: coutgood;

9、break; default: coutfair; ,(5)从形式上看,switch语句的可读性比嵌套if语句好,但不是所有多选一的问题都可由开关语句完成,这是因为开关语句中限定了条件表达式的取值类型。,ok,【例2.10】 设计一个计算器程序,实现加、减、乘、除运算。 输入: 12*10 输出: 12*10=120,2.2.4 switch语句,循环控制语句是基本流程控制语句之一。C+提供三种循环语句:,2.3.1 while语句,2.3.4 循环的嵌套,2.3.3 for语句,2.3.2 do-while 语句,2.3 循环结构程序设计,2.3.1 while 语句,while语句也称为当

10、循环。 语句格式为: while (表达式) 循环体语句;,图2.5 while语句的执行流程图,求表达式的值,表达式值为真?,是,否,执行循环体语句,【例2.11】 求1+2+3 +4+100的值。,2.3.1 while 语句,注意: 在有循环语句的程序中,通常循环开始前对循环条件进行初始化;而在循环体语句中要包含修改循环条件的语句,否则循环将不能终止而陷入死循环。 C+表达方式灵活,上例中的循环语句还可以写成: while (i=n) sum+=i+; 或者 while (sum+=i+, i=n) ;/循环体为空语句 修改程序后在VC+平台上运行,看是否正确,2.3.2 do-whil

11、e 语句,do-while语句称为直到循环,格式为: do 循环体语句 while( 表达式 ),否,是,表达式的 值为真?,执行循环体语句,求表达式的值,图2.6 do-while语句的执行流程图,【例2.11】 求1+2+3 +4+100的值。,2.3.2 do-while 语句,do/while语句和while语句的区别: do/while语句至少执行一次循环体后再判断循环条件是否满足; while语句先判断条件是否满足,然后才执行循环体。可能一次也不执行。 多数情况下可以互相替代。,2.3.3 for 语句,for循环语句的格式为: for ( 表达式1; 表达式2; 表达式3 ) 循

12、环体语句,ok,【例2.11】 求1+2+3 +4+100的值。,for语句、while语句、do/while语句比较:,int i=1,sum=0; /循环初始条件 while(i=100) sum+=i; i+; /修改循环条件 ,int i=1,sum=0; /循环初始条件 do sum+=i; i+;/修改循环条件 while(i=100);,int i,sum=0; for( i=1; i=100; i+ ) sum+=i; /*习惯上:表达式1:循环初始条件;表达式2:循环终止条件;表达式3:修改循环条件*/,ok,for 语句的应用,for语句的几点说明: 1、是先判断型的,同w

13、hile语句; 2、使用更为灵活: 三个表达式可以是任意表达式,因此它们就可以实现循环初始化、计算、修改循环条件等任务,而不一定非在循环体中进行;,for 语句的应用,运行结果: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181,【例2.15】 输入一个不超过9位的整数,将其反向后输出。,【例2.14】 设计程序输出Fibonacii 数列的前20项,2.3.4 循环的嵌套,【例2.16】 打印九九表。,嵌套循环: 当循环语句中的循环体中又有循环语句时,就构成了嵌套循环。 嵌套层次一般不超过3层,以保证可读性。,【例

14、2.17】打印如下图形。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *,2.4 转向语句,break语句,return语句,goto 语句,continue语句,2.4 转向语句,break语句只能用在switch语句和循环语句中,用来跳出switch语句或提前终止循环,转去执行switch语句或循环语句之后的语句。 在for循环中可以用break结束循环: for(; ;) if() break; ,Break语句:,【

15、例2.18】 给定正整数m,判定其是否为素数。,2.4 转向语句,continue语句只能用在循环语句中,用来终止本次循环。当程序执行到continue语句时,将跳过其后尚未执行的循环体语句,开始下一次循环。下一次循环是否执行仍然取决于循环条件的判断。 continue语句与break语句的区别在于,continue语句结束的只是本次循环,而break结束的是整个循环。,continue语句:,例:输出1100内3的倍数。 分析:设置整型变量I从1变化到100,依次测试I是否3的倍数,算法属于穷举法。 for (I=1;I=100;I+) if ( I%3!=0) continue; /I不是3的倍数,不输出,继续下一个I; 输出I的值;/I是3的倍数才输出 ,2.4 转向语句,goto语句和标号语句一起使用,所谓标号语句是用标识符标识的语句,它控制程序从goto语句所在的地方转移到标号语句处。goto语句会导致程序结构混乱,可读性降低,而且它所完成的功能完全可以用算法的三种基本结构实现,因此一般不提倡使用goto语句。但在某些特定场合下goto语句可能会显出价值,比如在多层循环嵌套中,要从深层地方跳出所

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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