




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章算法与程序基本结构 本章课程共6学时其中 授课4学时 上机2学时 2020 1 1 2 3 1算法和算法的表示 程序的两个主要构件算法的概念算法的表示 1 对数据的描述 数据结构 datastructure 数据的类型和组织形式 2 对操作的描述 算法 algorithm 操作步骤 程序 数据结构 算法 程序 算法 数据结构 程序设计方法 语言工具和环境 算法是为解决一个问题而采取的方法和步骤 1 自然语言描述 2 流程图描述 P16 2020 1 1 3 例3 1 教材P19 判定2000 2500年中的每一年是否闰年 将结果输出 已知闰年的条件是 1 能被4整除 但不能被100整除的年份都是闰年 2 能被100整除 又能被400整除的年份是闰年 3 不符合这两个条件的年份不是闰年 自然语言描述设y为被检测的年份 可采取以下步骤 S1 2000 yS2 若y不能被4整除 输出 y不是闰年 转到S6S3 若y能被4整除 不能被100整除 输出 y是闰年 转到S6S4 若y能被100整除 同时又能被400整除 输出y 是闰年 转到S6S5 输出 y不是闰年 S6 y 1 yS7 当y 2500时 转S2继续执行 如y 2500 算法停止 2020 1 1 4 ANSI流程图描述 例3 1 教材P19 判定2000 2500年中的每一年是否闰年 将结果输出 已知闰年的条件是 1 能被4整除 但不能被100整除的年份都是闰年 2 能被100整除 又能被400整除的年份是闰年 3 不符合这两个条件的年份不是闰年 2020 1 1 5 N S流程图描述 例3 1 教材P19 判定2000 2500年中的每一年是否闰年 将结果输出 已知闰年的条件是 1 能被4整除 但不能被100整除的年份都是闰年 2 能被100整除 又能被400整除的年份是闰年 3 不符合这两个条件的年份不是闰年 2020 1 1 6 3 2三种基本结构 1 顺序型结构 2 选择型结构 P26 2020 1 1 7 3 循环结构 它又称重复结构 a 当型 While型 循环结构 b 直到型 Until型 循环结构 当型 直到型 任何算法都可以划分成上述三种基本结构 2020 1 1 8 练习 判断一个大于或等于3的正整数是否为素数 素数 除了1和该数本身之外 不能被其他任何整数整除的数 判断素数的方法 将n作为被除数 将2到 n 1 各个整数轮流作为除数 如果都不能被整除 则n为素数 1 自然语言描述S1 输入n的值S2 2 i i作为除数 S3 n被i除 得余数rS4 如果r 0 表示n能被i整除 则打印n 不是素数 算法结束 否则执行S5S5 i 1 iS6 如果i n 1 返回S3 否则打印n 是素数 然后结束 2 ANSI流程图 3 N S流程图 2020 1 1 9 3 3结构化程序设计 1 自顶向下 逐步细化 2 模块化设计 3 结构化编码 P34 2020 1 1 10 3 4分支和循环结构的C语言程序实现 C语句 以 作分隔符 编译后产生机器指令表达式语句 表达式 分号 构成空语句 程序控制语句 9种 复合语句 用 括起来的一组语句 例表达式语句total total limit a 3 func printf Hello world n 复合语句的说明 后不加分号语法上和单一语句相同复合语句可嵌套 例复合语句 total total limit a 3 func P57 2020 1 1 11 关系运算符与关系表达式包括符号 例c a b c a b a b c a b ca bc a b c 例 若a 0 b 0 5 x 0 3 则a x b的值为 例 若a 0 b 0 5 x 0 3 则a x b的值为0 例 5 2 7 8在C中是允许的 值为 例 5 2 7 8在C中是允许的 值为0 例 inti 1 j 7 a a i j 4 0 则a 例 inti 1 j 7 a a i j 4 0 则a 2 例 a 0结果为 A 100结果为 例 a 0结果为1 A 100结果为0 关系运算请注意 1 应避免对实数作相等或不等的判断如1 0 3 0 3 0 1 0结果为 关系运算请注意 1 应避免对实数作相等或不等的判断如1 0 3 0 3 0 1 0结果为0 关系运算请注意 1 应避免对实数作相等或不等的判断如1 0 3 0 3 0 1 0结果为0可改写为 fabs 1 0 3 0 3 0 1 0 1E 6 2 注意区分 与 如inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 2 注意区分 与 如inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 2 注意区分 与 如inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 2 注意区分 与 如inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 例inta 3 b 2 c 1 d f a b a b cb cbf a b c 例inta 3 b 2 c 1 d f a b 表达式值1 a b cb cbf a b c 例inta 3 b 2 c 1 d f a b 表达式值1 a b c 表达式值1b cbf a b c 例inta 3 b 2 c 1 d f a b 表达式值1 a b c 表达式值1b cbf a b c 例inta 3 b 2 c 1 d f a b 表达式值1 a b c 表达式值1b cb d 1f a b c 例inta 3 b 2 c 1 d f a b 表达式值1 a b c 表达式值1b cb d 1f a b c f 0 P91 2020 1 1 12 逻辑运算符与逻辑表达式包括符号 例ab x ya b x y a a b 例ab x ya b x y a a b 例ab x y a b x y a b x y a a b 例ab x y a b x y a b x y a b x y a a b 例ab x y a b x y a b x y a b x y a a b a a b 例a 4 b 5 aa ba b a b4 0 25 3 2 8 4 0 c d 例a 4 b 5 a 0a ba b a b4 0 25 3 2 8 4 0 c d 例a 4 b 5 a 0a b 1a b a b4 0 25 3 2 8 4 0 c d 例a 4 b 5 a 0a b 1a b 1 a b4 0 25 3 2 8 4 0 c d 例a 4 b 5 a 0a b 1a b 1 a b 14 0 25 3 2 8 4 0 c d 例a 4 b 5 a 0a b 1a b 1 a b 14 0 2 15 3 2 8 4 0 c d 例a 4 b 5 a 0a b 1a b 1 a b 14 0 2 15 3 2 83 2 8 4 0 1 c d 例a 4 b 5 a 0a b 1a b 1 a b 14 0 2 15 3 2 83 2 8 4 0 1 c d 1 例a b c 只在a为真时 才判别b的值 只在a b都为真时 才判别c的值 例a b c 只在a为真时 才判别b的值 只在a b都为真时 才判别c的值a b c 只在a为假时 才判别b的值 只在a b都为假时 才判别c的值 例a m a b n c d 例a m a b n c d 结果m 0 n 1 P92 2020 1 1 13 分支语句 1 if语句 例 if x y printf d x 例 if x y max x elsemax y 例 if salary 1000 index 0 4 elseif salary 800 index 0 3 elseif salary 600 index 0 2 elseif salary 400 index 0 1 elseindex 0 如 if a b if x if x 0 if x if x 0 例考虑下面程序的输出结果 includemain intx y scanf d d 例考虑下面程序的输出结果 includemain intx y scanf d d P97 2020 1 1 14 例1求一个数的绝对值 ch4 1 c includemain intx y printf Enteraninteger scanf d 运行 Enteraninteger 12 integer 12 absolutevalue 12 例2输入两个数并判断两数相等否 ch4 2 c includemain inta b printf Enterintegera scanf d 运行 Enterintegera 12 Enterintegerb 12 a b 运行 Enterintegera 12 Enterintegerb 9 a b 2020 1 1 15 例3判断输入字符种类 ch4 3 c includemain charc printf Enteracharacter c getchar if c 0 运行 Enteracharacter Thecharacterisacontrolcharacter 运行 Enteracharacter 8 Thecharacterisadigit 运行 Enteracharacter D Thecharacterisacapitalletter 运行 Enteracharacter h Thecharacterisalowerletter 运行 Enteracharacter Thecharacterisothercharacter 例4输入两数并判断其大小关系 ch4 4 c includemain intx y printf Enterintegerx y scanf d d 运行 Enterintegerx y 12 23 XYEnterintegerx y 12 12 X Y 2020 1 1 16 例 if a b if b c printf a b c elseprintf a b 修改 if a b if b c printf a b c elseprintf a b 例考虑下面程序输出结果 main intx 100 a 10 b 20 intv1 5 v2 0 if a b if b 15 if v1 x 1 elseif v2 x 10 x 1 printf d x 结果 1 2020 1 1 17 分支语句 2 switch语句 例switch score case5 printf Verygood case4 printf Good case3 printf Pass case2 printf Fail default printf dataerror 例voidmain intx 1 y 0 a 0 b 0 switch x case1 switch y case0 a break case1 b break case2 a b break case3 a b printf na d b d a b 运行结果 a 2 b 1 关于switch语句的说明 E1 E2 En是常量表达式 且值必须互不相同语句标号作用内 可用break跳出case后可包含多个可执行语句 且不必加 switch可嵌套多个case可共用一组执行语句 运行结果 score为5时 输出 Verygood Good Pass Fail dataerror P102 2020 1 1 18 循环语句 1 if和goto语句构成循环 例用if和goto语句构成循环 求 ch5 1 c includemain inti sum 0 i 1 loop if i 100 sum i i gotoloop printf d sum sum 0 1sum 1 2 3sum 3 3 6sum 6 4 sum 4950 100 5050 2020 1 1 19 循环语句 2 while语句构成循环 例用while语句构成循环 求 ch5 2 c includemain inti sum 0 i 1 while i 100 sum sum i i printf d sum P115 2020 1 1 20 例显示1 10的平方 ch5 21 c includemain inti 1 while i 10 printf d d d n i i i i i 运行结果 1 1 12 2 43 3 94 4 165 5 256 6 367 7 498 8 649 9 8110 10 100 2020 1 1 21 循环语句 3 do while语句构成循环 ch5 3 c includemain inti sum 0 i 1 do sum i i while i 100 printf d sum 例用do while语句构成循环 求 例while和do while比较 ch5 4 c includemain inti 1 sum 0 scanf d includemain inti 1 sum 0 scanf d 分号必不可少 P117 2020 1 1 22 循环语句 4 for语句构成循环 例 多种方式连续输出多个字符 例1 includemain inti 0 for i 0 i 10 i putchar a i 运行结果 abcdefghij 例2 includemain inti 0 for i 10 i putchar a i 例3 includemain inti 0 for i 10 putchar a i 例4 includemain inti 0 for i 10 putchar a i i 无限循环 for for 1 P120 2020 1 1 23 例 打印加法表 includemain inti j k for i 0 j 100 i j i j k i j printf d d d n i j k 例 打印输入的多个字符 includemain charc for c getchar n printf c c 例 根据输入打印多个字符 includemain inti c for i 0 c getchar n i 3 printf c i c 2020 1 1 24 两种辅助控制语句 breakcontinue break使用示意图 continue使用示意图 P126 2020 1 1 25 例1输出圆面积 面积大于100时停止 de
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年锅炉操作工(高级)职业技能培训考试题库(附答案)
- 2025年广西自然资源职业技术学院单招职业技能测试题库有答案
- 2025年广西玉林市公安辅警招聘知识考试题(含答案)
- 大学生液压考试题及答案
- 媒体广告投放合同协议说明
- 商业咨询服务与咨询合同协议
- 幼师职格考试题型及答案
- 智能柜台考试题库及答案
- 新安全法考试题库及答案
- 人际交往能力笔试题目及答案
- 中频操作评分标准
- 国家免疫规划疫苗儿童免疫程序说明-培训课件
- 生活中的理财原理知到章节答案智慧树2023年暨南大学
- GB/T 22588-2008闪光法测量热扩散系数或导热系数
- GB/T 22237-2008表面活性剂表面张力的测定
- GB/T 13298-1991金属显微组织检验方法
- 《绿色建筑概论》整套教学课件
- 建筑设计防火规范2001修订版
- 劳动人事争议仲裁案例分析与问题探讨课件
- 电工基础培训教材课件
- 论语中的孝道课件
评论
0/150
提交评论