C++程序设计-CH-1(2)程序控制结构.ppt
- 文档编号:18746545
- 上传时间:2023-10-27
- 格式:PPT
- 页数:285
- 大小:2.49MB
C++程序设计-CH-1(2)程序控制结构.ppt
《C++程序设计-CH-1(2)程序控制结构.ppt》由会员分享,可在线阅读,更多相关《C++程序设计-CH-1(2)程序控制结构.ppt(285页珍藏版)》请在冰点文库上搜索。
1.2认识C+语言面向过程编程的特点之二:
C+语言的基本语法-程序控制结构,2.程序控制结构,2.1选择控制,2.2循环控制,2.3判断表达式的使用,2.4转向语句,小结,语句是程序的基本语法成分。
程序设计语言的语句按功能可以分成三类:
声明语句指示编译器分配内存,或者提供程序连接信息操作语句描述对数据的处理控制语句用于控制程序的执行流程。
所有程序都只能包含三种控制结构:
顺序结构、选择结构和循环结构,2.程序控制结构,对给定的条件进行判断,并根据判断的结果选择不同的操作,2.1选择控制,条件运算表达式根据判断条件,决定表达式的值不改变程序语句执行流程,1if语句的形式和执行流程,if(表达式)语句;,2.1.1if语句,语句形式
(1),执行流程,2.1.1if语句,1if语句的形式和执行流程,if(表达式)语句;,2.1.1if语句,语句形式
(1),执行流程,表达式,语句,true(非0),2.1.1if语句,1if语句的形式和执行流程,if(表达式)语句;,2.1.1if语句,语句形式
(1),执行流程,表达式,false(0),2.1.1if语句,2.1.1if语句,例:
:
max=a;if(ba)max=b;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,3,例:
:
max=a;if(ba)max=b;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,3,例:
:
max=a;if(ba)max=b;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,3,例:
:
max=a;if(ba)max=b;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,5,例:
:
max=a;if(ba)max=b;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,5,例:
:
max=a;if(ba)max=b;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,例:
:
max=a;if(ba)max=b;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,7,例:
:
max=a;if(ba)max=b;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,7,例:
:
max=a;if(ba)max=b;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,7,例:
:
max=a;if(ba)max=b;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,1if语句的形式和执行流程,语句形式
(2),if(表达式)语句1;else语句2;,执行流程,2.1.1if语句,2.1.1if语句,1if语句的形式和执行流程,语句形式
(2),if(表达式)语句1;else语句2;,执行流程,true(非0),表达式,语句1,2.1.1if语句,2.1.1if语句,1if语句的形式和执行流程,语句形式
(2),if(表达式)语句1;else语句2;,执行流程,false(0),表达式,语句2,2.1.1if语句,2.1.1if语句,例:
:
if(ba)max=b;elsemax=a;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,例:
:
if(ba)max=b;elsemax=a;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,例:
:
if(ba)max=b;elsemax=a;coutmax=maxendl;:
5,2.1.1if语句,2.1.1if语句,例:
:
if(ba)max=b;elsemax=a;coutmax=maxendl;:
5,2.1.1if语句,2.1.1if语句,例:
:
if(ba)max=b;elsemax=a;coutmax=maxendl;:
2.1.1if语句,2.1.1if语句,例:
:
if(ba)max=b;elsemax=a;coutmax=maxendl;:
7,2.1.1if语句,2.1.1if语句,例:
:
if(ba)max=b;elsemax=a;coutmax=maxendl;:
7,2.1.1if语句,2.1.1if语句,例:
:
if(ba)max=b;elsemax=a;coutmax=maxendl;:
7,试一试用条件表达式修改该程序,2.1.1if语句,2.1.1if语句,2if语句的嵌套,if语句中的执行语句如果又是另一个if语句,称为嵌套if语句if与else的配对关系:
C+规定,else总是与它接近的if配对使用复合语句,可以改变条件语句的执行流程,2.1.1if语句,2.1.1if语句,例2-1编写程序计算货物运费。
设货物运费每吨单价p(元)与运输距离s(公里)之间有如下关系:
p=,输入要托运的货物重量为w吨,托运距离s公里,计算总运费t:
t=p*w*s,2.1.1if语句,2.1.1if语句,控制流图,2.1.1if语句,2.1.1if语句,/例2-1计算货物运费#include#includeusingnamespacestd;intmain()doublet,p,w,s;coutw;couts;if(s100)p=30;elseif(s200)p=27.5;elseif(s300)p=25;elseif(s400)p=22.5;elsep=20;t=p*w*s;coutThecostis:
setprecision
(2)t$endl;,想一想:
几个else分支语句的次序可以改变吗?
2.1.1if语句,/例2-1计算货物运费#include#includeusingnamespacestd;intmain()doublet,p,w,s;coutw;couts;if(s100)p=30;elseif(s200)p=27.5;elseif(s300)p=25;elseif(s400)p=22.5;elsep=20;t=p*w*s;coutThecostis:
setprecision
(2)t$endl;,2.1.1if语句,例如:
cins;if(s300)p=25;elseif(s100)p=30;elseif(s400)p=22.5;elseif(s200)p=27.5;elsep=20;t=p*w*s;,若输入s:
150输出t值等于多少?
为什么?
2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法一数据排序。
先找出最小值,放在a中,然后找次小值,放在b中:
1.对a、b进行比较,把小值放于a;ifabab/acac/acbc/ab&bc4.输出a,b,c的值。
2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
ab:
ab,2,7,ac:
ac,2,bc:
bc,ab,ab,ac,ab&bc,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
#includeusingnamespacestd;intmain()inta,b,c,t;coutabc;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;coutabcendl;,注意语句块结构,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
#includeusingnamespacestd;intmain()inta,b,c,t;coutabc;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;coutabcendl;,注意语句块结构,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
3个数的6种可能排列方式:
abcab&bcacbac&cbbacba&acbcabc&cacabca&abcbacb&ba,可以直接用6个if语句写出程序,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
3个数的6种可能排列方式:
abcab&bcacbac&cbbacba&acbcabc&cacabca&abcbacb&ba,最坏情况要做8个关系运算和3个逻辑运算,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
3个数的6种可能排列方式:
abcab&bcacbac&cbbacba&acbcabc&cacabca&abcbacb&ba,2.1.1if语句,最坏情况要做8个关系运算和3个逻辑运算,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
3个数的6种可能排列方式:
abcab&bcacbac&cbbacba&acbcabc&cacabca&abcbacb&ba,最好情况要做2个关系运算和1个逻辑运算,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
3个数的6种可能排列方式:
abcab&bcacbac&cbbacba&acbcabc&cacabca&abcbacb&ba,2.1.1if语句,最好情况要做2个关系运算和1个逻辑运算,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
3个数的6种可能排列方式:
abcab&bcacbac&cbbacba&acbcabc&cacabca&abcbacb&ba,优化算法,首先分析a,b的顺序,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
3个数的6种可能排列方式:
abcab&bcacbac&cbbacba&acbcabc&cacabca&abcbacb&ba,优化算法,首先分析a,b的顺序,然后分析c的位置,ab,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
3个数的6种可能排列方式:
abcab&bcacbac&cbbacba&acbcabc&cacabca&abcbacb&ba,优化算法,首先分析a,b的顺序,然后分析c的位置,abc,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
3个数的6种可能排列方式:
abcab&bcacbac&cbbacba&acbcabc&cacabca&abcbacb&ba,优化算法,首先分析a,b的顺序,然后分析c的位置,cab,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
3个数的6种可能排列方式:
abcab&bcacbac&cbbacba&acbcabc&cacabca&abcbacb&ba,优化算法,首先分析a,b的顺序,然后分析c的位置,acb,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
最坏情况做3次关系运算,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
最坏情况做3次关系运算,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
最好情况做2次关系运算,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
最好情况做2次关系运算,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
#includeusingnamespacestd;intmain()inta,b,c;coutabc;if(ab)if(bc)coutabcendl;elseif(ac)coutacbendl;elsecoutcabendl;elseif(ac)coutbacendl;elseif(bc)coutbcaendl;elsecoutcbaendl;,注意ifelse的匹配,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
#includeusingnamespacestd;intmain()inta,b,c;coutabc;if(ab)if(bc)coutabcendl;elseif(ac)coutacbendl;elsecoutcabendl;elseif(ac)coutbacendl;elseif(bc)coutbcaendl;elsecoutcbaendl;,2.1.1if语句,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
#includeusingnamespacestd;intmain()inta,b,c;coutabc;if(ab)if(bc)coutabcendl;elseif(ac)coutacbendl;elsecoutcabendl;elseif(ac)coutbacendl;elseif(bc)coutbcaendl;elsecoutcbaendl;,2.1.1if语句,2.1.1if语句,#includeusingnamespacestd;intmain()inta,b,c;coutabc;if(ab)if(bc)coutabcendl;elseif(ac)coutacbendl;elsecoutcabendl;elseif(ac)coutbacendl;elseif(bc)coutbcaendl;elsecoutcbaendl;,2.1.1if语句,例2-2输入三个整数,按从小到大顺序输出。
解法二改变输出顺序:
2.1.1if语句,if(E1)if(E2)S1elseS2,if(E1)if(E2)S1elseS2,分析S1和S2的执行条件:
E1&E2执行S1E1&!
E2执行S2,E1&E2执行S1!
E1执行S2,注意括号的作用,2if语句的嵌套,2.1.1if语句,3应用举例,
(1)把输入字符转换为小写字母。
对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不转换。
/例2-3#includeusingnamespacestd;intmain()charch;coutch;if(ch=A,2.1.1if语句,3应用举例,/例2-3#includeusingnamespacestd;intmain()charch;coutch;if(ch=A,输入大写字母,
(1)把输入字符转换为小写字母。
对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不转换。
2.1.1if语句,3应用举例,/例2-3#includeusingnamespacestd;intmain()charch;coutch;if(ch=A,计算ASCII码偏移值,
(1)把输入字符转换为小写字母。
对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不转换。
2.1.1if语句,3应用举例,/例2-3#includeusingnamespacestd;intmain()charch;coutch;if(ch=A,
(1)把输入字符转换为小写字母。
对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不转换。
2.1.1if语句,3应用举例,/例2-3#includeusingnamespacestd;intmain()charch;coutch;if(ch=A,改写为条件表达式ch=(ch=A,
(1)把输入字符转换为小写字母。
对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,不转换。
2.1.1if语句,3应用举例,
(2)求一元二次方程ax2+bx+c=0的根。
求根公式:
当a=0时,方程不是二次方程,当b2-4ac=0时,有两个相同的实根:
当b2-4ac0时,有两个不同的实根:
当b2-4ac0时,有两个共轭复根:
2.1.1if语句,#include/例2-4#includeusingnamespacestd;intmain()doublea,b,c,d,x1,x2,rp,ip;coutabc;if(fabs(a)1e-8)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);coutIthastwodistinctrealroots:
x1andx2endl;elserp=-b/(2*a);ip=sqrt(-d)/(2*a);coutIthastwocomplexroots:
endl;coutrp+ipiendl;coutrp-ipiendl;,2.1.1if语句,#include/例2-4#includeusingnamespacestd;intmain()doublea,b,c,d,x1,x2,rp,ip;coutabc;if(fabs(a)1e-8)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);coutIthastwodistinctrealroots:
x1andx2endl;elserp=-b/(2*a);ip=sqrt(-d)/(2*a);coutIthastwocomplexroots:
endl;coutrp+ipiendl;coutrp-ipiendl;,数据说明,2.1.1if语句,#include/例2-4#includeusingnamespacestd;intmain()doublea,b,c,d,x1,x2,rp,ip;coutabc;if(fabs(a)1e-8)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);coutIthastwodistinctrealroots:
x1andx2endl;elserp=-b/(2*a);ip=sqrt(-d)/(2*a);coutIthastwocomplexroots:
endl;coutrp+ipiendl;coutrp-ipiendl;,提示并输入系数,2.1.1if语句,#include/例2-4#includeusingnamespacestd;intmain()doublea,b,c,d,x1,x2,rp,ip;coutabc;if(fabs(a)1e-8)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);coutIthastwodistinctrealroots:
x1andx2endl;elserp=-b/(2*a);ip=sqrt(-d)/(2*a);coutIthastwocomplexroots:
endl;coutrp+ipiendl;coutrp-ipiendl;,不是二次方程,2.1.1if语句,#include/例2-4#includeusingnamespacestd;intmain()doublea,b,c,d,x1,x2,rp,ip;coutabc;if(fabs(a)1e-8)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);coutIthastwodistinctrealroots:
x1andx2endl;elserp=-b/(2*a);ip=sqrt(-d)/(2*a);coutIthastwocomplexroots:
endl;coutrp+ipiendl;coutrp-ipiendl;,a等于0浮点数的误差判断,2.1.1if语句,#include/例2-4#includeusingnamespacestd;intmain()doublea,b,c,d,x1,x2,rp,ip;coutabc;if(fabs(a)1e-8)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);coutIthastwodistinctrealroots:
x1andx2endl;elserp=-b/(2*a);ip=sqrt(-d)/(2*a);coutIthastwocomplexroots:
endl;coutrp+ipiendl;coutrp-ipiendl;,有根,2.1.1if语句,#include/例2-4#includeusingnamespacestd;intmain()doublea,b,c,d,x1,x2,rp,ip;coutabc;if(fabs(a)1e-8)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);coutIthastwodistinctrealroots:
x1andx2endl;elserp=-b/(2*a);ip=sqrt(-d)/(2*a);coutIthastwocomplexroots:
endl;coutrp+i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 CH 程序控制 结构