1、 第7章 继承与派生 第8章 多态和虚函数 第9章 模板和异常处理 第10章 文件的输入输出 第11章 Visual C+编程基础目录页目录页 Contents page 第1章 绪论 第2章 数据类型和表达式 第3章 控制结构 第4章 复合数据类型 第5章 函数 第12章 MFC应用程序实例 第6章 类与对象 目 录 页第第3 3章章控制结构控制结构学习目标学习目标u 掌握选择结构的条件构成u 熟练掌握选择结构设计方法u 熟练掌握循环结构设计方法u 掌握控制转移语句的使用方法 目 录 页第第3 3章章控制结构控制结构3.1 选择结构3.1.1 if语句语句if语句有三种基本形式。语句有三种基
2、本形式。1.单分支单分支if语句语句格式格式:if(表达式表达式)语句;语句;功能:如果表达式的值为功能:如果表达式的值为“真真”(非(非0),则执行语则执行语句;否则不执行该语句。其流程图如图句;否则不执行该语句。其流程图如图3-1所示。所示。目 录 页第第3 3章章控制结构控制结构3.1 选择结构2.双分支双分支if语句语句格式格式:if(表达式表达式)语句语句1;else 语句语句2;功能:如果表达式的值为功能:如果表达式的值为“真真”(非(非0),则执行语则执行语句句1;否则执行语句;否则执行语句2。其流程图如图。其流程图如图3-2所示。所示。目 录 页第第3 3章章控制结构控制结构3
3、.1 选择结构3多分支多分支if 语句语句格式:格式:if(表达式表达式1)语句语句1 else if(表达式表达式2)语句语句2 else if(表达式表达式n)语句语句n else 语句语句n+1功能:功能:依此判断表达式的值,当出现某个值为真时,则执行其对应的语句,然后跳到整个依此判断表达式的值,当出现某个值为真时,则执行其对应的语句,然后跳到整个if语语句之外继续执行程序。如果所有的表达式均为假,则执行语句句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1,然后继续执行后续程序。如图然后继续执行后续程序。如图3-3所示。所示。目 录 页第第3 3章章控制结构控制结构3.1 选
4、择结构3多分支多分支if 语句语句 目 录 页第第3 3章章控制结构控制结构3.1 选择结构4使用使用if语句的注意事项语句的注意事项(1)if后面的表达式必须用圆括号括起来。后面的表达式必须用圆括号括起来。(2)每个表达式后面的语句如果不止一条语句时,必须用一对花括号每个表达式后面的语句如果不止一条语句时,必须用一对花括号“”括起来组成复合括起来组成复合语句;否则只能执行前面的一条语句。例如:语句;否则只能执行前面的一条语句。例如:if(ab)a+;b+else a=0;b=1;(3)表达式可以是任意类型的表达式可以是任意类型的C+语言合法表达式,除常见的算术表达式、关系表达式或语言合法表达
5、式,除常见的算术表达式、关系表达式或逻辑表达式外,也可以是其它表达式,如赋值表达式,甚至也可以是一个变量。例如:逻辑表达式外,也可以是其它表达式,如赋值表达式,甚至也可以是一个变量。例如:if(a=4);/赋值表达式赋值表达式if(a);/是一个变量是一个变量 目 录 页第第3 3章章控制结构控制结构3.1 选择结构3.1.2 if 语句的嵌套语句的嵌套所谓所谓if 语句的嵌套,就是在语句的嵌套,就是在if语句中又包含了一个或多个语句中又包含了一个或多个if语句。在语句。在if语句中可根据需要,语句中可根据需要,用用if语句的三种形式进行互相嵌套。一般形式如下语句的三种形式进行互相嵌套。一般形
6、式如下:1 嵌套在嵌套在if子句中子句中if(条件条件)if 语句语句 else 语句语句2;2 嵌套在嵌套在else子句中子句中if(条件条件)语句语句1;else if语句语句 目 录 页第第3 3章章控制结构控制结构3.1 选择结构3.1.3 switch语句语句switch 语句是一个多分支结构的语句,它所实现功能与多分支语句是一个多分支结构的语句,它所实现功能与多分支if语句很相似,但在大多数语句很相似,但在大多数情况下,情况下,switch语句表达方式更直观、简单、有效。语句表达方式更直观、简单、有效。1.switch语句的语法格式语句的语法格式switch()case :;bre
7、ak;case :;break;case :;break;default:;break;目 录 页第第3 3章章控制结构控制结构3.1 选择结构2switch语句执行过程语句执行过程switch语句执行过程可以用图语句执行过程可以用图3-4表示。表示。(1)首先计算首先计算switch后的表达式的值。后的表达式的值。(2)然后将结果值与然后将结果值与case后的常量表达式值比较,如果找到相匹配的后的常量表达式值比较,如果找到相匹配的case,程序就执行相应的语句程序就执行相应的语句序列,直到遇到序列,直到遇到break语句语句,switch语句执行结束;如果找不到匹配的语句执行结束;如果找不到
8、匹配的case,就归结到就归结到default处,执行它处,执行它的语句序列,直到遇到的语句序列,直到遇到break语句为止;如果没有语句为止;如果没有default,则不执行任何操作。,则不执行任何操作。目 录 页第第3 3章章控制结构控制结构3.1 选择结构3.使用使用switch语句的注意事项语句的注意事项(1)switch后面的后面的“表达式表达式”和和“常量表达式常量表达式”必须是整数类型或枚举类型,如必须是整数类型或枚举类型,如int、char、sbyte、ushort、short、uint、int、ulong、long。(2)case后的后的“常量表达式常量表达式”必须互异,不能
9、有重复,其中必须互异,不能有重复,其中default和和可以省略。可以省略。(3)switch语句中的语句中的case和和default的出现次序是任意的,且的出现次序是任意的,且case的次序不要求按常量表达式的大小顺的次序不要求按常量表达式的大小顺序排列。序排列。(4)case后面的常量表达式仅起语句标号作用,必须在运行前就是确定的,不能改变的。系统一旦后面的常量表达式仅起语句标号作用,必须在运行前就是确定的,不能改变的。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上break语句,以便结束语句,以便
10、结束switch语句。语句。(5)多个多个case的后面可以共用一组执行语句,也能执行多个的后面可以共用一组执行语句,也能执行多个case后面的后面的。目 录 页第第3 3章章控制结构控制结构3.2 循环语句循环语句是指在一定条件下,重复执行一组语句,它是程序设计中的一个非常重要也是非常基本循环语句是指在一定条件下,重复执行一组语句,它是程序设计中的一个非常重要也是非常基本的方法。的方法。C+提供了提供了3种循环语句,种循环语句,while,do-while和和for。3.2.1 while语句语句语法形式:语法形式:while()如果表达式为真如果表达式为真(true),则执行循环体语句。然
11、后重新计算表达式的值,并再次判断;如此反复,则执行循环体语句。然后重新计算表达式的值,并再次判断;如此反复,直到表达式的值为假(直到表达式的值为假(false),则退出循环结构。),则退出循环结构。While语句执行流程如图语句执行流程如图3-5(a)所示。所示。目 录 页第第3 3章章控制结构控制结构3.2 循环语句图图3-5 while语句示意图语句示意图 目 录 页第第3 3章章控制结构控制结构3.2 循环语句【例例3.6】利用利用while语句,计算语句,计算1+2+100的值,并输出计算结果。的值,并输出计算结果。#include iostream.hvoid main()int S
12、um,i;Sum=0;i=1;while(i=100)Sum+=i;i+;coutSum is Sumendl;图图3-5(b)是程序执行的示意图。是程序执行的示意图。目 录 页第第3 3章章控制结构控制结构3.2 循环语句3.2.2 do-while语句语句语法形式:语法形式:do while();先执行循环体语句,再判定表达式。若表达式的先执行循环体语句,再判定表达式。若表达式的值为非值为非0,则再次执行循环体语句,如此反复,直到表,则再次执行循环体语句,如此反复,直到表达式的值为达式的值为0结束循环,并转到下一条语句执行,如结束循环,并转到下一条语句执行,如图图所所示。示。图图3-6 d
13、o-while语句示意图语句示意图 目 录 页第第3 3章章控制结构控制结构3.2 循环语句3.2.3 for 语句语句C+的的for循环是循环语句中最具特色的。它功能较强、灵活多变和使用广泛。循环是循环语句中最具特色的。它功能较强、灵活多变和使用广泛。语法形式:语法形式:for(;)for循环语句的执行流程如图循环语句的执行流程如图3-7所示。所示。目 录 页第第3 3章章控制结构控制结构3.2 循环语句for循环的一些变化特点:循环的一些变化特点:(1)for循环语句的循环语句的“初始表达式初始表达式”和和“变量增值表达式变量增值表达式”可引入逗号运算符可引入逗号运算符“,”,这样可以,这
14、样可以对若干个变量赋初值或增值对若干个变量赋初值或增值。(2)for循环的三个表达式可以任意缺省,如果循环的三个表达式可以任意缺省,如果“条件条件”缺省就约定它的值是缺省就约定它的值是true。但不管哪个。但不管哪个表达式缺省,其相应的分号表达式缺省,其相应的分号“;”不能缺省。不能缺省。(3)可以在可以在for循环内部声明循环控制变量。循环内部声明循环控制变量。目 录 页第第3 3章章控制结构控制结构3.2 循环语句3.2.4 循环的嵌套循环的嵌套一个循环的循环体内包含另外一个循环语句称为循环的嵌套。如图一个循环的循环体内包含另外一个循环语句称为循环的嵌套。如图3-8是一个循环嵌套的例子。是
15、一个循环嵌套的例子。循环嵌套时,外层循环执行一次,内层循环从头到尾执行一遍。循环嵌套时,外层循环执行一次,内层循环从头到尾执行一遍。3种循环语句不仅可以自身嵌套,种循环语句不仅可以自身嵌套,而且还可以互相嵌套。而且还可以互相嵌套。目 录 页第第3 3章章控制结构控制结构3.3 break、continue和goto语句3.3.1 break与与continue 语句语句 一般格式一般格式:break;continue;功功 能能:(1)break:强行结束循环,转向执行循环语句的下一条语句。强行结束循环,转向执行循环语句的下一条语句。(2)continue:结束本次循环。对于结束本次循环。对于
16、while和和do-while循环,跳过循环体其余语句,转向循环终止条循环,跳过循环体其余语句,转向循环终止条件的判断;而对件的判断;而对for循环,跳过循环体其余语句,转向循环变量增值量表达式的计算,如图循环,跳过循环体其余语句,转向循环变量增值量表达式的计算,如图3-11所示。所示。目 录 页第第3 3章章控制结构控制结构3.3 break、continue和goto语句3.3.1 break与与continue 语句语句 目 录 页第第3 3章章控制结构控制结构3.3 break、continue和goto语句3.3.2 goto 语句和标号语句语句和标号语句格式格式:goto ;功能功
17、能:goto语句是无条件转移语句,程序执行到语句是无条件转移语句,程序执行到goto语句时,无条件地转移到语句时,无条件地转移到所指定的语所指定的语句并执行。句并执行。目 录 页第第3 3章章控制结构控制结构3.4 情景应用训练项目3.4.1 项目项目1:爱因斯坦阶梯:爱因斯坦阶梯问题问题【问题描述问题描述】爱因斯坦爱因斯坦阶梯问题:有一条长长的阶梯,如果你每步跨阶梯问题:有一条长长的阶梯,如果你每步跨2阶,那么最后剩阶,那么最后剩1阶;如果你每阶;如果你每步跨步跨3阶,那么最后剩阶,那么最后剩2阶;如果你每步跨阶;如果你每步跨5阶,那么最后剩阶,那么最后剩4阶;如果你每步跨阶;如果你每步跨6
18、阶,那么最后阶,那么最后剩剩5阶;只有当你每步跨阶;只有当你每步跨7阶时,最后才正好走完,一阶也不剩。请问这条阶梯至少有多少阶阶时,最后才正好走完,一阶也不剩。请问这条阶梯至少有多少阶(求所有(求所有3位阶梯数)?程序运行效果如图位阶梯数)?程序运行效果如图3-12所示。所示。图图3-12 阶梯问题阶梯问题 目 录 页第第3 3章章控制结构控制结构3.4 情景应用训练项目3.4.2 项目项目2:趣味古典数学问题:趣味古典数学问题【项目描述项目描述】有有一对兔子,从出生后第一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长大到第个月起每个月都生一对兔子。小兔子长大到第3个月后每个月个月后每
19、个月又生一对兔子。假设所有的兔子都不死亡,问每个月的兔子总对数为多少?程序运行效果如又生一对兔子。假设所有的兔子都不死亡,问每个月的兔子总对数为多少?程序运行效果如图图3-13所示。所示。图图3-13 趣味古典数学趣味古典数学 目 录 页第第3 3章章控制结构控制结构3.4 情景应用训练项目3.4.3 项目项目3:数学家维纳:数学家维纳(N.Wiener)年龄问题年龄问题【项目描述项目描述】美国美国数学家维纳数学家维纳(N.Wiener)智力早熟,智力早熟,11岁就上了大学。他曾在岁就上了大学。他曾在1935年年1936年应邀来中国清年应邀来中国清华大学讲学。华大学讲学。一一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我我年龄的立方是个年龄的立方是个4位数。我年龄的位数。我年龄的4次方是个次方是个6位数。这位数。这10个数字正好包含了从个数字正好包含了从0到到9这这10个数字,每个数字,每个都恰好出现个都恰好出现1次。次。”,请你推算一下,他当时到底有多年轻。,请你推算一下,他当时到底有多年轻。