基本控制结构程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《基本控制结构程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 控制 结构 程序设计 课件
- 资源描述:
-
1、C+程序设计1第二章第二章 基本控制结构程序设计基本控制结构程序设计C+程序设计2 结构化程序设计的特点是结构化程序设计的特点是任何程序任何程序都可由都可由三种基本结构及其组合三种基本结构及其组合来描述。来描述。本章将介绍本章将介绍C+分支结构和循环结构的设分支结构和循环结构的设计方法。还将介绍一些常用算法。计方法。还将介绍一些常用算法。C+程序设计3 C+程序设计4 2.1.1 算法的概念算法的概念 2.1.2 算法的表示算法的表示 2.1.3 算法描述的三种基本结构算法描述的三种基本结构C+程序设计5算法:算法:为了解决某一问题而采取的有限步骤。为了解决某一问题而采取的有限步骤。计算机算法
2、的特征:计算机算法的特征:(1)(1)可执行性可执行性(2)(2)确定性确定性(3)(3)有穷性有穷性(4)(4)可输入输出信息可输入输出信息算法是程序设计学习的重点。算法是程序设计学习的重点。2.1.1 2.1.1 算算 法法 的的 概概 念念 C+程序设计62.1.2 算法的表示算法的表示流程图:算法的图形化表示方法流程图:算法的图形化表示方法矩形框矩形框:表示要执行的指令,在框内标注指令内容;表示要执行的指令,在框内标注指令内容;菱形框菱形框:表示要判断其中表达式的值是真还是假;表示要判断其中表达式的值是真还是假;箭头线箭头线:标示指令的流程方向。标示指令的流程方向。伪码:伪码:伪码是介
3、于自然语言和程序设计语言之间的一种类自然伪码是介于自然语言和程序设计语言之间的一种类自然语言的表示方法,书写形式自由,容易转换为程序。语言的表示方法,书写形式自由,容易转换为程序。C+程序设计7 顺序结构 分支结构 循环结构2.1.3算法描述的三种基本结构算法描述的三种基本结构任何算法的描述都可以分解为三种基本结任何算法的描述都可以分解为三种基本结构或它们的组合构或它们的组合C+程序设计8 顺序结构顺序结构步骤1步骤2步骤nC+程序设计9 分支结构分支结构条件语句1语句2TF条件语句1TFC+程序设计10 循环结构循环结构条件T循环体F当型(while)循环条件T循环体F直到型循环(do循环的
4、反条件)C+程序设计11 2.2.1 if语句语句 2.2.2 if语句的嵌套语句的嵌套 2.2.3 条件运算符条件运算符 2.2.4 switch语句语句C+程序设计122.2.1 if 语句if(表达式表达式)语句语句1;if(表达式表达式)语句语句1;else语句语句2;C+程序设计13执行流程执行流程false(0)表达式表达式 语语 句句格式格式1:if(表达式表达式)语句语句1;C+程序设计14执行流程执行流程 表达式表达式 语语 句句 1语语 句句 2格式格式2:if(表达式表达式)语句语句1;else 语句语句2;C+程序设计15分析:读入三个数,先求出两个数中分析:读入三个数
5、,先求出两个数中较大者,再将该大数与第三个数比较,较大者,再将该大数与第三个数比较,求出最大数。求出最大数。int main()int a,b,c,max;coutabc;couta=atb=b tc=c=b)max=a;else max=b;if(cmax)max=c;cout“最大数为最大数为:”maxendl;return 0;【例例2.5】从键盘上输入三个整数,输出其中的最大数。从键盘上输入三个整数,输出其中的最大数。C+程序设计16例例2.4 2.4 输入一个年份,判断是否为闰年输入一个年份,判断是否为闰年#includeusing namespace std;int main()i
6、nt year;cout“输入年份输入年份”year;if(year%4=0&year%100!=0|year%400=0)cout year “年时闰年年时闰年”endl;else coutyear“年不是闰年年不是闰年”endl;return 0;C+程序设计17 2.2.2 if 语句的嵌套 嵌套嵌套if语句:语句:if 语句中,如果内嵌语句又是语句中,如果内嵌语句又是if语句,就构成了语句,就构成了嵌套嵌套if语句。语句。if 语句可实现二选一分支,而嵌套语句可实现二选一分支,而嵌套if语句则可以实现多选一的多路分支情况。语句则可以实现多选一的多路分支情况。嵌套在嵌套在else分支中分
7、支中:if(表达式表达式1)语句语句1;else if(表达式表达式2)语句语句2;else if else 语句语句n;嵌套在嵌套在if分支中:分支中:if()if();else ;C+程序设计18 2.2.2 if 语句的嵌套语句的嵌套配对关系实例:配对关系实例:/语句语句1:if(n%3=0)if(n%5=0)coutn是是15的倍数的倍数endl;else cout n是是3的倍数但不是的倍数但不是5的倍数的倍数 endl;/语句语句2:if(n%3=0)if(n%5=0)coutn是是15的倍数的倍数endl;else cout n 0,方程有两个不同实根;方程有两个不同实根;*若若
8、delta0,方程无实根。,方程无实根。【例例2.82.8】求一元二次方程的根。求一元二次方程的根。C+程序设计20#include#include using namespace std;int main()float a,b,c;float delta,x1,x2;cout输入三个系数输入三个系数a(a!=0),b,c:abc;couta=atb=btc=cendl;delta=b*b-4*a*c;C+程序设计21if(delta=0)cout方程有两个相同实根方程有两个相同实根:;coutx1=x2=-b/(2*a)0)delta=sqrt(delta);x1=(-b+delta)/(2
9、*a);x2=(-b-delta)/(2*a);cout方程有两个不同实根方程有两个不同实根:;coutx1=x1tx2=“x2endl;else cout方程无实根方程无实根!endl;/delta0return 0;请在请在VC+VC+平台上运行,输入不同的系数,使程序所有分支都可平台上运行,输入不同的系数,使程序所有分支都可以被执行一次。以被执行一次。C+程序设计222.2.3 条件运算符“?:”三元运算符三元运算符“?:”可以用来简化可以用来简化if语句表达。其构成语句表达。其构成的表达式格式为:的表达式格式为:表达式表达式1?表达式表达式2:表达式表达式3C+程序设计23例如:例如:
10、int a=6,b=7,min;min=ab?a:b;/min=6min=ab?+a:+b;/min=7 a=7 b=7 min=ab?a+:b+;/min=6 a=7 b=7C+程序设计24#include using namespace std;int main()char ch;cout ch;if(ch=A&ch=Z)ch+=32;cout ch=A&ch=Z)?ch+32:ch;把输入字符转换为小写字母。对输入字符进行判把输入字符转换为小写字母。对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不断,如果是大写字母,则转换为小写字母;否则,不转换。转换。C+程序设计25 s
11、witch(表达式表达式)case 常量表达式常量表达式 1 :语句语句 1 case 常量表达式常量表达式 2 :语句语句 2 case 常量表达式常量表达式 n :语句语句 n default :语句语句 n+1 注:注:表达式类型为非浮点型表达式类型为非浮点型 各常量表达式类型要与之匹配各常量表达式类型要与之匹配 各常量表达式要求各不相等各常量表达式要求各不相等 defaultdefault子句可选。缺省时,子句可选。缺省时,没有匹配值没有匹配值switch switch 语句为空语句为空2.2.4 switch语句 根据一个整型表达式的值决定程序分支根据一个整型表达式的值决定程序分支C
12、+程序设计26表达式表达式 语句语句 1 语句语句 2 语句语句 3 语句语句 n 语句语句n+1=常量常量1 1=常量常量2 2=常量常量3 3=常量常量n ndefaultdefault执行流程执行流程2.2.4 switch语句C+程序设计27例题根据考试成绩的等级打印出百分制分数段。例题根据考试成绩的等级打印出百分制分数段。#include using namespace std;int main()char grade;cout “输入等级输入等级(ad):grade;switch(grade)case a:cout 85_100 n ;case b:cout 70_84 n ;ca
13、se c:cout 60_69 n ;case d:cout 60 n ;default :cout error n ;return 0;C+程序设计28例题例题 根据考试成绩的等级打印出百分制分数段。根据考试成绩的等级打印出百分制分数段。#include using namespace std;int main()char grade;cout 输入等级输入等级(ad):grade;switch(grade)case a:cout 85_100 n ;break;case b:cout 70_84 n ;break;case c:cout 60_69 n ;break;case d:cout
14、 60 n ;break;default :cout error n ;return 0;C+程序设计29if if 语句语句switch switch 语句语句 形成分支控制流程形成分支控制流程 不形成程序控制流程不形成程序控制流程 用于复杂条件判断用于复杂条件判断 表达式的值为数值集合时作多分支表达式的值为数值集合时作多分支 控制控制,可读性较好可读性较好 switch语句与语句与 if 语句比较语句比较:C+程序设计30【例例2.10】设计一个计算器程序,实现加、减、乘、除运算。设计一个计算器程序,实现加、减、乘、除运算。分析:读入两个操作数和运算符,根据运算符完成相应运算。分析:读入两
15、个操作数和运算符,根据运算符完成相应运算。#include using namespace std;int main()float num1,num2;char op;cout输入操作数输入操作数1,运算符,操作数,运算符,操作数2:num1opnum2;switch(op)case+:coutnum1opnum2=num1+num2endl;break;case-:coutnum1opnum2=num1-num2endl;break;case*:coutnum1opnum2=num1*num2endl;break;case/:coutnum1opnum2=num1/num2endl;brea
16、k;default:coutop是无效运算符是无效运算符!;return 0;C+程序设计31 2.3.1 while语句语句 2.3.2 do-while 语句语句 2.3.3 for语句语句 2.3.4 循环的嵌套循环的嵌套 C+程序设计32循环条件 循环体 truefalse注意:注意:1)循环开始)循环开始前前对对循环条件循环条件进行进行初始化初始化;2)在循环体语句中要包含修改循环条件的语句,否则循环)在循环体语句中要包含修改循环条件的语句,否则循环将不能终止而陷入死循环。将不能终止而陷入死循环。2.3.1 while语句 while语句也称为当循环语句也称为当循环,语句格式为:语句
17、格式为:while(表达式表达式)循环体语句;循环体语句;C+程序设计33#include using namespace std;int main()int i=1,sum=0;while(i=100)sum=sum+i;i+;cout sum=sum endl;return 0;i=100sum=sum+i;i+;1 10 0 i=1;sum=0;想一想:想一想:循环条件是什么?循环条件是什么?循环结束条件是什么?循环结束条件是什么?哪一个语句修改循环条件?哪一个语句修改循环条件?一个简单的循环跟踪:一个简单的循环跟踪:求求1001iisumC+程序设计34while(i=n)sum+=i
18、+;while(sum+=i+,i=n);/循环体为空语句循环体为空语句这两种表达方式与例这两种表达方式与例2.11中的循环语句从执中的循环语句从执行结果看是完全等价的。需要说明的是,行结果看是完全等价的。需要说明的是,虽然虽然C+可以让代码最大限度优化,但往往造成可读可以让代码最大限度优化,但往往造成可读性降低性降低,因此程序设计者只需理解这种表达方法,因此程序设计者只需理解这种表达方法的意义,而设计时主要追求的目标应是的意义,而设计时主要追求的目标应是可读性可读性。C+程序设计35循环条件 循环体 truefalse直到型循环直到型循环2.3.2 do-while 语句 do-while语
19、句称为直语句称为直到循环,格式为:到循环,格式为:do 循环体语句循环体语句 while(表达式表达式);C+程序设计36 do/while语句和语句和while语句的区别:语句的区别:do/while语句至少执行一次循环体后再判断循语句至少执行一次循环体后再判断循环条件是否满足;环条件是否满足;while语句先判断条件是否满足,然后才执行语句先判断条件是否满足,然后才执行循环体。可能一次也不执行。循环体。可能一次也不执行。多数情况下可以互相替代。多数情况下可以互相替代。C+程序设计37【例例2.12】用迭代法求用迭代法求a的平方根近似值。的平方根近似值。求平求平方根的迭代公式为:方根的迭代公
20、式为:要求前后两个迭代根之差小于要求前后两个迭代根之差小于10-5。迭代法求解:迭代法求解:a是已知正数,是已知正数,x 0是迭代初值,给是迭代初值,给x 0一个值,假定一个值,假定 x 0=a/2;则用迭代公式依次计算:;则用迭代公式依次计算:x1=(x0+a/x0)/2;x2=(x1+a/x1)/2;xk+1=(xk+a/xk)/2;当当|xk+1 xk|0)及较小正数delta(也可用常变量);2、x 0=a/2;用迭代公式算 x1=(x0+a/x0)/2;3、while(|x1 x0|=delta)x 0=x 1 ;/把最近的值给把最近的值给x 0 x1=(x0+a/x0)/2;/求求
21、xk+1时只需要知道时只需要知道xk的值,所以只需的值,所以只需2个变量个变量4、取x1的值为a的平方根近似值,输出。和迭代法对应的程序算法是递推算法:C+程序设计39#include#include using namespace std;int main()float x0,x1,a;couta;if(a0)couta不能开平方不能开平方!=1e-5);cout a的平方根为:的平方根为:x1endl;return 0;C+程序设计402.3.3 for 语句 for循环语句的格式循环语句的格式for(表达式表达式1;表达式表达式2;表达式表达式3)循环体语句循环体语句 表达式表达式2循环
22、体循环体表达式表达式1表达式表达式3关键字关键字初始表达式初始表达式循环控制循环控制逻辑表达式逻辑表达式循环后置表达式循环后置表达式C+程序设计41例如,用例如,用 for for 语句的求和式语句的求和式 的程序的程序1001iisum#include using namespace std;int main()int i,sum=0;for(i=1;i=100;i+)sum+=i;cout sum=sum endl;return 0;#include using namespace std;int main()int i=1,sum=0;while(i=100)sum=sum+i;i+;c
23、out sum=sum endl;return 0;C+程序设计42for语句、while语句、do/while语句比较:int i=1,sum=0;/循环初始条件循环初始条件while(i=4)sum+=i;i+;/修改循环条件修改循环条件 int i=1,sum=0;/循环初始条件循环初始条件do sum+=i;i+;/修改循环条件修改循环条件 while(i=4);int i,sum=0;for(i=1;i=4;i+)sum+=i;/*习惯上:表达式习惯上:表达式1 1:循环初始条件;表达式:循环初始条件;表达式2 2:循环终:循环终止条件;表达式止条件;表达式3 3:修改循环条件:修改
24、循环条件*/C+程序设计43(1)for语句属于先判断型,与语句属于先判断型,与while语句完全等同。语句完全等同。(2)for语句中的三个表达式都是包含逗号表达式在内的任意语句中的三个表达式都是包含逗号表达式在内的任意表达式。表达式。如如【例例2.11】中的循环部分用中的循环部分用for语句可描述为:语句可描述为:for(i=1,sum=0;i=100;i+)sum+=i;(3)for语句中的三个表达式可部分或全部省略,但两个分号语句中的三个表达式可部分或全部省略,但两个分号不能省略。如上述语句还可写为:不能省略。如上述语句还可写为:i=1;sum=0;for(;i=100;)sum+=i
25、;i+;实际上,表达式实际上,表达式2也可省略,形如也可省略,形如for(;)这种情况下,约定表达式这种情况下,约定表达式2的值为的值为1,即等同,即等同for(;1;)死循环,用死循环,用break跳出。跳出。for语句的几点说明:C+程序设计44【例例2.142.14】运行结果:运行结果:0 1 1 2 35 8 13 21 3455 89 144 233 377610 987 1597 2584 4181【例例2.142.14】设计程序输出设计程序输出FibonaciiFibonacii数列的前数列的前2020项,要求每行输出项,要求每行输出5 5个数据。个数据。C+程序设计45Fibo
展开阅读全文