




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章C程序设计结构 4 1什么是算法 4 2顺序结构程序设计 4 3选择结构程序设计 4 4循环结构程序设计 4 5转向语句 怎样学习C语言 1 工欲善其事 必先利其器Anartisanmustfirstsharpenhistoolsifheistodohisworkwell 2 读程序和写程序 3 掌握数据结构和算法 4 1 1算法的基本概念 著名计算机科学家NicklausWirth提出程序 数据结构 算法数据结构 描述问题处理的对象及对象间的关系算法 Algorithm 描述解决问题的操作步骤 例 求两个正整数的最大公约数 数据结构 两个正整数m和n算法描述 自然语言 流程图 伪代码 N S流程图 经典算法 辗转相除法对于给定的两个数 用较大的数除以较小的数 若余数不为零 则将余数和较小的数构成新的一对 继续上面的除法 直到余数为零 此时 较小的数就是原来两个数的最大公约数 4 1 1算法的基本概念 例 求两个正整数的最大公约数 1 求16和12的最大公约数 2 求544和119的最大公约数 经典算法 辗转相除法对于给定的两个数 用较大的数除以较小的数 若余数不为零 则将余数和较小的数构成新的一对 继续上面的除法 直到余数为零 此时 较小的数就是原来两个数的最大公约数 4 1 1算法的基本概念 输入两个正整数m和n m除以n 余数记为r 若m n 则交换m和n 4 1 2算法的表示方法 自然语言 自然语言 用人类日常用语描述算法 例 辗转相除算法 给定两个正整数m和n 求它们的最大公因数步骤 输入两个正整数m和n步骤 若m n 则交换m和n步骤 m除以n 余数记为r步骤 若r 0 则输出n 算法结束 否则执行步骤 步骤 令m n n r 执行步骤 4 1 2算法的表示方法 流程图 流程图的基本图形符号开始 结束框操作框输入 输出框条件判断框流程线 4 1 2算法的表示方法 流程图 重点掌握 例 辗转相除算法步骤 输入两个正整数m和n步骤 若m n 则交换m和n步骤 用n除以m 余数记为r步骤 若r 0 则输出n 算法结束 否则执行 步骤 令m n n r 执行 开始 输入m n 假 r m n r 0 程序人生 4 1 3结构化程序设计简述 三种基本结构只使用这三种结构的程序 称作结构化程序 顺序 Sequence 结构选择 Selection 结构循环 Loop 结构 转向语句 break语句 goto语句continue语句 return语句 4 2顺序结构程序设计 例 编写程序LAB1 1 c 计算定期存款本利之和设银行定期存款的年利率rate为2 25 并已知存款期为year年 存款本金为capital元 试编程计算year年后的本利之和deposit 要求 定期存款的年利率rate 存款期year和存款本金capital均由键盘输入 4 3 1if语句 if语句的三种形式形式一形式二 if 表达式 语句1 if 表达式 语句1 else语句2 表达式 语句1 真 假 语句2 后续语句 4 3 1if语句 例 判断某学生成绩是否及格 及格输出 Pass 否则输出 Fail includemain intscore printf Inputscore scanf d 注意 的使用 分号的位置 4 3 1if语句 例 判断某学生成绩是否及格 及格输出 Pass 否则输出 Fail 思考1 用if语句的第一种形式实现 includemain intscore printf Inputscore scanf d if score 60 printf Pass n if score 60 printf Fail n 4 3 1if语句 例 判断某学生成绩是否及格 及格输出 Pass 否则输出 Fail 思考2 score 72时 下列代码的执行情况和输出结果 includemain intscore printf Inputscore scanf d 空语句 什么也不做 72 Pass Fail if 表达式1 语句块1 elseif 表达式2 语句块2 else if 表达式n 语句块n else语句块n 1 4 3 1if语句 形式三 if else的嵌套结构 4 3 1if语句 例 从键盘读入一个字符 根据以下规则转换该字符 并把转换结果输出到屏幕 转换规则 输入大写字母 输出对应的小写字母 输入小写字母 输出对应的大写字母 输入数字字符 原样输出 输入其它字符 输出 Inputinvalid 4 3 1if语句 1 定义一个字符型变量ch 2 给ch赋值 3 判断ch所属类型 进行相应转换并输出ch是大写字母的条件 ch A ch a ch 0 ch 9 输出chch是其他字符 不满足以上三个条件 输出无效提示信息 等价于 ch 65 ch 90 算法描述 4 3 1if语句 程序1 使用if语句的第一种形式 includemain charch scanf c 输入语句执行情况输出 5 a A 1 3 5 7 8 Inputinvalid 1 3 5 6 7 5 1 3 4 5 7 A 1 2 3 5 7 a 4 3 1if语句 程序2 使用if else嵌套语句 includemain charch scanf c 输入语句执行情况输出 5 a A 1 3 5 7Inputinvalid 1 3 5 65 1 3 4A 1 2a 4 3 1if语句 else部分可以没有else不能单独使用 例 if score 60 printf Pass n elseprintf Fail n 例 if x 0 if y 0 printf PointisinI elseprintf PointisinIV 4 3 1if语句 例 下列程序是否能通过编译和链接 若不能 错误出现在哪里 若能通过 程序的功能是什么 main inta b c result scanf d d d if和else的配对原则 else总是和位于其上方且离它最近的未配对的if配对 4 3 1if语句 例 下列程序是否能通过编译和链接 若不能 错误出现在哪里 若能通过 程序的功能是什么 main inta b c result scanf d d d 4 3 1if语句 例 根据输入的百分制成绩 转换成相应的五分制成绩 并打印输出 转换标准为 90 分数 100 A80 分数 90 B70 分数 80 C60 分数 70 D分数 60 E要求分别用if控制语句和if else嵌套控制语句实现 4 3 1if语句 Demo4 7 c 使用if语句的第一种形式 includemain intscore scanf d 4 3 1if语句 程序2 使用if else嵌套形式 includemain intscore scanf d 4 3 2多路选择switch语句 基本形式switch 表达式 case常量表达式1 语句1 case常量表达式i 语句i case常量表达式n 语句n default 语句n 1 4 3 2多路选择switch语句 思考1 用switch语句改写 根据分数输出对应等级 intscore scanf d switch score case score 90 score 80 score 70 score 60 score 70 case score 60 default ERROR case后面要求是常量表达式 4 3 2多路选择switch语句 思考2 用switch语句改写 根据分数输出对应等级 intscore scanf d 无法或者不能简单列举出所有的可能情形 4 3 2多路选择switch语句 思考3 用switch语句改写 根据分数输出对应等级 intscore flag scanf d flag 0 1 2 9 10 4 3 2多路选择switch语句 思考4 使用转向控制语句break intscore flag scanf d 强制退出switch语句 执行其后续语句 case后的复合语句可以不使用 4 3 2多路选择switch语句 4 3 2多路选择switch语句 思考5 用switch语句改写 根据分数输出对应等级 intscore flag scanf d 多个case可共用一组执行语句 4 3 2多路选择switch语句 思考6 处理无效输入 intscore flag scanf d 如果读入的成绩小于0或大于100 输出 4 3 2多路选择switch语句 intscore flag scanf d case5 case4 case3 case2 case1 case0 printf E n break default printf Inputinvalid n break intscore flag scanf d 4 3 2多路选择switch语句 4 3 2switch语句小结 表达式和常量表达式的值必须都是整型类 常量表达式的值必须互不相同 default语句如果有 只允许出现一次 可出现在switch中的任何位置 通常放在最后 各个case和default的出现次序不会影响结果 执行完某个case之后的语句 程序并不会跳出switch结构 而是顺序执行它下面case之后的其它语句 中断离开switch结构 要用break语句 选择结构编程练习 练习 简单的计算器程序 Demo4 9 c 要求用switch语句编程设计一个简单的计算器程序要求根据用户从键盘输入的表达式 操作数1运算符操作数2计算表达式的值 操作数和运算符之间没有空白符 如键盘输入为 3 5 指定的算术运算符为加 减 乘 除 4 4循环结构程序设计 在Demo4 9 c基础上 增加如下要求 要求连续做多次算术运算 每次运算结束后 程序都给出提示 Doyouwanttocontinue Y Nory n 如果用户输入Y或y时 程序继续进行其它算术运算 否则程序才退出运行状态 那么 程序如何修改 4 4 1for循环控制语句 for 表达式1 表达式2 表达式3 语句块 inti sum 0 for i 1 i 100 i sum sum i printf 1 2 3 100 d n sum 1 2 3 4 99 100sum a b 3sum sum 3 6sum sum 4 10 sum sum 100 4 4 1for循环语句 累加求和 Demo4 11 用for语句计算1 2 3 99 100 sum sum i i取值1 100 sum 0 sum sum 1 sum sum 2 4 4 1for循环语句 累乘求积 Demo4 12 计算1 3 5 19的值 算法分析step1 定义整型变量i resultstep2 赋初值 i 1 result 1step3 result i resultstep4 i 2 i 转向step3 直到i 19 inti result for i 1 i 19 i 2 1 result result i 4 4 1for循环语句 可以省略for语句的各表达式 但不能省略分号间隔符 for 表达式2 表达式3 inti 1 sum 0 for i 100 i sum i inti sum for i 1 sum 0 i 100 i sum i inti sum 0 for i 1 i 100 i sum sum i 4 4 1for循环语句 for 表达式1 表达式3 inti sum 0 for i 1 i inti sum 0 for i 1 i 100 i sum sum i if i 100 break elsesum i break语句 退出当前循环 4 4 1for循环语句 for 表达式1 表达式2 inti sum 0 for i 1 i 100 i sum i inti sum 0 for i 1 i 100 sum i i 4 4 1for循环语句 for inti sum 0 for i 1 i 100 i sum i inti 1 sum 0 for if i 100 break else sum i i 4 4 2while和do while循环控制语句 while 表达式 语句块 do 语句块 while 表达式 区别 分号和执行情况 4 4 3小结 三种循环语句的比较和使用 循环次数已知或循环步长固定 用for语句较好 例 计算1 2 100 例 计算1 3 5 19 如果循环次数未知 用while语句较好 例 统计从键盘输入一行字符的个数 如果至少要执行一次循环体 用do while语句较好 4 4 4循环嵌套 例 编写程序 输出由 组成的三角形 三角形边长n由scanf 函数输入 例n 4和n 6时 程序运行情况分别如下图所示 4 4 4循环嵌套 在循环体语句中又包含另一个循环结构的形式 称为循环嵌套 双重循环 多重循环 嵌套在循环体内的循环体称为内循环 外面的循环称为外循环三种循环可以互相嵌套 for for 内循环 外循环 for while 内循环 外循环 4 4 4循环嵌套 输出空格输出 输出空格i 1j 1 2 345 6 7i 2j 1 23 4 56 7i 3j 12 3 4 5 67i 4j 1 2 3 4 5 6 7 行方向 每行输出字符 和 个数 2n 1列方向 什么情况下输出空格 什么情况下输出 对第i行 当1 j n i或n i j 2n 1输出空格否则 输出 4 4 4循环嵌套 inti j n printf n scanf d 4 4 4循环嵌套 行方向 每行输出字符 和 个数 i n 1列方向 什么情况下输出空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-河北-河北造林管护工三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-河北-河北兽医防治员四级(中级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江西-江西热力运行工二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏地图绘制员二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-广西-广西管道工五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广西-广西检验员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广西-广西客房服务员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广西-广西动物检疫员一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东广播电视天线工四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-安徽-安徽无损探伤工四级(中级工)历年参考题库典型考点含答案解析
- 重庆医科大学附属第一医院改建PET-CT、PET-MR项目环评报告
- 2022水电站计算机监控系统上位机现场验收标准手册
- 政务服务大厅管理规范:安全与应急处置
- 食管癌病人护理查房
- WS/T 427-2013临床营养风险筛查
- 双重预防机制构建-隐患排查治理(中石化中原油田天然气厂)
- 五牌一图(完整版)
- 二年级下册音乐《每天》教案
- 音乐美学.课件
- 心肺复苏说课比赛课件模板(一等奖)
- 健康体检证明
评论
0/150
提交评论