循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt_第1页
循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt_第2页
循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt_第3页
循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt_第4页
循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章循环结构程序设计 4 1循环概述4 2用goto语句和if语句构成循环4 3while语句4 4do while语句4 5for语句4 6循环的嵌套4 7几种循环的比较4 8break和continue语句4 9程序举例 4 1循环概述 所谓循环即反复的意思 在C语言中指反复执行某些相同的操作 循环分为当型循环和直到型循环 其传统的流程图如图4 1 a 和 b 所示 其相应的N S流程图如图4 2 a 和 b 所示 当型循环指当条件成立时反复执行语句 即先判断后执行 而直到型循环指先执行语句然后判断条件是否成立 当成立时再执行语句 即先执行后判断 在C语言中可以用以下四种方法来实现循环 1 用goto语句和if语句构成循环 2 用while语句 3 用do while语句 4 用for语句 其中while语句和for语句可以实现当型循环结构 do while语句可以实现直到型循环结构 而用goto语句和if语句既可以实现当型循环结构也可以实现直到型循环结构 4 2用goto语句和if语句构成循环 用goto语句和if语句构成循环有两种格式 格式一 语句标号 if 条件表达式 goto语句标号 例4 1 这种用goto语句和if语句构成循环的语句执行过程为 先计算条件表达式的值 当条件表达式成立 非0 时 执行大括号中的语句或语句组 执行到goto语句时使程序又回到语句标号所指向的if语句 使得大括号中的语句反复执行 当计算出的条件表达式的值不成立 为0 时 程序跳出循环 执行大括号以下的语句 从它的执行过程 我们可以看出 它是一种当型循环 格式二 语句标号 if 条件表达式 goto语句标号 这种用goto语句和if语句构成循环的语句执行过程为 先执行大括号中的语句或语句组 当执行到if语句 先计算条件表达式的值 当条件表达式成立 非0 时 goto语句使程序又回goto语句所指向的语句标号所指向的语句 然后又执行大括号中的语句 使得大括号中的语句反复执行 当计算出的条件表达式的值为0时 程序跳出循环 执行大括号以下的语句 虽然它执行循环体的条件是条件表达式成立 从这一点看 它与一般的直到型循环不同 但从它的执行过程 我们可以看出 它也属于一种直到型循环 用这种结构编写程序 例题4 1可以改写为 main inti sum 0 i 1 loop sum sum i 标号名为loop i i 1 if i 100 gotoloop printf sum d sum 程序执行结果为 sum 5050 例4 2 使用格式一和格式二的循环不同点在于 第一种格式的循环 循环体内的语句可以不执行 而第二种格式的循环 循环体内的语句至少要执行一次 这里的循环体指语句标号和goto语句标号及中间所有语句组成的一个集合 其中语句标号是按标识符规定书写的符号 它的命名规则与变量名的命名规则相同 这在前面已经介绍过 语句标号放在某一语句行的前面 标号后加冒号 语句标号起标识语句的作用 语句标号必须与goto语句同处于一个函数中 C语言不限制程序中使用标号的次数 但各标号不得重名 在结构化程序设计中一般不主张使用goto语句控制循环结构 以免造成程序流程的混乱 使理解和调试程序都产生困难 一个使用goto语句较为合理的用法是跳出单循环或从多层的嵌套中跳出循环体 4 3while语句 While语句可以实现当型循环结构 其一般形式如下 while 表达式 语句 省略号代表的是循环体语句 当循环体是一条语句时 可以不用大括号 但当循环体是两条或两条以上语句时 一定要用大括号 其传统的流程图和N S流程图分别如图4 3 a 和 b 所示 执行过程如下 先计算表达式的值 当值为真 非0 时 执行循环体语句 执行完循环语句后 再返回计算机表达式的值 直到表达式的值为假 0 时 退出循环 执行while语句的下一条语句 其语句可以为空语句 简单语句或作为循环体部分的复合语句 例4 3 例4 4 例4 5 在使用while语句时 应注意以下几点 1 while语句中的表达式一般是关系表达式或逻辑表达式 只要表达式的值为真 非0 即可继续循环 2 循环体如包括有一个以上的语句 则必须用 括起来 组成复合语句 3 应注意循环条件的选择以避免死循环 4 允许while语句的循环体又是while语句 从而形成双重循环 4 4do while语句 do while语句可以实现直到型循环结构 其一般形式如下 do while 表达式 语句 省略号代表的是循环体语句 表达式是循环条件 其传统的流程图和N S流程图分别如图4 1 b 和4 2 b 所示 循环是在循环的尾部检验它的条件 而不是在头部 其执行过程如下 先执行循环体语句一次 再判断表达式的值 若为真 非0 则继续执行循环体语句 直到表达式的值为假 0 时才退出循环 do while语句和while语句的区别在于do while是先执行后判断 因此 do while语句至少要执行一次循环体语句 而while语句是先判断后执行 如果条件不满足 则一次循环体语句也不执行 一般用while语句所编写的程序也可以用do while来编写 例4 6 对于do while语句还应注意以下几点 1 在if语句 while语句中 表达式后面都不能加分号 而在do while语句的表达式后面则必须加分号 2 do while语句也可以组成多重循环 而且也可以和while语句相互嵌套 3 在do和while之间的循环体由多个语句组成时 也必须用 括起来组成一个复合语句 4 do while和while语句相互替换时 要注意修改循环控制条件 4 5for语句 for语句是C语言中所提供的功能最强 使用最为灵活的一种循环语句 特别适用于循环次数固定而循环条件不确定的情况 4 5 1for语句的一般形式 for语句的一般形式如下 for 表达式1 表达式2 表达式3 1 表达式1通常是用来给循环变量赋初值 一般是赋值表达式 也允许在for语句之外给循环变量赋初值 此时可省略该表达式 2 表达式2通常是循环条件 一般为关系表达式或逻辑表达式 也可以是其它表达式 3 表达式3通常可用来修改循环变量的值 一般是赋值表达式 三个表达式都是可选项 都可以省略 但特别提请注意的是 表达式1和表达式2后的分号 不能省略 for语句的执行过程如下 1 首先计算表达式1的值 2 再计算表达式2的值 若值为真 非0 则执行循环体语句一次 否则跳出循环 3 循环体语句执行完后 再计算表达式3的值 转 2 步去执行 在整个for循环过程中 表达式1只计算一次 表达式2和表达式3则可能计算多次 for语句的流程图见图4 6 有一点需要指出 for循环的条件检验总是在循环的头部进行的 这也就是说 当开始时条件为不成立 0 时 不执行循环体 例如程序段 x 10 for y 10 y x y printf d y printf d y 进入循环中 由于x等于y 循环没有被执行 由于条件表达式为假 因此不论循环体还是循环控制变量的一目加都没有被执行 所以y仍然是赋给它的值10 且在屏幕上显示值为10 for语句最主要的特点是 特别适合已知循环次数的循环语句 下面介绍一下for语句中循环次数的计算方法 根据for循环的循环变量的变化情况 循环次数的计算可以用公式进行计算 n int 终值 初值 步长 步长 其中 初值指循环变量的初始值 终值指循环变量满足条件的最终值 步长指循环变量每循环一次所变化的量 例如 循环语句for n 1 n 100 n 设n为整形变量 控制循环体反复执行的次数为n int 100 1 1 1 100又如 循环语句for n 100 n 0 n n 2 设n为整形变量 控制循环体反复执行的次数为n int 1 100 2 2 50 4 5 2for循环的变量 最常用的一种变量是使用逗号运算符使得两个或两个以上的变量共同实现对循环的控制 例如 下面例子使用变量x和y共同来控制循环 这两个变量都是在for语句的内部被初始化 for x 0 y 0 x y 10 x y getchar y y 0 subtracttheASCIIcodefor0fromy 这里逗号分隔了两个初始化语句 每次x增加1 重复循环 y值由键盘输入 x和y之和大于或等于10时 才能中止循环 这就需要将y值初始化为零 以便在第一次计算条件表达式的值时 它的值已经被定义了 如果y没有被定义 也许碰巧 或前面的程序用到过 它的值是10或大于10 这就使得条件为false 并退出循环 for循环还有另一种极有用的变体 在前面所提到的for语句的三个部分可以是C语言中任何有效的表达式 实际上 不必注意这些部分是用来干什么的 有些main中的for循的每个部分是由调用函数组成的 它们分别可以是提示用户的信息或从键盘上输入一个数 4 5 3无限循环 for循环最有价值的一种用法是建立无限循环 由于构成for循环的三个表达式都是没有被要求 因此可以运用空的条件表达式而使得循环无休止地进行下去 例如 for printf thisloopwillrunforever n 有一点必须强调 for循环中的语句可以是空语句 但不能省略分号 即for语句必须有两个分号 4 5 4无循环体for循环 正像C语言句法所定义的那样 一条语句可以是空语句 这就是说 for循环体 或其他循环形式 都可以是空语句 这个事实可用来改善某些算法的效率以及产生时间延迟循环 在编程过程中经常需要给一个输入流保留空间 例如 一个数据库可能要求查询一条信息 如 showallbalancelessthan40000 那么 数据库需要查询每个字符 这些字符是无空格地逐个被放置在这条信息中的 即 数据库输入处理程序识别 show 而不是 show 为一条命令 例4 7 例4 8 例4 9 在使用for语句中要注意以下几点 1 for语句中的各表达式都可省略 但分号间隔符不能少 如 for 表达式 表达式 省去了表达式1 for 表达式 表达式 省去了表达式2 for 表达式 表达式 省去了表达式3 for 省去了全部表达式 2 在循环变量已赋初值时 可省去表达式1 如省去表达式2或表达式3则将造成无限循环 这时应在循环体内设法结束循环 3 循环体可以是空语句 例如 从键盘输入一行字符然后逐个输出每一个字符 4 for语句也可与while do while语句相互嵌套 构成多重循环 4 6循环的嵌套 一个循环体内的语句又包含另一个完整的循环结构 称为循环嵌套 如果内嵌的循环体中还包含完整的循环 这就构成了多层循环 三种循环语句 while for do while 可以相互嵌套 例如 以下几种均为合法的循环嵌套 1 for语句和while语句构成的循环嵌套 for while 2 do while语句和for语句构成的循环嵌套 do for while 3 do while语句和while语句构成的循环嵌套 while do while 4 for语句和for语句构成的循环嵌套 for for 例4 10 例4 11 4 7几种循环的比较 1 四种循环都可以用来处理同一问题 一般情况下它们可以互相代替 但一般不提倡使用goto型循环语句 2 while和do while循环 只在while后面指定循环条件 在循环体中包括应反复执行的操作语句 包括使循环趋于结束的语句 如i 或i i 1等 for循环可以在表达式3中包含使循环趋于结束的操作 甚至可以将循环体中的操作全部放到表达式3中 因此for语句的功能更强 凡用while循环能完成的 用for循环都能实现 3 用while和do while循环时 循环变量初始化的操作应在while和do while语句之前完成 而for语句可以在表达式1中实现循环变量的初始化 4 while和for循环是先判断表达式 后执行语句 而do while循环相反 是先执行语句 后判断表达式 而goto循环则两者兼有 5 对while循环 do while循环和for循环 可以用break语句跳出循环 用continue语句结束本次循环 而对使用goto语句和if语句构成的循环 不能使用break语句和continue语句进行控制 4 8break和continue语句 4 8 1break语句 break语句有两种用法 第一种用法是在switch语句中 跳出switch结构 转去执行后面的程序 其用法在第三章中已经介绍 第二种用法是 绕过一般的循环条件检验 立即强制地中止一个循环 下面介绍第二种用法 break语句的一般形式如下 break 当一个循环体内的break语句被执行时 循环立即中断 并转向循环体外的下一条语句 4 8 2continue语句

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论