




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C 的控制语句 第3章 2 3 1C 语句概述 程序是由对计算机要执行的一系列操作和所操作的对象 数据所组成 也就是说程序包含数据描述和数据操作两部分 数据描述是由数据定义部分来实现的 而数据操作则是由语句来实现的 语句是C 程序中最小的可执行单位 用来向计算机系统发出操作指令 一条C 语句经编译后产生若干条机器指令 3 C 中的语句按照其功能大体可以分为如下4类 1 声明语句又称为说明语句 主要是用来对程序中出现的各种名称进行声明 这些名称可以是表示变量 常量 函数 结构体类型 类 对象等实体的标识符 在C 中 一个名称在使用之前必须先被声明 声明的目的是告诉编译器某个名称所指代的实体类型 声明语句可分为如下3种 4 1 变量声明 charc1 c2 inta1 10 a2 2 常量声明 constintSIZE 50 constdoublePI 3 14159 3 类型声明 enumsex MALE FEMALE classBook 声明语句可以出现在任何其他语句能够出现的地方 5 2 表达式语句表达式 使用表达式语句可以进行如下操作 1 赋值操作 inta b c a 10 b 20 c a b 2 复合赋值操作 inta 10 b 20 c 30 a b a b c 3 自增 自减操作 inti 1 i i 4 函数调用操作 sqrt 16 abs 2 6 3 空语句空语句是一种概念 C 的空语句仅由分号 构成 在编译时不产生任何指令 在执行时不产生任何操作 空语句常用于以下情况 1 构成标号语句 标识程序中相关位置 2 循环语句中的空循环体 3 模块化程序中未实现的模块及暂不连入的模块 7 4 复合语句复合语句是用一对花括号 括起来的语句序列 又称为语句块 复合语句在语法上等效于一个单一语句 在程序中凡是可以使用单一语句的地方都可以使用复合语句 复合语句常用在if语句的分支 switch语句的执行部分 while do while和for语句的循环体中 使用复合语句应注意以下问题 1 花括号必须配对使用 2 花括号外不要加分号 例如 temp a a b b temp 8 3 2C 程序的3种基本结构 9 1 顺序结构 在顺序结构中 程序是按照语句的书写顺序依次执行的 语句在前的先执行 语句在后的后执行 显然 这种程序结构非常简单 只能满足设计简单程序的要求 例3 1 计算直角三角形斜边的长度 10 2 选择结构 否成立来选择执行不同的程序段 也就是说 这种程序结构能有选择地执行程序中的不同程序段 因此 这种结构也可称为分支结构 C 中能够实现分支结构的语句有if语句 if else语句 if elseif语句和switch语句 11 3 循环结构 在循环结构中 程序根据判断条件是否成立来决定是否重复执行某个程序段 这样可以避免重复书写需要多次执行的语句 从而减小了程序的长度 C 中可以实现循环结构的语句有while语句 do while语句和for语句 12 3 3if语句 if语句是最常用的一种分支语句 也称为条件语句 它可以根据所给定条件的满足与否选择执行不同的程序段 if语句有3种形式 单分支if语句 双分支if语句和多分支if语句 13 最简单的if语句形式 if 表达式 语句其执行过程为 先计算关键字if后面的表达式的值 若为真 则执行if后的 语句 部分 否则跳过该 语句 部分 不管是否执行 语句 部分 最后都要到 语句 部分的后面 继续执行程序的其他部分 3 3 1单分支if语句 14 注意 1 表达式外的括号不能省略 2 在 if 表达式 后不能加分号 如果加了 则表示if的内嵌语句为空语句 3 关键字if的后面的表达式可以是任意的表达式 只要表达式的值为非0 C 就将表达式的值当真值处理 否则当假值处理 4 if语句的内嵌语句可以是单一语句 也可以是复合语句 复合语句要用花括号 括起来 5 尽量使if语句的内嵌语句比if语句缩进 这是良好的编程书写风格 15 intmain intx 0 y 2 if x 0 y cout x y endl return0 运算结束后 变量y的值为多少 16 其一般格式为 if 表达式 语句1else语句2其执行过程为 先计算关键字if后面的表达式的值 若为真 则执行语句1 否则执行语句2 即在任何时候 语句1和语句2不可能被同时执行 某一时刻只能执行其中的一个语句 不管程序执行语句1还是执行语句2 最后都要跳到语句2的后面 接着执行程序中后面的语句 3 3 2双分支if语句 17 注意 1 语句1 语句2既可以是单一语句 也可以是用花括号 括起来的复合语句 2 关键字else必须与关键字if配对使用 不能单独使用 即不能只有else 而没有相应的if 也就是说 如果有if 则不一定有相应的else 但如果有else 则必须有if与其相对应 配对 3 else必须处在if的后面 例3 2 输入两个整数 按从小到大的顺序输出这两个数 18 多分支if语句是if语句的嵌套结构 其一般形式为 if 表达式1 语句1elseif 表达式2 语句2 else语句n 1其执行过程为 按从上到下的顺序依次判断各表达式的值 若发现哪个表达式的值为真 则执行相应的语句 并跳过剩余的语句 若所有表达式的值均为假 则执行最后的else语句 3 3 3多分支if语句 19 例3 3 输入学生的成绩score 按分数输出其等级 score 90为优 90 score 80为良 80 score 70为中等 70 score 60为及格 score 60为不及格 20 3 3 4if语句的嵌套 一般形式如下 21 使用if语句的嵌套时应注意以下几个问题 1 内嵌if语句必须完全包含在外层的if子句或else子句中 即外层if语句和内层if语句间的关系是包含与被包含的关系 不能出现交叉的情况 2 通常情况下 else子句总是与上面离它最近的 尚未配对的if语句相匹配 3 如果if与else的数目不一样 为实现程序设计者的意图 可以加大括号来确定if与else的配对关系 22 例3 4 设有以下分段函数 编写程序 输入自变量x的值 输出函数y的值 23 3 4switch语句 switch语句是多分支语句 虽然多分支if语句也可以实现多分支结构 但当需要判断的条件较多时 程序显得过于冗长 而且可读性差 在C 中 使用switch语句可以更方便 更简洁地实现多分支结构 24 switch语句的一般形式为 switch 表达式 case常数1 语句1 break case常数2 语句2 break case常数n 语句n break default 语句n 1 switch语句的执行过程是 1 计算switch语句后面的表达式的值 当表达式的值与某一个case后面的常量的值相等时 就执行此case后面的语句 若所有的case中的常量的值都没有与表达式的值匹配的 就执行default后面的语句 当没有default语句时 则什么都不执行 2 执行完一个case后面的语句后 程序执行的流程转移到下一个case继续执行 25 例3 5 输入学生的成绩score 按分数输出其等级 score 90为优 90 score 80为良 80 score 70为中等 70 score 60为及格 score 60为不及格 对switch语句的几点说明 1 switch后面括号内的表达式 可以是任意类型的 2 常数1 常数n必须互不相同 否则就会出现互相矛盾的现象 且每一常数后面要有冒号 3 各case和default的次序可以任意 并不影响程序的执行结果 4 语句1 语句n 1可以为复合语句 但可以不用花括号括起来 程序会自动执行本case后面的所有语句 当然加上花括号也可以 26 5 在switch语句中出现的break语句并不是必需的 这要根据程序的需要来决定 在这里 break语句的作用是跳出switch语句 如将 例3 5 改为 switch a case10 case9 cout Excellent endl case8 cout Good endl case7 cout Right endl case6 cout Pass endl default cout Failed endl 27 6 各case后面必须是常数 而不能是变量或表达式 7 多个case可以共用一组执行语句 28 3 5循环语句 在程序设计中 经常需要根据给定的规则进行一些重复的操作 例如 求若干个数的和 对序列中的若干个数进行排序等 这些运算的特点是 每次的运算操作是相同的 只是每次参加运算的数据发生了变化 C 提供了3种循环结构 while循环语句do while循环语句for循环语句 29 3 5 1while循环语句 while语句的一般形式为 while 表达式 循环体 该语句的执行过程是 首先判断while后面的表达式的值 若表达式的值为真 则执行while的内嵌语句 即循环体 一次 然后重复以上过程 直到表达式的值为假时 才退出循环 接着执行循环体语句后面的其他程序语句 30 使用while语句要注意以下几点 1 如果循环体包含一条以上的语句 则应该用花括号括起来 以复合语句的形式出现 2 注意定义循环变量的初始值和判断条件的边界值 3 在循环体中要对循环控制变量的值进行修改 以使循环趋向结束 要退出一个死循环 可以按住键盘上的Ctrl Break键 31 do while语句的一般形式为 do 循环体 while 表达式 该语句的执行过程为 首先执行do while的内嵌语句 即循环体 一次 然后再判断while后面的表达式的值 若表达式的值为真 则重复执行do while的内嵌语句 如此反复 直到表达式的值为假时 循环结束 继续执行while后面的其他程序语句 3 5 2do while循环语句 32 注意 在循环体相同的情况下 while和do while语句的功能基本相同 二者的区别在于 当循环条件一开始就为假时 do while语句中的循环体至少会被执行一次 而while语句则一次都不执行 33 34 for循环语句的一般格式为 for 表达式1 表达式2 表达式3 循环体 该语句的执行过程是 1 执行表达式1 2 执行表达式2 若表达式2的值为真 则执行for语句的内嵌语句 即循环体 然后执行第 3 步 若表达式2的值为假 则循环结束 执行第 5 步 3 执行表达式3 4 返回继续执行第 2 步 5 循环结束 执行for语句循环体后面的其他程序语句 3 5 3for循环语句 35 for语句的书写格式非常灵活 主要表现在以下几个方面 1 表达式1 可以省略 但分号不能省 如 n 1 for n 100 n sum sum n 2 表达式 可以省略 这时for语句不判断循环条件 构成死循环 如 for n 1 n sum sum n 3 表达式3 可以省略 但循环体中应有使循环趋于结束的语句 如 for n 1 n 100 sum sum n n 4 表达式1 3可以同时省略 只给出循环条件 如 n 1 for n 100 sum sum n n 36 5 表达式1 2 3均可以同时省略 这显然也构成了死循环 如 for 6 表达式1 2 3均可以是任何类型的C 表达式 表达式1 3可以是与循环变量无关的表达式 如 intm n 1 for sum 0 n 100 m sum sum n n 表达式1 3也可以是逗号表达式 如 for n 1 sum 0 n 100 n sum sum n 或for n 1 n 100 n n sum sum n 另外 表达式2 可以是关系表达式 逻辑表达式 数值表达式 字符表达式等 如 n 100a b 37 在一个循环的循环体中又包含另一个循环语句 称为循环嵌套 以下几种都是合法的循环嵌套 3 5 4循环语句的嵌套 38 注意 1 循环嵌套时 外层循环和内层循环间是包含关系 即内层循环必须被完全包含在外层循环中 而不能出现交叉的情况 2 当程序中出现循环嵌套时 程序每执行一次外层循环 其内层循环必须循环所有的次数 即内层循环结束 后 才能进入到外层循环的下一次循环 39 例3 9 输出 九九表 程序说明 1 由于程序中使用了输入输出流的控制符setw 4 和setiosflags ios left 因此需要包含相应的头文件iomanip setw 4 的作用是控制下一个被输出数据所占的实际位数为4 不足的位数补空格 setiosflags ios left 的作用是控制下一个被输出数据靠左输出 2 外层循环控制的所输出的行数 即9行 3 内层循环控制的是每一行中所输出的数据组的个数 其具体的个数是由其外层循环来控制 如 j i 40 1 三种循环语句都可以用来处理同一个问题 一般情况下它们可以相互代替 2 while和for语句是先判断循环条件 后执行循环体 do while语句是先执行循环体 后判断循环条件 3 for语句功能最强 可以完全取代while和do while语句 4 while和do while语句中循环变量初始化应该在循环前提前完成 如n 1 并在while后指定循环条件 如while n 100 循环体中要包含使循环趋于结束的语句 如n 而for语句可把这些操作一起放在for语句当中 如for n 1 n 100 n 3 5 5三种循环语句的比较 41 3 6限定转向语句 在前面介绍的C 的3种循环语句中 都是以表达式的值为假作为循环结束条件的 但在程序设计中 有时希望能够直接控制程序流程的转移 这就需要用到跳转语句 C 提供了四种跳转语句 goto语句 break语句 continue语句和return语句 42 3 6 1goto语句 goto语句又称为无条件转向语句 其一般形式为 goto语句标号 其中 语句标号要遵循标识符的命名规则 不能用整数来做标号 goto语句有两种用途 与if语句一起构成循环 从循环体中转跳到循环体外 43 goto语句的缺点是破坏了程序的结构化 使程序流程无规律 可读性差 因此在程序设计时不提倡使用goto语句 但是因为C语言中也有这种语句 所以就简单介绍一下它的使用 目的就是使读者能够读懂别人写的含有goto语句的程序 44 3 6 2break语句 break语句又称为跳出语句 它的一般形
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年湖北三支一扶考试试题及答案
- 四史选修考试题及答案
- 物业收费培训课件
- 2025年智慧城市网络安全技术解决方案服务合同
- 2025-2030中国智能交互平板市场发展趋势与及投资策略建议报告
- 工程创优培训课件
- 排水系统动力与能源管理方案
- 2025-2030中国封堵器输送系统行业盈利动态与发展趋势预测报告
- 无人机基地安全防护与应急方案
- 高速公路路面施工排水方案
- 四川省低空经济工作报告
- 2024-2025年第三方海外仓行业分析与展望报告-亿邦动力
- 企业降本增效课件
- 汉密尔顿抑郁量表(HAMD)
- 2025年锅炉检验员资格考试试卷:锅炉检验员考试模拟试题与解析
- 淋巴瘤健康教育课件
- 《Sketch Up 软件运用》课件(共九章)
- 煤灰管道清理方案(3篇)
- 电信营业员的理论考试题及答案
- 2025年河北大学版(2024)小学信息科技三年级(全一册)教学设计(附目录 P179)
- 安保技能活动方案
评论
0/150
提交评论