C语言程序设计电子教案.ppt

上传人:tia****nde 文档编号:6758624 上传时间:2020-03-03 格式:PPT 页数:31 大小:764KB
返回 下载 相关 举报
C语言程序设计电子教案.ppt_第1页
第1页 / 共31页
C语言程序设计电子教案.ppt_第2页
第2页 / 共31页
C语言程序设计电子教案.ppt_第3页
第3页 / 共31页
点击查看更多>>
资源描述
第5章循环结构程序设计 5 1while循环语句 5 2do while循环语句 5 3for循环语句 5 4多重循环 5 5break语句和continue语句 5 6goto语句和标号 5 7程序举例 教材上的第二章2 5中的一部分 2 5 5 5 1while循环语句 格式1 1 格式 图5 1while循环 2 功能图 3 执行过程 先计算while后面圆括号内表达式的值 如果其值为 真 非0 则执行语句部分 即循环体 然后再计算表达式的值 并重复上述过程 直到表达式的值为 假 0 时 循环结束 注意 while循环中的表达式一般是关系表达式 如i 100 或逻辑表达式 但也可以是数值表达式或字符表达式 此时其值非零即为 真 其值为零即为 假 while 表达式 即条件 复合语句 即循环体 例5 1利用while语句实现 从键盘输入n n 0 个数 求其和 图5 2求n个数的和的程序框图 细框 输入 处理 输出 编程粗框三部曲 include includevoidmain inti n x sum i 1 sum 0 定义计数 累加器 printf Input cout n while i x sum sum x 循环求和 i 循环计数 printf nsumis d n sum cout endl sumis sum endl 运行结果 Input 6 123421195sumis 73 解 设计一个计数变量 器i 用以计算循环的次数 其初始值设为1 设计一个求和变量 累加器sum 初始值sum 0 在循环中 每输入一个数x就累加上去 sum sum x 注意 程序中黑色的为C语言 蓝色的为C 语言 例5 2从键盘连续输入字符 直到输入 回车 符为止 统计输入的字符个数 图5 3统计输入字符的个数的程序框图 include voidmain charch intlen 0 字符计数变量 器初始化puts Typeinasentence thenpress n while ch getch r putchar ch 将刚键入的字符输出len printf nSentenceis dcharacterslong n len 运行结果 Typeinasentence thenpressthisisasentence Sentenceis19characterslong 包含空格 赋值表达式 5 2do while循环语句 格式2 1 格式 图5 4do while循环 2 功能图 3 执行过程 先执行后判定 先执行循环体中的语句 然后计算表达式的值 若表达式的值为 真 非0 则再次执行循环体 如此重复 直至表达式的值为 假 0 时结束循环 注意 与while语句 先判定后执行 比较 例5 3利用do while语句重做例5 1 do 语句块 即循环体 while 表达式 图5 5求n个数和的程序框图 include voidmain inti n k sum i 1 sum 0 printf Inputn scanf d 5 3for循环语句1 格式 图5 6for循环 2 功能图 for 表达式1 表达式2 表达式3 语句块 即循环体 3 执行过程 1 首先求解表达式1 一般为对循环变量赋初值 如i 1 2 求解表达式2 一般为判断循环变量超过终值 如i 50 若其值为 真 非0 则执行循环体中的语句 然后执行第 3 步 若为 假 0 则结束循环 转至第 5 步 3 求解表达式3 一般为对循环变量确定步长 如i i 1 4 至第 2 步重复执行 5 执行for循环语句的下一语句 例如 for i 1 i 50 i sum sum i for语句可与while语句等价 表达式1 while 表达式2 语句 表达式3 例5 4利用for语句重做例5 1 includevoidmain inti n k sum 0 printf Inputn scanf d 运行结果 Inputn 6 711205219 Sum 64 for语句最简单的应用形式 也是最容易理解的形式 for 循环变量赋初值 循环条件 循环变量增值 语句块 循环体 或 i 例5 5计算1至50中是7的倍数的数值之和 include voidmain inti sum 0 定义循变和累加器for i 1 i 50 i if i 7 0 sum i printf sum d n sum 运行结果 sum 196 说明 1 表达式3的增量 此例为正方向 或减量 负方向 如此例可改 for i 1 i 1 i 与循环变量的初值和终值有关 2 for语句的循环次数是可计算的 而while语句的循环次数一般是不可计算的 按条件循环 实例见 VC 实例 一般程序 基本循环编程 求a aa aaa 和 C 级数 方一循环方二数组 终值初值 步长 1 循环次数 int 比较 对循环次数确定的用for循环语句 对循环次数不确定的用while循环语句 使用条件 5 4多重循环或循环嵌套 当一个循环体内又包含另一个完整的循环结构时 称为多重循环或循环嵌套 其循环结构可用上述三种循环语句的任意一种 例如 下面是两种循环嵌套的示意图 1 while while 2 for do while 外循环 内循环 3 for i 1 for j 1 说明 循环嵌套中的各循环变量不能同名 而并行循环的循环变量可同名 对循环嵌套 当内循环循环完毕时 外循环才开始下一轮循环 此时 内循环又从头开始循环 故内循环的总次数为内外循环次数之积 for i 1 for j 1 for i 1 for i 1 for i 1 i 10 i for j 1 j 10 j 外循环循环10次 内循环循环10 10 100次 例5 6输出如下页的九九表 循环9次输出1 9的表头 外循环控制9行 乘数i 内循环控制9列 被乘数j 若是第9列 则换行 否则续行输出 应改为 includevoidmain i j 改内循环的初或终值为外循环的循变的函数及输出格式 如 该内循环控制语句为for j 1 j i j 则为左下三角形 实例见 VC 实例 一般程序 基本循环编程 九九乘法表 每个元素值为i j 5 5break语句和continue语句5 5 1break语句1 格式 break 2 功能 跳出 或终止 它所在的最近的循环语句或switch结构 3 注意问题 1 break语句只能用于switch结构或循环结构中 且多和if语句配用 例在程序中有下列语句 if break 则此时的if语句一定位于循环体中或switch结构中 break语句跳出的也不是if语句 而是跳出包含此if语句的循环结构或switch结构 2 在循环语句嵌套使用的情况下 break语句只能跳出 或终止 它所在的循环或它最近的循环语句 有循环嵌套时 而不能同时跳出 或终止 多层循环 如 for for break 跳至 例5 7计算r 1到r 10间的圆面积 直到面积area大于100为止 definePI3 1415926 includevoidmain intr floatarea for r 1 r100 break printf r dareais f n r area 运行结果 r 1areais 3 1415930r 2areais 12 566370r 3areais 28 274334r 4areais 50 265480r 5areais 78 539818 问题 1 此例实际循环六次 即计算了六次 第六次因area 100而跳出循环 但输出了五次 2 若改题为 计算r 1 2 3 的圆面积 直到面积area大于100为止 则只能用 while 语句 同学们自编 5 5 2continue语句continue语句的作用是结束本次循环 即跳过循环体中下面尚未执行的语句 直接进行下一次是否执行循环的判定 continue语句的一般形式如下 continue 其执行过程是 终止当前这一轮循环 即跳过循环体中位于continue后面的语句而立即开始下一轮循环 对于while和do while来讲 这意味着立即执行条件测试部分 而对于for语句来讲 则意味着立即求解表达式3 例5 8输出100到150之间不能被3整除的数 要求一行输出10个数 includevoidmain intn i 0 for n 100 n 150 n if n 3 0 continue printf 4d n i 每行的列数计数if i 10 0 printf n 运行结果 100101103104106107109110112113115116118119121122124125127128130131133134136137139140142143145146148149 if n 30 printf 4d n i 每行的列数计数if i 10 0 printf n 等价 5 6goto语句和标号goto语句为无条件转向语句 程序中使用goto语句时要求和标号配合 它们的一般形式为 goto标号 标号 语句 C语言规定 goto语句的使用范围仅局限于函数内部 不允许在一个函数中使用goto语句把程序控制转移到其它函数之内 一般来讲 goto语句可以有两种用途 1 与if语句一起构成循环结构 2 退出多重循环 例 gotolabel1 label1 语句 5 7程序举例例5 9用公式求出 的近似值 直到最后一项的绝对值小于10 6为止 具体程序如下 include includevoidmain ints 定义每项的变量floatn t pi 定义每项 n 每项分母 t 每项 pi t 1 pi 0 n 1 0 s 1 初始化 while fabs t 1e 6 当每项的绝对值不小于10 6时循环处理 pi pi t 累加下一项n n 2 准备下一项分母s s 准备下一项的符号t s n 求出下一项t pi pi 4 求出 printf pi 10 6f n pi 运行结果 pi 3 141594 实例见 VC 实例 一般程序 C 应用举例 双重循环 下的 c 双重循环求素数 和 双重循环求完数 问题 1 pi pi t 和n n 2 顺序调换可否 2 s s 和t s n 顺序调换可否 例5 10从键盘输入一个大于2的整数n 判断n是不是素数 include include voidmain intn k i flag 0 定义是否素数标志do 保证 反复 输入大于2的整数n printf Inputanumber scanf d i 从2到k循环判断是否有整除 素数的定义 某个整数n是素数 则它不能被2至 n整除 n为整数 k为循环上界 i为循环变量 if n i 0 flag 0 break 有一数能整除就不是素数 不再循环 if flag 等价于 flag 1 printf disaprimenumber n n else printf disnotaprimenumber n n 运行结果 Inputanumber 35 35isnotaprimenumber 注意 初始设素数标志为是素数 flag 1 好处理 若设素数标志为不是素数 flag 0 不好处理 因要判定都不能整除 例5 11用牛顿迭代法求方程2x3 4x2 3x 6 0的根 要求误差小于10 5 从图5 7可以看出 因此 令f x 2x3 4x2 3x 6 可写成以下形式 f x 2x 4 x 3 x 6 图5 7用牛顿迭代法求方程的根 具体程序如下 include include voidmain floatx x0 f f1 printf Enterthefirstapprochx scanf f while fabs x x0 1e 5 printf Therootofequationis 10 7f n x 运行结果 Enterthefirstapprochx 1 5 Therootofequationis 2 0000000例5 12从键盘输入4个9以内的数字字符 将其转换为4位十进制数后显示出来 分析 1 将每个数字字符c变成对应的数字 即将以ASCII码表示的数字字符变成一位十进制数 方法为 c 0 如c 8 时 c 0 8 转换中若遇非 0 9 字符则结束转换 2 将每次变换的一位十进制数 从高位开始 按位加权 变成多位的十进制数 放在变量data中 如输入1 2 3 4 则结果应是按 d格式显示的1234 具体程序如下 include include voidmain charc inti data 0 printf Inputchar for i 0 i 9 判断输入字符是否在 0 9 范围内 break data data 10 c 0 计算当前data值 printf data d n data 运行结果 Inputchar 1463 data 1463 本章作业 1 求100至1000中能被5整除且是偶数的个数及其和 2 求 3 100之间的素数 若M是素数 则M不可被2 M之间的数整除
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!