




已阅读5页,还剩138页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序设计龙燕 第3章三种基本控制结构 3 5顺序结构程序设计3 6选择结构程序设计3 7循环结构程序设计3 8辅助控制语句 顺序结构按照书写次序依次执行的语句 顺序结构的流程图和N S图 顺序结构的操作 1 先定义变量 向各变量中输入需要加工处理的数据 2 利用各种运算进行数据计算 3 输出数据结果 例3 15 从键盘输入某个分钟数 将其转换成用小时和分钟表示 并显示输出 includeintmain intall minutes 定义变量 inthours intminutes printf 请输入总的分钟数 输入值 scanf d 习题2 4从键盘读入矩形的两个边长 输出矩形的面积 includeintmain intlength 定义变量 intwidth intarea printf 请输入矩形的长度 输入值 scanf d 第3章三种基本控制结构 3 5顺序结构程序设计3 6选择结构程序设计3 7循环结构程序设计3 8辅助控制语句 选择结构 分支 单分支 双分支 多分支 让计算机做判断 一 单分支选择结构 一 单分支 计算机对某个表达式做判断 若为 真 则执行语句块i 否则什么也不执行 单分支结构的流程图和N S图 单分支语句 if 表达式 语句组执行过程是 如果表达式为 真 则执行语句组1 例如 如果x大于y成立 则打印输出x的值 if x y printf d x 二 双分支 计算机对某个表达式做判断 若为 真 则执行语句块i 否则执行语句块j 双分支结构的流程图和N S图 在C语言中 用if语句实现双分支结构 双分支语句 if 表达式 语句组1else语句组2执行过程是 如果表达式为 真 则执行语句组1 否则执行语句组2 例如 如果x大于y成立 则打印输出x的值 否则打印输出y的值 if x y printf d x elseprintf d y 说明 1 if语句中的 表达式 可以是逻辑表达式 关系表达式 常量 变量等 例如 if a b x y printf a b x y 2 表达式的类型可以是任意的数值类型 例如 if 5 printf yes if a printf d a 3 注意等价的表达式形式 例如 intx if x if x 0 是等价的 if x if x 0 也是等价的 4 语句组可以是单个语句 也可以是用花括号 括起来的复合语句 例如 if price 100 printf 买一个 printf 再买一个 else printf 不买 printf 真的不买 若写为 if price 100 printf 买一个 printf 再买一个 elseprintf 不买 printf 真的不买 编译器会将if语句解释为单独的if结构 若price小于100 则执行printf 买一个 否则跳过这个语句 然后执行printf 再买一个 编译器会因为找不到与else匹配的if 而报错 因此若if或else中含有多个语句时 要用一对大括号 括起来 例3 7 输入两个实数 按代数值由小到大的次序输出这两个数 例3 8 输入三个实数a b c 按代数值由小到大的次序输出 另解 习题3 2 设计一个模拟计算器 从键盘输入由算术运算符 连接的两个数 输出运算结果 参考程序 includeintmain floatdata1 data2 data charop printf 请输入一个运算式 scanf f c f 例 输入一个数 对该数进行四舍五入 voidMain floata printf 请输入a的值 scanf f printf d进行四舍五入后的值为 d n a b 二 多分支选择结构 如果计算机面对的不是二选一 而是多选一的问题 程序中需要使用多分支结构 用if语句实现多分支结构if 表达式1 语句组1elseif 表达式2 语句组2 elseif 表达式n 语句组nelse语句组n 1 执行过程 如果表达式1的值为 真 则执行语句组1 否则如果表达式2的值为 真 则执行语句组2 否则如果表达式3的值为 真 否则如果表达式n为 真 则执行语句组n 如果前面的表达式都为 假 则执行语句组n 1 最后的else部分可根据需要缺省 例如 例 编写一个实现如下函数值的程序 1 x0 voidMain doublex prinft 请输入x的值 scanf lf prinft Y d y 作业 1 为铁路编写计算运费的程序 假设铁路托运行李 规定每张客票托运费的计算方法是 行李重量不超过50kg时 每千克0 25元 超过50kg而不超过100kg时 其超过部分每千克0 35元 超过100kg时 其超过部分每千克0 45元 编写完整的程序 上机实现 分析 托运费的分段函数是什么 答 设行李重量为w公斤 应付托运费为x元 则托运费的分段函数是 1 w100时 x 0 25 50 0 35 50 0 45 w 100 用开关语句swtich实现多分支结构 switch语句格式 switch 表达式 case常量表达式1 语句组1 break case常量表达式2 语句组2 break case常量表达式n 语句组n break default 语句组n 1 break 执行过程 首先对switch后面括号内的表达式进行计算 将计算的结果逐个与case后面的常量表达式比较 当表达式的值与某个常量表达式的值相等时 则执行该case后面对应的语句组 而后由break语句跳出整个switch结构 如果表达式的值与所有的常量表达式都不相等 则执行default后的语句组 说明 1 break语句用以跳出switch结构 当执行break语句时 后面的代码被 短路 不会被执行 若不使用break 则从与表达式相匹配的那个case语句开始后所有的语句组都会被执行 例如 若有intd scanf d 若d为1时 输出d等于1 然后遇到break退出switch 例如 若有intd scanf d 去掉了各break 若d为1时 输出d等于1 d等于2 d不等于1和2 然后执行完switch结构退出 default后面的内容在switch表达式的值与各种case都不相等时 要执行的内容 可根据需要省略 switch d case1 printf d等于1 n break case2 printf d等于2 n break 若d不等于1 也不等于2时 不做处理 省略default后面的break对程序结果无影响 switch d case1 printf d等于1 n break case2 printf d等于2 n break default printf d不等于1和2 n 效果一致default printf d不等于1和2 n break 2 switch后面括号内的 表达式 必须是整型或字符型 可以为常量或变量 例如 若有doubled d写在switch中就出错 switch d case1 0 printf d等于1 0 n break case2 0 printf d等于2 0 n break default printf d不等于1 0和2 0 n break 3 case中的各常量表达式的值应各不相同 互斥 例如 若有intd 有两个case1就出错 switch d case1 printf d等于1 n break case1 printf d等于1 n break case2 printf d等于2 n break default printf d不等于1和2 n break 4 改变各个case的先后顺序 对程序没有影响 例如 若有intd 则可以交换各case的位置 switch d case1 printf d等于1 n break case2 printf d等于2 n break default printf d不等于1和2 n break 与switch d case2 printf d等于2 n break case1 printf d等于1 n break default printf d不等于1和2 n break 等价 对程序结果没有任何影响 例3 9 编写一个程序 根据学生的得分判定其类别 判定规则 若小于60分判为E级 60到69分判为D级 70到79分判为C级 80到89分判为B级 90到100分判为A级 1 用多个if单分支结构实现 2 用if多分支结构实现 3 用switch结构实现 1 用多个if单分支结构实现 2 用if多分支结构实现 3 用switch结构实现 例3 10 从键盘输入1 7之间的数字 输出此数字对应的是星期几 若输入的数字不在此范围 提示出错 1 用if多分支结构实现 2 用switch结构实现 1 用if多分支结构实现 else可以根据需要省略 2 用switch结构实现 defalut后面的break可省略defalut可以根据需要省略 各case后面的break可以省略吗 结论 当输入1 7范围外的值时 程序可以正确执行 当输入是1 7之间的值时 程序会从匹配的情况一直执行到遇到break或者switch结构结束 因此除了default处的break 其余的break不要省略 三 嵌套选择结构 在分支语句中又包含一个或多个分支语句称为嵌套选择结构 嵌套选择结构的样式繁多 以if结构中嵌套ifelse结构为例来说明 if 表达式1 if 表达式2 语句组1 else 语句组2 执行过程 首先计算表达式1的值 如果其值为 假 直接跳出该结构 语句组1和语句组2都不会被执行 如果其值为 真 则执行内部的ifelse结构 计算表达式2的值 如果其值为 真 则执行语句组1 否则执行语句组2 if else的配对原则 C标准规定 被同级别的一对大括号 括起来时 else语句总是和它上面最近的未配对的if配对 例3 11 if和else的配对问题 匹配 相当于 检查输出结果 发现虽然a和b相等 但却输出了a b 为了避免歧义性 应该给嵌套结构适当地添加大括号 此时else与第一个if配对 方法一 方法二 方法三 方法四 方法五 第3章三种基本控制结构 3 5顺序结构程序设计3 6选择结构程序设计3 7循环结构程序设计3 8辅助控制语句 一 while结构 while结构常称为 当型 循环结构 while语句实现 当型 循环 while 表达式 循环体 特点 先判断表达式的值 再决定是否执行循环体 执行循环体的次数 0到无数次 说明 1 当第一次判断表达式的值为 假 时 循环体一次也不执行 例如 inti 0 while i 0 i printf 3d i 2 除去必要的情况 尽量避免无限循环 如 while 1 是死循环 从代码编写的角度看 使 循环控制条件一步步向终止方向靠近 是关键 例如 inti 0 while 1 i printf 3d i 3 不要在while 表达式 处添加分号 例如 inti 0 while i 10 i printf 3d i 循环执行空语句 这部分代码执行不到 4 循环体可为任意类型语句 若循环体不止一条语句 应使用一对大括号括起来 例如 inti 0 while i 10 i printf 3d i 循环体是while下面的第一个语句i printf在循环完后会执行一次 若要输出每个变化的i值 应添加大括号 例3 13 用while循环求sum 1 2 100 思考1 循环变量i的增值i 可以换成 i吗 思考2 sum sum i 和i 可以调换顺序吗 可以将i 1改为i 0 i 100改为i 99 思考3 while结构中的大括号是否可省略 循环体为sum sum i 循环条件一直成立 循环执行sum sum i 程序陷入死循环 思考4 while i 100 后面可以加分号吗 循环体为空语句 循环条件一直成立 循环执行空语句 程序也陷入死循环 例3 求s a aa aaa 其中a是一个数字 例 2 22 222 2222 22222 此时a 2 n 5由键盘输入 利用while循环解法 利用do while循环解法 二 dowhile结构 dowhile结构常称为 直到型 循环结构 dowhile语句实现 直到型 循环的语句格式 do 循环体 while 表达式 特点 先执行循环体一次 再判断表达式决定是否继续执行循环体 执行循环体的次数 1到无数次 说明 1 最少执行一次循环体 当第一次判断表达式的值为 假 时 循环体已执行了一次 例如 inti 0 do i printf 3d i while i 0 2 除去必要的情况 尽量避免无限循环 例如 inti 0 do i printf 3d i while 1 3 在while 表达式 处不要漏掉分号 例如 inti 0 do i printf 3d i while i 10 语法出错 4 循环体可为任意类型语句 若循环体不止一条语句 应使用一对大括号括起来 例如 inti 0 doi printf 3d i while i 10 语法出错 例3 14 用dowhile循环求sum 1 2 100 思考1 循环变量i的增值i 可以换成 i吗 思考2 sum sum i 和i 可以调换顺序吗 可以将i 1改为i 0 i 100改为i 99 思考3 while结构中的大括号是否可省略 语法出错 若循环体只有一句 可以不写大括号 思考4 while i 100 后面不写分号 可以吗 语法出错 例3 15 while和dowhile循环的比较 1 while循环的程序 includeintmain inti sum 0 scanf d while i 100 sum sum i i printf sum d n sum return0 例3 15 while和dowhile循环的比较 2 dowhile循环的程序 includeintmain inti sum 0 scanf d do sum sum i i while i 100 printf sum d n sum return0 1 若输入的i为小于等于100的值时 两种结构的程序执行循环次数一致 输出结果也一致 2 若输入的i为大于100的值时 while循环一次也不执行 dowhile循环执行一次 输出结果不一致 题 从键盘输入一系列字符 以回车符结束 分别统计字母 数字 空格 其它字符的个数并输出 请思考 用while结构和dowhile结构书写的程序在统计其他字符数目的时候 为什么不一致 若要两者一致可以如何修改程序 分析 dowhile结构中将回车换行键也统计成了其他字符 可以修改d的初值为 1 两者的程序结果就可以一致 例3 求s a aa aaa 其中a是一个数字 例 2 22 222 2222 22222 此时a 2 n 5由键盘输入 利用do while循环解法 例4 猴子吃橘子问题 猴子第一天摘下若干个橘子 当即吃了一半 又多吃了一个 第二天又将剩下的橘子吃了一半 又多吃一个 以后每天都吃前一天剩下的橘子的一半零一个 到第10天想吃时 只剩下一个橘子了 求第一天一共摘了多少橘子 voidmain intday x1 x2 day 9 x2 1 do x1 x2 1 2 x2 x1 day while printf total d n x2 day 0 一 for语句的格式for 设置初值 条件判断 设置增减量 语句1 语句2 语句n 无分号 无分号 例1 for i 1 i 10 i sum i for语句的执行步骤 1 第一次进入for循环时 设置循环控制变量的初始值 2 检查条件判断 若为真 继续执行循环主体 若为假 跳出循环执行其它语句 3 每次执行完循环主体 修改循环的值 再返回步骤2继续判断条件 三 for结构 for循环结构的流程图和N S图 例3 16 用for循环求sum 1 2 100 说明 1 for循环结构一般把给循环变量赋初值作为初始化表达式 例如 i 1 把限制循环变量的表达式作为循环条件 例如 i 100 把修改循环变量的表达式作为修正表达式 例如 i 注意i 后面不写分号了 2 当单个语句作为循环体时 大括号可以省略 例3 17 水仙花数 是指一个3位数 其各位数字立方和等于该数本身 例如 153 13 53 33 所以153就是水仙花数 编写程序 输出所有的水仙花数 说明 1 for语句中表达式1 表达式2 表达式3类型任意 都可省略 但之间的分号不可省略 1 初始化表达式省略 在循环结构前面给循环变量赋初值 inti 1 for i 100 i sum i 2 判断表达式省略 无循环结束条件 死循环 inti for i 1 i sum i 3 修正表达式省略 在循环体内部修改循环变量 inti for i 1 i 100 sum i i 循环体不止一条语句时 务必用大括号括起来 4 初始化表达式和修正表达式省略 inti 1 for i 100 sum i i 5 三个表达式都省略 死循环 for sum i i 例子 1 穷人与富人斗智 穷人第一天给富人1000元钱 以后每天比上一天多给1000元 富人第一天给穷人1分钱 以后每天所给的钱是上一天的2倍 问第30天时穷人和富人各给对方多少钱 2 求1 正整数n之间的奇数及偶数之和 3 一个四位数 是一个完全平方数 一 三位数的和为10 二 四位数的积为12 求这个数 4 求100到200之间所有能被7除余2的整数 要求每行输出5个数 5 求s 1 2 3 10 作业 1 有一分数序列 2 1 3 2 5 3 8 5 13 8 21 13 求出这个数列的前20项之和 说明 前一项的分子与分母之和作为下一项的分子 前一项的分子作为下一项的分母 2 一个球从100米高度自由落下 每次落地后反弹回原高度的一半 再落下 求它在第10次落地时 共经过多少米 第10次反弹多高 voidmain floatsn 100 hn sn 2 intn for n 2 n 10 n sn sn 2 hn hn hn 2 printf totalis f n sn printf thelastis f n hn 四 循环嵌套结构 一个循环体内又包含一个或多个完整的循环结构 称为循环的嵌套 例如 以下是个二重循环 for 初始化表达式1 判断表达式1 修正表达式1 for 初始化表达式2 判断表达式2 修正表达式2 循环体 例3 18 编写程序输出如下图形 例3 19 编写程序输出如下图形 方法1 方法2 例3 20 编写程序输出如下图形 例3 打印九九乘法表 例2 打印图形 请观看程序演示 第3章三种基本控制结构 3 5顺序结构程序设计3 6选择结构程序设计3 7循环结构程序设计3 8辅助控制语句 一 break语句 break的作用是 破壳而出 当程序流程执行到循环结构中的break语句时 循环被中断 程序流程跳出循环体 转到循环结构之后的语句执行 例如 while 表达式1 if 表达式2 break 例3 21 编写程序 查找100到200之间的所有素数并输出 说
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合肥市土地资源承载力:综合评价与发展策略探究
- 产业园区合作共建协议5篇
- 良好习惯课件
- 2025内蒙古呼伦贝尔根河市事业单位文旅岗位引进人才2人备考及答案详解参考
- 聚焦群众身边腐败问题和不正之风的问题整改措施
- 2025年二级建造师考试建筑工程管理与实务试题与参考答案
- 2025年教师招聘之《小学教师招聘》综合提升试卷附完整答案详解(夺冠)
- 2025年教师招聘之《幼儿教师招聘》考前冲刺测试卷包附答案详解【考试直接用】
- 2025呼伦贝尔农垦集团有限公司社会招聘50人考试备考及1套完整答案详解
- 教师招聘之《小学教师招聘》综合提升测试卷含答案详解(巩固)
- 2025-2026学年浙美版(2024)小学美术二年级上册(全册)教学设计(附目录P168)
- 2025年时政热点考试模拟题库目及解析答案
- DB63-T 1921-2021 交通运输专业空间数据分类与编码规范
- 2025年部编版八年级道德与法治上册全册教案
- 2025年移动式压力容器充装R2作业证考试练习题库含答案
- 北师大版(2024版)三年级上册第七单元第6节《生活中的小数》教学设计
- 2025年中国银行招聘考试试题及答案
- 土石方工程的合作协议书
- 医疗质量安全专项整治行动自查清单8-患者隐私
- 字体设计字体标志与版式设计
- 2025人教版(2024)八年级上册英语教学计划
评论
0/150
提交评论