欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《流程控制讲》PPT课件.ppt

    • 资源ID:5546803       资源大小:604KB        全文页数:91页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《流程控制讲》PPT课件.ppt

    第 4 章 C+的流程控制,4.1 算法概述4.2 C+语言程序的结构和语句4.3 选择结构语句的使用4.4 循环结构语句的使用句4.5 控制语句的应用举例,4.1 算法概述,程序=数据+算法,算法:为解决一个问题而采取的有限步骤。,程序的算法:使用程序解决问题的计算步骤,不同的算法效率不同:采用优秀的解题方法,合理安排计算步骤,以最少的计算步骤完成计算任务的方法我们称为高效率算法。使用了比较笨拙的解题方法,通过较多的运算步骤来实现同样的计算任务的计算方法我们称为低效率算法。为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。,4.1.2 算法的设计原则,1符合数学计算规则 只有符合数学规则的计算步骤才可以被计算机正确执行。2保证结果确定 如果一个算法对同一组数据进行多次计算,竟然获得多个不同的结果,这种算法是不确定的,是无效的。保证算法的确定性,最重要的方面是排除程序中随机数的产生(变量初始化)。3程序能够正常结束 一个合理的算法应包含有限的操作步骤,而不能是无限的。,4.1.2 算法的设计原则,4合理的输入 一个实际有效的程序中应该含有零个或者多个输入(一般会在程序的算法中加入一个或者多个输入)。5合理的输出 一个有效的程序在设计算法时必须保证程序至少要有一个输出。,4.1.3 算法的表示工具,怎样来描述一个算法呢?自然语言 流程图 N-S 图 伪代码(类似于数学语言),流程图是目前全球软件开发领域使用最广泛的算法表示工具,它通过一些严格定义图形的组合来表示算法的步骤以及数据变化的走向。用图形表示算法,直观形象,易于理解。,自然语言就是人们日常生活中使用的语言。容易造成误解,1973年美国学者 I.Nassi 和 B.Shneideman提出的一种无流线的流程图,起止框,流程图表示算法,输入输出框,判断框,流程线,处理框,连接点,注释框,流程图符号:,例:求 的值。,求多项式的累乘积问题。,定义变量:M 累乘积 N 代表一项的分母,算法描述:自然语言+伪代码,用N-S 图描述,用流程图描述,结构化程序设计的基本结构:三种。1.顺序结构:先执行A操作,再 执行B操作.,(a)流程图(b)N-S图,A、B可以是一个简单语句或一个基本结构,4.1.4 结构化程序设计中基本结构的表示,2.选择结构:C(Condition)代表一个条件,(a)流程图(b)N-S图,3.循环结构:当(while)型循环,(1)当条件 C 成立时,反复执行 A 操作,直到 C 为假时,才停止循环。,(a)流程图(b)N-S图,有可能循环体一次都不执行,3.循环结构:直到(until)型循环,(2)先执行 A 操作,再判条件 C,若为“假”重复执行A,直到 C 为“真”停止,(a)流程图(b)N-S图,循环体至少要被执行一次,三种结构特点:单入口、单出口。每一部分都可能被执行到。没有死循环。A、B可能是一个更基本的结构。,4.2 C+语言程序的结构和语句,计算机程序运行的时候是将一条条的语句翻译成机器指令,控制计算机产生计算的结果的。所以语句是计算机程序的基本组成单位。注意:在C+程序中,任何执行语句都必须写在函数中,不允许出现不属于函数的独立执行语句。,1.定义语句 int a,b;,语句分类:(6类),C+程序是由若干函数构成,而一个函数由若干语句构成。这些语句组合成上述三种结构以实现算法。,2.控制语句:(9种,控制语句的执行流程),(1)if()else 条件语句(2)for()循环语句(3)while()循环语句(4)do while()循环语句(5)continue 结束本次 循环语句(6)break 中止执行switch或循环语句(7)switch 多分支选择语句(8)go to 转向语句(9)return 从函数返回语句,5.空语句:;只有一个分号,什么都不做。主要用于作被转向点,或空循环体。,3.函数调用语句:例:cos(x);调用标准库函数 a=maxx(x1,x2);调用自定义函数,4.表达式语句:由“表达式+分号”构成。例:a+b;a=3+x;i+;,6.复合语句:用 把多条语句括起来构成复合语句,从语法上看成一条简单语句。,例:a=1;b=2;c=3;,或写成:a=1;b=2;c=3;,顺序结构程序举例,例 输入三角形的三边长,求三角形面积,计算方法:设a、b、c为三个边长。,程序:#include#include void main()float a,b,c,s,area;cin a b c;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);cout area=area n;,运行时:输入:3 4 5 输出:area=6,例 从键盘输入一个大写字母,要求输出对应小写字母。如输入 B,则输出 b。#include void main()char c1,c2;cin c1;c2=c1+32;cout c2 n;,运行时:输入:A 输出:a,例 求 ax2+bx+c=0 方程的根,a,b,c由键盘输入,设 b*b-4ac0#include#include void main()float a,b,c,disc,x1,x2,p,q;cin a b c;disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;cout x1=x1nx2=x2n;,输入:1 3 2 输出:x1=-1 x2=-2,4.3 选择结构语句的使用,4.3.1 if 语句,1.if()语句,2.if()语句1 else 语句2,if 语句-根据给定条件选择所执行的操作。,不平衡 if 语句单选,平衡 if 语句二中选一,#include void main()float a,b,c,t;cout a b c;t=a;if(t b)t=b;if(t c)t=c;cout 最大值:t endl;,例4.1 输入三个数,求出并输出其中最大数,两个独立的不平衡 if 语句,动态看程序的执行,有些部分可能执行到,也可能执行不到。,流程图,如:输入数据 1 2 3 和 1 3 2,程序每次执行的语句不同。,#include void main()float a,b,c,t;cout a b c;if(a b)t=b;else t=a;if(t c)cout 最大值:c endl;else cout 最大值:t endl;,例4.2 输入三个数,求出并输出其中最大数,两个独立的平衡 if 语句,3.if()语句1 else if 语句 else if()语句2 组合 if 语句 else if()语句3 else 语句n,例4.3 输入三个数,求出并输出其中最大数,组合 if 语句的使用,一条语句,#include void main()float a,b,c;cout a b c;if(a=b,例:输入学生的分数 x,根据成绩的高低,输出不同等级若 x 为:90100分 则输出A8089分 则输出B7079分 则输出C6069分 则输出D60分以下 则输出E,#include void main()int x;cin x;if(x=90)cout=80)cout=70)cout=60)cout D n;else cout E n;,例如输入:75执行顺序输出结果,注意:条件的写法,例:输入学生的分数 x,根据成绩的高低,输出不同等级,#include void main()int x;cin x;if(x=90)cout A n;else if(80=x 90)cout B n;else if(70=x 80)cout C n;else if(60=x 70)cout D n;else cout E n;,注意:条件的写法,例:输入学生的分数 x,根据成绩的高低,输出不同等级,#include void main()int x,d;cin x;d=x/10;if(d=9)cout A n;else if(d=8)cout B n;else if(d=7)cout C n;else if(d=6)cout D n;else cout E n;,注意:条件的写法,例:任意输入一个小于等于 5 位数的正整数,输出其位数。例:输入 23 输出2输入 13579 输出5,#include void main()int x,ws;cin x;if(x=10000)ws=5;else if(x=1000)ws=4;else if(x=100)ws=3;else if(x=10)ws=2;else ws=1;cout ws endl;,注意:条件的写法,void main()char c;cin c;if(c 32)cout 控制字符n;else if(0=c,例 判断输入字符的种类。把字符分为五类:数字字符 大写字母 小写字母、控制字符(ASCII码 32)其他字符,4.3.2 if 语句的嵌套形式,if()if()语句1 else 语句2else if()语句3 else 语句4,内嵌 if,内嵌 if,内嵌的 if-else 语句为一条语句,#include void main()float x,y;cout x;if(x 10)y=-10;else if(x=10)y=5;else y=20;cout y=y endl;,例4.5用嵌套的if语句解决数学问题,嵌套 if 语句,流程图见 P55,if(a+bc,if 语句中需要注意的问题,在if 和 else 后面可以有多个操作语句,此时用花括号将几个语句括起来形成复合语句,复合语句后无分号“;”,4.3.3 条件运算符,if(ab)max=a;else max=b;,max=(ab)?a:b;,运算原则:当表达式1为真时,整个表达式的值为表达式2 当表达式1为假时,整个表达式的值为表达式3,运算优先级:比赋值运算符高 比算术、关系、逻辑运算符低,结合性:自右向左,C+语言中唯一的三目运算符,例 输入一个字符,判别它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字母。,4.3.4 开关语句(多分支选择,switch语句),一般形式,switch(表达式)case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default:语句n+1,char grade;cin grade;switch(grade)case A:cout“优“endl;case B:cout“良“endl;case C:cout“中“endl;case D:cout“及格“endl;default:cout“不及格“endl;,switch 语句示例,根据考试成绩的等级打印出百分制分数段,break;break;break;break;,default后可以不加break语句,5.加上break语句后,就可以实现执行一个case后,终止switch语句,加 break 语句后程序的流程图,6.switch语句中多个case共用一组执行语句,char grade;cin grade;switch(grade)case A:case B:case C:cout 60n;break;case D:case E:cout 60n;,grade的值为A、B或C 时执行同一组语句,grade的值为D或E 时执行另外一组语句,注意:,1在switch语句中,default分支可以放在任何位置。但是为了配合常量表达式匹配查询的执行流程,使得程序书写和阅读方便,一般将default分支写在switch语句的最后一行。2每个常量表达式的值都必须互不相同,否则当表达式的值与多个常量表达式的值都匹配时,计算机将无法决定到底执行哪一个常量表达式后面的语句序列。3常量表达式必须是一个确定的字符类型或者整数类型的常量数值,而不能是浮点数或者变量表达式。4switch语句并不与组合的if语句完全等价。switch语句只能处理字符类型和整数类型的条件判断,而组合的if语句不但可以处理字符类型和整数类型的条件判断,还可以对浮点数等其它的条件进行判断。,例:i=2;switch(i)case 1:i+;case 2:i+;case 3:i+;case 4:i+;default:i+;cout i n;,输出:?,输出:6,例4.6 根据收入,计算应缴纳的公积金,特点:根据收入,缴纳比例不同 in 1000 2%比例1000=in 2000 3%比例2000=in 5000 4%比例5000=in 10000 5%比例10000=in 6%比例,缴纳总金额:fee=in*r%in 收入r 缴纳比例的分子,程序举例,temp=in/1000;当 in 1000 temp=0 r=2当 1000=in 2000temp=1 r=3当 2000=in 5000temp=2,3,4 r=4当 5000=in 10000 temp=5,6,7,8,9 r=5当 10000=in temp=其它值 r=6,case 5:case 6:case 7:case 8:case 9:r=5;break;default:r=6;fee=in*r/100.0;cout公积金为:feeendl;,#include void main()int in,temp,r;float fee;cout in;temp=in/1000;switch(temp)case 0:r=2;break;case 1:r=3;break;case 2:case 3:case 4:r=4;break;,#include void main()int in,r;float fee;cin in;/输入收入if(in1000)r=2;else if(in2000)r=3;else if(in5000)r=4;else if(in10000)r=5;else r=6;fee=in*r/100.0;cout公积金为:feeendl;,例 设用条件语句实现上例公积金的计算,void main()char op;float num1,num2,result=0;cin num1 op num2;switch(op)case+:result=num1+num2;break;case-:result=num1-num2;break;case*:result=num1*num2;break;case/:result=num1/num2;break;default:无效运算符n;cout num1 op num2=result n;,例 设计一个简单的计算器程序,完成简单的四则运算,如:输入 2.5*4 输出 2.5*4=10又如:输入 2.5+4 输出 2.5+4=6.5,4.4 循环结构语句的使用,循环 当满足一定的条件,重复处理的过程如:,解决步骤:(1)整型变量 sum=0,i=0(2)令 i=i+1,sum=sum+i,(3)若 i100,则重复步骤(2)(4)输出 sum,步骤(2)称为循环体,实现循环的四种方式,goto+语句标号 while 语句 for 语句 do-while 语句,4.4.1 goto 语句和标号,goto 标号;,一般形式:,其作用是确定流程跳转目标,goto 语句主要用途,与 if 语句一起构成循环结构从循环体中跳转到循环体外,例4.7 用if语句、goto语句构成循环的实例,if、goto语句求和,#include void main()int i=1,sum=0;loop:if(i=100)sum=sum+i;i+;goto loop;cout sum n;,4.4.2 while()语句,一般形式 while(),当表达式为真(非0)值时,执行 while 语句中的内嵌语句。,先判断表达式,后执行语句,例4.8 while语句求和实例,#include void main()int i=1,sum=0;while(i=100)sum=sum+i;i=i+1;cout sum=sum n;,while语句中应注意的问题,循环体包含一个以上的语句时,应该用大括号括起来,#include void main()int i=1,sum=0;while(i=100)sum=sum+i;i=i+1;cout sum=sum n;,累加计算中的累加和变量一般初始化为0,累乘计算中的累乘积变量一般初始化为1。,4.4.3 for语句,for(初始化表达式;条件表达式;修正表达式)语句,一、一般形式,相当于“当型”循环,初始化表达式;while(条件表达式)语句;修正表达式;,二、for语句最简单的应用形式,for(i=1;i=100;i+)sum=sum+i;,i=1;while(i=100)sum=sum+i;i+;,for(初始化表达式;条件表达式;修正表达式)语句,例4.9 用for语句求和实例,#include void main()int sum=0;for(int i=1;i=100;i+)sum+=i;cout 从1加到100的总和是:sum endl;,for语句有关说明,2.“条件表达式”可省略,做“永真”处理,循环无终止地进行。,1.在C+的for语句的初始化表达式中,不但可以为变量赋初始值,还可以定义变量。,for语句有关说明,2.“初始化表达式”可省略,初始化移至循环体前,3.“条件表达式”可省略,做“永真”处理,循环无终止地进行。,1.在C+的for语句的初始化表达式中,不但可以为变量赋初始值,还可以定义变量。,for语句有关说明,4.“修正表达式”可省略,“修正”移至循环体内,循环变量在循环体内变化,5.“循环体”可为空,,将循环体中应做的工作,放在“修正表达式”中。,6.三个“表达式”和“语句”都可省略,无限循环,7.“初始化表达式”和“修正表达式”可以是一个以上的表达式,for语句有关说明,for(;);,4.4.4 do-while()语句,do while(),一、一般形式,先执行指定的内嵌语句,然后判断表达式。,先执行语句,然后再判断表达式,二、例4.10 do-while()语句 求和,#include void main()int i=1,sum=0;do sum+=i;i+;while(i=100);cout sum=sum n;,三、while 和 do-while 循环比较,while(表达式)语句,do 语句while(表达式),三、while 和 do-while 循环比较,main()int i,sum=0;cin i;while(i=10)sum=sum+i;i+;cout sum;,main()int i,sum=0;cin i;do sum=sum+i;i+;while(i=10);cout sum;,例:输入一个 4 位数的整数,输出其各位数字之和。如:输入2426 输出 14,解1(硬性分解各位)#include void main()int n,a,b,c,d;cin n;/*n=abcd a千位,b百位,c十位,d个位*/a=n/1000;b=n%1000/100;c=n%100/10;d=n%10;cout a+b+c+d n;,没有使用循环,若n是4位以上的数字,此方法不适用。,解2(循环 分解各位)#include void main()int n,sum=0;cin n;while(n0)sum+=n%10;n=n/10;cout sum n;,可将 n 推广为任意位!,例:分解整数:找出100到1000之间的符合下述条件的数,条件为:该数能被5整除而且该数各位数字之和等于9。如:数225,#include void main()int i,a,b,c;for(i=100;i1000;i+=5)a=i/100;b=i%100/10;c=i%10;if(a+b+c=9)cout i n;,三种循环的比较,三种循环可以处理同一问题。while 和 do-while 循环,循环变量应在循环语句前初始化。while 循环和 for 循环是先判断表达式后执行语句,而 do-while 循环是先执行语句,然后判断表达式。对 while、do-while 和 for循环,可用 break 语句跳出循环,而用 continue 语句结束本次循环,4.4.5 break 语句和 continue 语句,break;,break语句,1.break 语句可以使流程跳出 switch 结构2.break 语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。,for(r=1;r100)break;cout area;,当面积值大于100时,跳出循环体,不再执行其余几次循环,一般形式:,continue 语句,continue;,一般形式:,其作用是结束本次循环,即跳过循环体下面未执行的语句,接着进行下一次是否执行循环的判定。,for(n=100;n=200;n+)if(n%3=0)continue;cout n n;,当n能被3整除时,跳出本次循环,不再执行 cout 语句,但是还要继续循环判断,本程序的功能是打印出100200之间不能被3整除的整数,for(r=1;r100)break;cout area;,for(n=100;n=200;n+)if(n%3=0)continue;cout n n;,三、break 和 continue 语句的区别,例 判断 m 是否是素数(框图),返回,#include#include void main()int i,m,k;cin m;k=sqrt(m);for(i=2;i=k+1)cout m is a Prime Number.n;else cout m is not a Prime Number.n;,例 判断 m 是否是素数(程序),算法:如果 2中所有的数都不能把 m除尽,则m是素数,例4-11:用break语句求解素数。,#include#include void main()int a,b,i;cout a;b=sqrt(a);for(i=2;i=b+1)cout a 是素数 endl;else cout a 不是素数 endl;,例:比较两段程序的区别for(i=1;i=5;i+)x=i*i;if(x=9)break;cout x n;cout i=i n;,for(i=1;i=5;i+)x=i*i;if(x=9)continue;cout x n;cout i=i n;,输出:1 4 i=3,输出:1 4 16 25 i=6,4.4.6 循环的嵌套及其应用,嵌套:一个循环体内包含另一个完整的循环结构,多层循环:内嵌的循环体内又嵌套循环结构,前述的三种循环都可以互相嵌套,#include#include void main()int i,j;cout 乘法表:endl;for(i=1;i=9;i+)/外循环控制输出的行数 for(j=1;j=i;j+)/内循环 cout i j=i*j t;cout endl;,例4.12用循环嵌套技术输出99乘法表,例4.13 求 ax2+bx+c=0 方程的根,#include#include void main()float a,b,c,disc,x1,x2,real,image;cout a b c;cout n方程;if(fabs(a)=1e-7)/a=0,注意写法 cout 不是二次方程,解为:-c/b endl;else/处理其它三种情况 disc=b*b-4*a*c;,if(fabs(disc)1e-7)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);cout 有两个不相等的实数根:x1 和 x2 endl;else real=-b/(2*a);image=sqrt(-disc)/(2*a);cout 有两个复数根:endl;cout real+image i endl;cout real-image i endl;,例4.14:循环求cos(x),#include#include math.hvoid main()int sign,i;float x,m,n,t,cos;cout x;,cos=0;t=1;n=1.0;m=1.0;sign=1;i=0;while(fabs(t)=1e-9)cos=cos+t;/累加和i=i+2;/项数 n=n*x*x;/分子的值m=m*i*(i-1);/分母的值 sign=-sign;/符号 t=sign*n/m;/通项的值 cout cos(x)=cos endl;,注意:循环结束条件。,例4.15 使用循环语句求解1!+2!+20!多项式求和问题。#include void main()double sum,t;sum=0;t=1;for(int i=1;i=20;i+)t=t*i;/计算每一个阶乘sum=sum+t;cout sum=sum endl;,#include#include void main()long f1=1,f2=1,f3;cout setw(12)f1 setw(12)f2;for(int i=3;i=20;i+)f3=f1+f2;cout setw(12)f3;if(i%4=0)cout n;f1=f2;f2=f3;,例4.16 求 Fabonacci 数列前20个数,1,1,2,3,5,8,13,f1+f2=f3 f1 f2,=f3,运行结果如下:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765,void main()/一次求出两个,并输出它们 long f1=1,f2=1;for(int i=1;i=10;i+)cout f1 t f2 t;if(i%2=0)cout n;f1=f1+f2;f2=f2+f1;,改写:求 Fabonacci 数列前20个数,1,1,2,3,5,8,13,f1+f2,f1,f2,f1,f2,每次求出两个新数,运行结果同前,例4.17求 100200 之间全部素数,#include#include math.hvoid main()int m,k,i,n=0;/n是计数器 for(m=101;m=k+1)/正常结束,是素数 cout m;n=n+1;,例4.18使用循环语句按照定义求任意两个数的最大公约数和最小公倍数。,#include void main()int x,y,i,k;cout x y;k=x=1;i-)/求最大公约数 if(x%i=0,k=xy?x:y;/取两数中的大数 for(i=k;i=x*y;i+)/求最小公倍数 if(i%x=0,例4.19 求出并输出满足如下条件的三位数:该数是11的倍数,并且个、十、百位数字各不相同。,#include void main()int i,x,y,z;for(i=100;i1000;i+)if(i%11=0)/11的倍数 x=i/100;/取得百位的数值 y=i%100/10;/取得十位的数值 z=i%10;/取得个位的数值 if(x!=y,

    注意事项

    本文(《流程控制讲》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开