




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 C+的流程控制语句,本章主要内容: 1、C+语言的语句和程序结构 2、选择结构语句 3、循环结构语句 4、控制执行顺序的语句,2020/8/7,版权所有 南京理工大学 王芳,2,程序设计,概念:分析问题、确定算法、编写程序代码和程序调试的整个过程。 算法的常用表示方法:自然语言、流程图、结构化的流程图、伪代码等。,2020/8/7,版权所有 南京理工大学 王芳,3,选择结构语句if 语句,在C+语言中,if 语句有三种形式: 1、形式1 if (表达式) 语句 如果表达式的值为真(非零值),则执行语句,否则跳过语句,直接执行随后的语句。 语句可以是一条语句,也可以是复合语句。 如:求某
2、个数的绝对值,可描述为: if (num0) num=-num;,2020/8/7,版权所有 南京理工大学 王芳,4,2、形式2 if (表达式) 语句1 else 语句2 如果表达式的值为真,则执行语句1,否则执行语句2。语句1与语句2中至少有一个被执行,然后继续执行随后的语句。 语句1与语句2都可以是一条语句,或为用 括起来的复合语句。 如:求两个数的最大值: if (a1=a2) max=a1; else max=a2;,选择结构语句if 语句,2020/8/7,版权所有 南京理工大学 王芳,5,3、形式3 if (表达式1) 语句1 else if (表达式2) 语句2 else if
3、 (表达式3) 语句3 else 语句n+1 如果表达式1的值为真,则执行语句1,程序转至整个if 语句后继续执行;若表达式的结果为假,则判断表达式2的值。若表达式2的值为真,则执行语句2,然后程序也是跳转到整个if 语句的后面执行;若为假则判断表达式3的依此类推。 这个语句可以实现多分支选择结构的程序设计。,选择结构语句if 语句,2020/8/7,版权所有 南京理工大学 王芳,6,例:求三个数中的最大值 #include void main(void) int a1, a2, a3, max; cina1a2a3; if (a1=a2 ,选择结构语句if 语句,2020/8/7,版权所有
4、南京理工大学 王芳,7,if 语句的嵌套,在if 语句的“if语句块”和“else语句块”中还可以包含 if 语句。,if (表达式1) . . . . . . . else . . . . . . ,if (表达式3 ) . else .,if (表达式2 ) . else .,注意:if 和else的配对 C+语言规定:在嵌套的if 语句中,else子句总是与前面最近的、不带else 的if 相结合。,2020/8/7,版权所有 南京理工大学 王芳,8,例:将下列表达式用程序描述,请判断哪一个是正确的? -1x0,A、if (x!=0) if (x0) y=1; else y=-1; el
5、se y=0; B、y=0; if (x=0) if (x) y=1; else y=-1; C、if (x0) y=1; else y=0;,答案:A,2020/8/7,版权所有 南京理工大学 王芳,9,三目运算符:条件运算符,形式: 表达式1 ? 表达式2 : 表达式3 含义:当表达式1的值为非零(真)时,取表达式2的值为此条件表达式的值;当表达式1的值为零(假)时,取表达式3的值为条件表达式的值。 例如: if (a=b) max=a; else max=b; 可以写成: max = (ab) ? a : b 因此它是if ( ) else 语句的缩写形式。,2020/8/7,版权所有
6、南京理工大学 王芳,10,优先级: 算术运算符 关系运算符 逻辑运算符 条件运算符 赋值运算符 逗号运算符,三目运算符:条件运算符,条件运算符的优先级仅高于逗号运算符和赋值运算符,采用从右向左的运算顺序。,例如: ab?a:cd?c:d 相当于 ab?a:(cd?c:d),2020/8/7,版权所有 南京理工大学 王芳,11,switch 语句,switch结构与else if 结构是多分支选择的两种形式,它们的应用环境不同,else if结构用于对多条件并列测试,从中取一的情形;switch 结构用于单条件测试,从其多种结果中取一种的情形。 形式: switch (表达式) case 常量表
7、达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default:语句n+1 含义:当表达式的值与某一个case后面的常量表达式的值相等时,就执行case后面的语句,并将流程转移到下一个case继续执行,直至switch语句结束;若所有的case中的常量表达式的值都没有与表达式的值相匹配,则执行default后面的语句。,说明:1、switch语句中可以不包含default,且default并不限定于最后。2、为了在执行某个case分支后,使流程跳出switch结构,即终止switch语句的执行,总是把break语句作为每个case 分支的最后一条语句。,2020
8、/8/7,版权所有 南京理工大学 王芳,12,#include void main(void) int x=1, y=0, a=0, b=0; switch (x) case 1: switch (y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; couta=atb=bendl; ,结果:a=2 b=1,switch 语句,2020/8/7,版权所有 南京理工大学 王芳,13,for 语句,for语句的一般格式为: for (表达式1;表达式2;表达式3 ) 循环体语句 其中: 表达式
9、1:循环变量赋初值; 表达式2:循环条件,一般为关系表达式或逻辑表达式; 表达式3:循环变量增值,使循环趋于结束; 循环体语句:若由多条语句,一定要用括起来。,2020/8/7,版权所有 南京理工大学 王芳,14,for语句的执行过程,循环变量赋初值x=1,执行循环体语句,执行表达式3 x+,Y,N,例1: #inlude void main(void) int x; for(x=1;x=5;x+) coutx; ,2020/8/7,版权所有 南京理工大学 王芳,15,例2: #include void main(void) int x; for (x=25;x0;x-=5) coutx; ,
10、例3: #include void main(void) int x, y, s; for(x=0,y=0;x+y=10;+x,+y) s=x+y; couts; ,for 语句,注:循环变量既可自动增加,如例1;也可以为负值,如例2;而且循环变量还可以不只一个,如例3。,2020/8/7,版权所有 南京理工大学 王芳,16,在for循环中,有些表达式可以省略: 一、缺一项 1、for (;循环条件;循环变量增值) 2、for (循环变量赋初值;循环变量增值) 3、for (循环变量赋初值;循环条件;) 二、缺两项 1、for (;循环变量增值) 2、for (循环变量赋初值;) 3、for
11、(;循环条件;) 三、三项都缺 for (;) 注意:根据C+语言的语法规定,不论省略那项,原有的分号不能省略,至于那些被省略语句的功能,则应该用其它语句完成。,for 语句,可在for语句前赋初值,构成无穷循环,可用break结束,在循环体中使循环正常结束,2020/8/7,版权所有 南京理工大学 王芳,17,for循环的嵌套,例:#include void main(void) int i, j, k=0, m=0; for (i=0; i2; i+) for (j=0; j3; j+) k+; k-=j; m=i+j; cout“k=“kt“m=“mendl; ,2020/8/7,版权所
12、有 南京理工大学 王芳,18,while 语句,1、格式: while (循环条件) 循环体语句 2、含义: 当表达式为非零值(真)时,执行循环体语句。 3、特点: 先判断表达式,后执行语句。若条件不满足,循环体语句一次也不执行。 例:输出1到5之间的整数 #include void main(void) int x=1; while (x=5) coutxt; x+; ,while语句嵌套,和for语句类似,while语句也可以嵌套。 例:下面是一个猜字符的游戏。 #include void main(void) char ch, ch1; while (1) coutch; while (
13、ch!=d) coutch; coutch1; if (ch1=y|ch1=Y) break; ,2020/8/7,版权所有 南京理工大学 王芳,19,#include void main(void) char s; cin.get(s); while(s!=n) switch(s-2) case 0: case 1: couts; case 2: couts; break; case 3: couts; default: couts; break; cin.get(s); ,答案:223347,while循环和switch 语句,若从键盘上输入2347后,请说出输出结果是什么?,2020/8
14、/7,版权所有 南京理工大学 王芳,20,do-while语句用来实现直到型循环 格式: do 循环体语句 while (循环条件); 含义:当循环条件为非零值(真)时,执行循环体语句 和while 循环相比,如果循环条件开始就不符合要求,则while循环将一次也不执行,而do-while至少会执行一次循环语句。,do-while语句,对于do-while语句: 1、无论while后的表达式的值是什么,循环体总是先执行一次; 2、在循环体内应该改变while后的表达式中变量的值,使之最终能得到一个零值而退出循环。 3、do-while语句也能嵌套,它的特点和for、while语句相同。,202
15、0/8/7,版权所有 南京理工大学 王芳,21,break语句和 continue语句,一、break语句 格式:break; 作用:在switch语句中用来立即终止执行switch语句。在for、while、do-while语句中,break可用来跳出循环体,提前结束循环,不再执行剩余的若干次循环,而转去执行该循环后面的语句。但是若是多重循环,break语句的作用只能退出离break最近的一层循环。 二、continue语句(结束本次循环) 格式:continue; 作用:能使当前正在进行的循环(for, while, do-while)跳过continue;后的循环体语句,立即开始下一次循
16、环的判断。 三、break语句和continue语句的区别 continue语句只结束本次循环,而不是终止整个循环的执行。 break语句则是结束整个循环,不再判断执行循环的条件是否成立,2020/8/7,版权所有 南京理工大学 王芳,22,例、请写出程序运行结果 #include void main(void) int k=0; int c=1; do switch (c+) case 1: k+; break; case 2: k-; case 3: k+=2; break; case 4: k=k%2; continue; case 5: k=k*10; default: k=k/3;
17、k+; while(c7); cout“k=“kendl; ,程序执行过程如下:,2020/8/7,版权所有 南京理工大学 王芳,23,格式:goto 语句标号; 其中: 语句标号:用标识符表示,其命名规则和变量名相同,注意不能用整数作标号。 作用:使程序转到某一标号处。 1、限制goto 的使用,因为滥用goto 语句将使程序的流程变得无规律,难读易错。但是C+ 并不禁止goto语句的使用,因为有的情况下用goto语句更加自然、效率更高。,goto语句以及用goto语句构成的循环,2020/8/7,版权所有 南京理工大学 王芳,24,例如: for () for () for () if (
18、mistake) goto error; error: /* 进行错误处理的语句*/ 2、然而必须限制goto语句的使用,规定goto只能用于函数内部的同名标号处,只允许用它跳出循环体,而不允许跳进循环体,也不允许跳进switch 语句的内部。 3、break和continue不能用于if 语句和goto语句构成的循环体中。,goto语句以及用goto语句构成的循环,2020/8/7,版权所有 南京理工大学 王芳,25,例:用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根,f(x1),fx2),f(x3),x1,x3,x2,x4,再取(x1,x3)的中点x4,若f(x4)与f(x1)同号,则得到更小的含根区间(x3,x4),如此反复,当xn与xn-1之差小于给定的误差时,便是所求的近似根。,二分迭代法的思想是先取f(x)=0的两个粗略解x1和x2。若f(x1)与f(x2)符号相反,则方程f(x)=0在区间(x1,x2)中至少有一个根。若f(x)在区间(x1,x2)内单调,则(x1,x2)间应有一个实根。取 x3=(x1+x2)/2 并在x1与x2中舍去函数值与f(x3)同号者,x3与剩
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保值造粒机出售合同样本
- 公关服务协议合同样本
- 铝板幕墙工程安全技术交底
- 个体签劳务合同样本
- 燃气安全专项整治工作方案
- pep人教版小学英语五年级上册第五单元教案
- 冠状动脉粥样硬化性心脏病病人的护理
- 青马工程策划
- 2025年淘宝直播项目发展计划
- 买卖杯子合同样本
- 健康日用品设计与研发趋势
- 【化学】常见的盐(第1课时)-2024-2025学年九年级化学下册(人教版2024)
- 《罗秀米粉加工技术规程》 编制说明
- 2024年江苏省无锡市中考英语试卷
- 《湖南省房屋建筑和市政工程消防质量控制技术标准》
- 充电桩安全巡查记录表
- 《公路工程现浇泡沫聚合土应用技术规程》
- 2025届云南省民族大学附属中学高三(最后冲刺)数学试卷含解析
- 品管圈PDCA获奖案例-新生儿科运用PDCA循环缩短早产儿完全经口喂养过渡时间成果汇报
- 河流沿岸护栏安装工程协议
- 工程四新培训
评论
0/150
提交评论