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

上传人:沈*** 文档编号:241780244 上传时间:2024-07-23 格式:PPT 页数:46 大小:331KB
返回 下载 相关 举报
基本控制结构程序设计(C程序设计(第2版)吴乃陵)课件_第1页
第1页 / 共46页
基本控制结构程序设计(C程序设计(第2版)吴乃陵)课件_第2页
第2页 / 共46页
基本控制结构程序设计(C程序设计(第2版)吴乃陵)课件_第3页
第3页 / 共46页
点击查看更多>>
资源描述
ok第二章 基本控制结构程序设计结构化程序设计的特点是任何程序都可由三种基本结构及其组合来描述。本章将介绍C+分支结构和循环结构的设计方法。还将介绍一些。1ok概况1您的内容打在这里,或者通过复制您的文本后。概况2您的内容打在这里,或者通过复制您的文本后。概况3您的内容打在这里,或者通过复制您的文本后。+整体概况2ok第二章 基本控制结构程序设计 2.2 2.2 2.2 2.2 分支结构程序设计分支结构程序设计 2.7 2.7 2.7 2.7 枚举类型枚举类型 2.6 2.6 2.6 2.6 常用算法的应用实例常用算法的应用实例 2.4 2.4 2.4 2.4 转向语句转向语句 2.3 2.3 2.3 2.3 循环结构循环结构程序设计程序设计 2.8 2.8 2.8 2.8 输入输出文件简介输入输出文件简介 2.5 2.5 2.5 2.5 结构化程序设计思想(选读)结构化程序设计思想(选读)2.1 2.1 2.1 2.1 算法的概念与表示方法算法的概念与表示方法 3ok2.1 2.1 算法的概念与表示方法2.1.1 算 法 的 概 念 2.1.3 算 法描述的三种基本结构2.1.2 算 法 的 表 示4ok2.1.1 算 法 的 概 念 算法:算法是解决问题的步骤。计算机算法的特征:(1)(1)可执行性(2)(2)确定性(3)(3)有穷性(4)(4)可输入输出信息(5)(5)算法是程序设计学习的重点。5ok2.1.2算法的表示流程图:流程图是图形化的表示方法,比较直观,基本组成元件包括矩形框、菱形框、箭头线等。其中矩形框表示要执行的指令,在框内标注指令内容;菱形框表示要判断其中表达式的值是真还是假;箭头线则标示指令的流程方向。伪码:伪码是介于自然语言和程序设计语言之间的一种类自然语言的表示方法,书写形式自由,容易转换为程序。6ok2.1.3算法描述的三种基本结构3 循 环 结 构1 顺 序 结 构2 分 支 结 构算法的基本结构:对算法的理论研究和实践表明,任何算法的描述都可以分解为三种基本结构或它们的组合,这三种基本结构是顺序结构、分支结构和循环结构。7oknum115;2.1.3算法描述的三种基本结构(1)顺序结构【例2 21 1】求两数之和。块1块2块3流程图 寄存器35显示结果:35 num115 num220 sum35num220;sumnum1+num2;演示算法执行过程输出sum;8ok2.1.3算法描述的三种基本结构(2)分支结构【例22】输入三个数,输出其中的最大数。x7;y12;z10;if(xy)maxx;else max y;if(zmax)maxz;输出max;x7y12z10CPUmax12比较比较显示结果:12流程图条件块1块2真假演示算法执行过程9ok2.1.3算法描述的三种基本结构(3)循环结构流程图条件块真假【例2 23 3】求4 4个整数的和。0sum4count12x显示结果:60演示算法执行过程123142621642118600count4;/整数个数sum0;/累加和的初值while(count0)x输入一个整数;sumsum+x;countcount-1;输出sum;10ok2.2 分支结构程序设计 对程序的运行流程进行控制,主要通过执行专门用来控制流程的语句来实现。分支语句是基本流程控制语句之一。C+C+提供三种分支语句。2.2.1 if语句 2.2.2 if语句的嵌套 2.2.4 swich语句 2.2.3 条件运算符“?:”“?:”11ok2.2.1 if 语句ifif语句基本格式:1、if(表达式)语句1;2、if(表达式)语句1;else语句2;【例2.4】输入一个年份,判断是否闰年。【例2.5】从键盘上输入三个整数,输出其中的最大数。12ok嵌套ifif语句:if if 语句中,如果内嵌语句又是ifif语句,就构成了嵌套ifif语句。if if 语句可实现二选一分支,而嵌套ifif语句则可以实现多选一的多路分支情况。嵌套有两种形式,嵌套在elseelse分支中:if(表达式1)语句1;else if(表达式2)语句2;else if else 语句n;嵌套在ifif分支中:if if()1)ifif()1;elseelse;2;2.2.2 if 语句的嵌套【例2.6】用嵌套if语句完成【例2.5】的任务。13ok2.2.3 条件运算符“?:”三元运算符:三元运算符条件运算符“?:”“?:”可以用来简化ifif语句表达。其构成的表达式格式为:表达式1?1?表达式2:2:表达式3 3例如:int a=6,b=7,min=ab?a:b;int a=6,b=7,min=ab?a:b;min=ab?+a:+b;min=ab?+a:+b;min=ab?a+:b+;min=ascore;switch(score)case A:coutexcellent;break;case a:coutexcellent;break;case B:coutgood;break;case b:coutgood;break;default:coutscore;switch(score)case A:case a:coutexcellent;break;case B:case b:coutgood;break;default:coutfair;17ok(5)从形式上看,switch语句的可读性比嵌套if语句好,但不是所有多选一的问题都可由开关语句完成,这是因为开关语句中限定了条件表达式的取值类型。ok【例2.10】设计一个计算器程序,实现加、减、乘、除运算。输入:12*10:12*10 输出:12*10=120:12*10=120 2.2.4 switch语句18ok循环控制语句是基本流程控制语句之一。C+C+提供三种循环语句:2.3.1 while语句 2.3.4 循环的嵌套 2.3.3 for语句 2.3.2 do-while 语句 2.3 循环结构程序设计19ok2.3.1 while 语句whilewhile语句也称为当循环。语句格式为:while(while(表达式)循环体语句;图2.5 while语句的执行流程图求表达式的值表达式值为真?是否执行循环体语句【例2.11】求1+2+3+4+100的值。20ok2.3.1 while 语句注意:在有循环语句的程序中,通常循环开始前对循环条件进行初始化;而在循环体语句中要包含修改循环条件的语句,否则循环将不能终止而陷入死循环。C+表达方式灵活,上例中的循环语句还可以写成:while(i=n)sum+=i+;或者while(sum+=i+,i=n);/循环体为空语句修改程序后在VC+平台上运行,看是否正确21ok2.3.2 do-while 语句 do-while语句称为直到循环,格式为:do 循环体语句 while(表达式)否是表达式的值为真?执行循环体语句求表达式的值图2.6 do-while语句的执行流程图【例2.11】求1+2+3+4+100的值。22ok2.3.2 do-while 语句 do/while语句和while语句的区别:do/while语句至少执行一次循环体后再判断循环条件是否满足;while语句先判断条件是否满足,然后才执行循环体。可能一次也不执行。多数情况下可以互相替代。23ok2.3.3 for 语句 for循环语句的格式为:for(表达式1;表达式2;表达式3 )循环体语句 图2.7 for语句的执行流程图否是求表达式1的值求表达式2的值表达式2值为真?执行循环体语句求表达式3的值ok【例2.11】求1+2+3+4+100的值。24okfor语句、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 1:循环初始条件;表达式2 2:循环终止条件;表达式3 3:修改循环条件*/*/ok25okfor 语句的应用forfor语句的几点说明:1、是先判断型的,同while语句;2、使用更为灵活:三个表达式可以是任意表达式,因此它们就可以实现循环初始化、计算、修改循环条件等任务,而不一定非在循环体中进行;26okfor 语句的应用运行结果:0 1 1 2 35 8 13 21 3455 89 144 233 377610 987 1597 2584 4181【例2.152.15】输入一个不超过9 9位的整数,将其反向后输出。【例2.142.14】设计程序输出FibonaciiFibonacii数列的前2020项27ok2.3.4 循环的嵌套【例2.16】打印九九表。嵌套循环:当循环语句中的循环体中又有循环语句时,就构成了嵌套循环。嵌套层次一般不超过3层,以保证可读性。【例2.172.17】打印如下图形。*28ok2.4 转向语句break语句 return语句 goto 语句 continue语句 29ok2.4 转向语句 break语句只能用在switch语句和循环语句中,用来跳出switch语句或提前终止循环,转去执行switch语句或循环语句之后的语句。在for循环中可以用break结束循环:for(;)if()break;BreakBreak语句:【例2.18】给定正整数m,判定其是否为素数。30ok2.4 转向语句 continue continue语句只能用在循环语句中,用来终止本次循环。当程序执行到continuecontinue语句时,将跳过其后尚未执行的循环体语句,开始下一次循环。下一次循环是否执行仍然取决于循环条件的判断。continue continue语句与breakbreak语句的区别在于,continuecontinue语句结束的只是本次循环,而breakbreak结束的是整个循环。continuecontinue语句:31ok例:输出1100内3的倍数。分析:设置整型变量I从1变化到100,依次测试I是否3的倍数,算法属于穷举法。for(I=1;I=100;I+)if(I%3!=0)continue;/I不是3的倍数,不输出,继续下一个I;输出I的值;/I是3的倍数才输出 32ok2.4 转向语句 goto goto语句和标号语句一起使用,所谓标号语句是用标识符标识的语句,它控制程序从gotogoto语句所在的地方转移到标号语句处。gotogoto语句会导致程序结构混乱,可读性降低,而且它所完成的功能完全可以用算法的三种基本结构实现,因此一般不提倡使用gotogoto语句。但在某些特定场合下gotogoto语句可能会显出价值,比如在多层循环嵌套中,要从深层地方跳出所有循环,如果用breakbreak语句,不仅要使用多次,而且可读性较差,这时gotogoto语句可以发挥作用。gotogoto语句:33ok2.4 转向语句return语句用于结束函数的执行,返回调用者,如果是主函数,则返回至操作系统。利用一个return语句可以将一个数据返回给调用者。通常,当函数的返回类型为void时,return语句可以省略,如果使用也仅作为函数或程序结束的标志。returnreturn语句:34ok2.7 枚举类型 2.7.1 2.7.1 枚举类型的定义 2.7.2 2.7.2 枚举变量的使用 枚举类型(enumerate)(enumerate)是c+c+中的一种派生数据类型,它是用户定义的若干枚举常量的集合。枚举类型的变量,只能取枚举常量表中所列的值。定义枚举类型的主要目的是增加程序的可读性。35ok2.7.1 枚举类型的定义 枚举类型定义:enum ;关键字enumenum指明其后的标识符是一个类型的名字,枚举常量表中列出该类型的所有取值,各枚举常量之间以“,”间隔。例:enmu color_set1 RED,BLUE,WHITE,BLACK;color_set1 RED,BLUE,WHITE,BLACK;enum week Sun,Mon,Tue,Wed,Thu,Fri,Sat;week Sun,Mon,Tue,Wed,Thu,Fri,Sat;枚举常量(或称枚举成员)是以标识符形式表示的整型量,非法定义实例:enum enum letter_set a,d,F,s,T;letter_set a,d,F,s,T;/枚举常量只能是标识符enum enum year_set2000,2001,2002,2003,2004,2005;year_set2000,2001,2002,2003,2004,2005;/改为y2000y2000等则正确36ok2.7.1 枚举类型的定义 枚举常量:枚举常量代表该枚举类型的变量可能取的值,编译系统为每个枚举常量指定一个整数值,缺省状态下,这个整数就是所列举元素的序号,序号从0 0开始。如上例中REDRED、BLUE BLUE、WHITEWHITE、BLACK BLACK的值分别为0 0、1 1、2 2、3 3。用户也可以在类型定义时为部分或全部枚举常量指定整数值,在第一个指定值之前的枚举常量仍按缺省方式取值,而指定值之后的枚举常量按依次加1 1的原则取值。各枚举常量的值可以重复,但各枚举常量标识符必须不同。例:enum fruit_set apple,orange,banana=1,peach,grapeenum week Sun=7,Mon=1,Tue,Wed,Thu,Fri,Sat;枚举常量apple、orange、banana、peach、grape的值分别为0、1、1、2、3。枚举常量Sun,Mon,Tue,Wed,Thu,Fri,Sat的值分别为7、1、2、3、4、5、6。37ok2.7.2 枚举类型的变量的使用 枚举类型应用要点:1、定义枚举类型之后,就可以定义枚举类型的变量;亦可类型与变量同时定义(甚至类型名可省):color_set1 color1,color2;enum Sun,Mon,Tue,Wed,Thu,Fri,Sat weekday1,weekday2;2、枚举变量的取值范围就是整型数的一个子集。枚举变量占用内存的大小与整型数相同。3、枚举变量允许的操作只有赋值和关系运算;如:color3=color4=BLUE;if(color3=color4)cout”相等”;cout color3color1/非法 cout)和插入运算符()进行。也可以用读字符的get()和读字符串的getline()等函数。读写是在文件缓冲区中进行。(4)关闭文件。当打开一个文件进行读写后,应该显式地关闭该文件。与打开文件相对应:ifile.close();ofile.close();关闭文件时,系统把与该文件相关联的文件缓冲区中的数据写到磁盘文件中,保证文件的完整;同时把磁盘文件名与文件流对象之间的关联断开,可防止误操作修改了磁盘文件。41ok【例2.25】将百鸡问题计算结果存入文件。int main()int i,j,k;ofstream ofile;/定义输出文件ofile.open(d:myfile.txt);/作为输出文件打开ofile 公鸡 母鸡 小鸡endl;for(i=0;i=20;i+)for(j=0;j=33;j+)k=100-i-j;if(5*i+3*j+k/3=100)&(k%3=0)ofilesetw(6)isetw(10)jsetw(10)k,它不能读白字符 if(ai=n)break;i+;ai=0;coutaijk;/由文件读入数据 coutsetw(6)isetw(10)jsetw(10)kendl;if(ifile.eof()!=0)break;/当读到文件结束时,ifile.eof()为真 ifile.close();/关闭文件 return 0;43ok提问与解答环节Questionsandanswers44ok结束语感谢参与本课程,也感激大家对我们工作的支持与积极的参与。课程后会发放课程满意度评估表,如果对我们课程或者工作有什么建议和意见,也请写在上边45ok感谢观看Theusercandemonstrateonaprojectororcomputer,orprintthepresentationandmakeitintoafilm46
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!