1 / 21

C 语言程序设计 第二章 程序的灵魂 -- 算法

C 语言程序设计 第二章 程序的灵魂 -- 算法. 主要内容 2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化算法设计方法. 2.1 算法的概念. 沃思公式: 数据结构 + 算法 =程序 具体化: 程序=算法+数据结构+程序设计方法+语言工具和环境 . 对数据的描述,要指定数据的类型、数据的组织形式. 对操作的描述,即操作步骤. 2.1 算法的概念. 做任何事都有一定的次序和步骤;如:召开会议,购物等; 算法是为解决一个问题而采取的方法和步骤; 注意:

luana
Download Presentation

C 语言程序设计 第二章 程序的灵魂 -- 算法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C语言程序设计第二章 程序的灵魂 -- 算法

  2. 主要内容 2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化算法设计方法

  3. 2.1 算法的概念 • 沃思公式: 数据结构+算法=程序 • 具体化: 程序=算法+数据结构+程序设计方法+语言工具和环境  对数据的描述,要指定数据的类型、数据的组织形式 对操作的描述,即操作步骤

  4. 2.1 算法的概念 • 做任何事都有一定的次序和步骤;如:召开会议,购物等; • 算法是为解决一个问题而采取的方法和步骤; • 注意: • 解决同一个问题可以有不同的方法和步骤,方法有优劣之分, • 采用简单的和运算步骤少的方法为优!

  5. 2.1 算法的概念 • 算法分两大类别 • 数值运算算法:目的是求数值解,算法成熟; • 非数值运算算法:种类繁多,要求各异,难以规范

  6. ② ③ ④ 1×2,得2; 2×3,得6; 6×4,得24; 24×5=120 2.2 简单算法举例 • 例1 求1×2×3×4×5 • 手工计算方法: • 通用的方法: 设两个变量(被乘数p,乘数i) • 第一步:1=>p • 第二步:2=>i • 第三步:p×i=>p • 第四步: i+1=>i • 第五步:若i≤5,返回第三步;否则结束

  7. 2.2 简单算法举例 • 如果题目改为求1×3×5×7×9×11 • 第一步:1=>p • 第二步:3=>i • 第三步:p×i=>p • 第四步: i+2=>i • 第五步:若i≤11,返回第三步;否则结束 • 用这种方法表示的算法具有通用性、灵活性

  8. 2.2 简单算法举例 • 例2 有50个学生,要求将他们之中成绩在80分以上者打印出来 • 算法分析:用n表示学生学号,n1代表第一个学生学号,ni代表第i个学生的学号,g1代表第一个学生成绩,gi代表第i个学生成绩 • 算法 • 第一步: 1=>i • 第二步: 若gi≥80则打印ni和gi,否则不打印 • 第三步: i+1=>i • 第四步: 若i≤50返回第二步,否则算法结束

  9. y不能被4整除 非闰年 ② ③y能被100整除又能被400整除 y能被4整除但不能被100整除 闰年 闰年 ④其他 非闰年 2.2 简单算法举例 • 例3 判断2000-2500年中的每一年是否闰年,将结果输出。 • 分析:闰年的条件: • 能被4整除,但不能被100整除的 年份都是闰年,如1996,2004年是闰 年; • 能被100整除,又能被400整除的年 份是闰年,如1600,2000年是闰年。 • 不符合这两个条件的年份不是闰年

  10. 2.2 简单算法举例 • 算法 • 2000=>y • 若y不能被4整除,输出y“不是闰年”,然后转到第5步 • 若y能被4整除,不能被100整除,则输出y“是闰年”,转第6步 • 若y能被100整除,又能被400整除,则输出y“是闰年”, 转第6步,(否则顺序执行) • 输出y“不是闰年” • y+1=>y • 当y≤2500时转第2步,否则算法结束

  11. 2.2 简单算法举例 • 例4 求 1- 1/2 + 1/3 -1/4+ … + 1/99 - 1/100 • 算法: • sign=1 • sum=1 • deno=2 • sign=-sign • term=sign×(1/deno) • sum=sum+term • deno=deno+1 • 若deno≤100返回第4步,否则算法结束

  12. 2.3 算法的特性 • 算法应具有以下特点: • 有穷性 • 确定性 • 有零个或多个输入 • 有一个或多个输出 • 有效性

  13. 2.4 怎样表示一个算法 • 用自然语言表示算法:通俗易懂,但文字冗长,容易产生歧义。 • 用流程图表示算法: 直观形象,容易理解。

  14. a 选择结构 成立 不成立 p a A B 顺序结构 A b B b . . a a 直 到 型 (until) 循 环 当 型 (while) 循 环 A A 成立 不成立 p p 不成立 成立 b b 2.4 怎样表示一个算法 • 算法的三种基本结构

  15. 开始 1=>p 2=>i p×i=>p i+1=>i Y i≤5 N 结束 2.4 怎样表示一个算法 • 例1 用流程图表示算法:1×2×3×4×5 • 第一步:1=>p • 第二步:2=>i • 第三步:p×i=>p • 第四步: i+1=>i • 第五步:若i≤5,返回第三 步;否则结束

  16. 开始 1=>i Y N gi≥80 打印ni和gi i+1=>i Y i≤50 N 结束 2.4 怎样表示一个算法 • 例2 有50个学生,要求将他们之中成绩在80分以上者打印出来.用流程图表示算法。 • 第一步: 1=>i • 第二步: 若gi≥80则打 印ni和gi,否则不打印 • 第三步: i+1=>i • 第四步: 若i≤50返回第 二步,否则算法结束

  17. 2.4 怎样表示一个算法 • 例 用伪代码表示1×2×3×4×5: 开始 置t的初值为1 置i的初值为2 当i≤5,执行下面操作 使t=t×i   使i=i+1 (循环到此结束) 打印t的值 结束

  18. 2.4 怎样表示一个算法 • 也可以写成以下形式: BEGIN (算法开始) 1=>t 2=>i while i<=5 { t×i=>t i+1=>i } print t END (算法结束)

  19. 2.4 怎样表示一个算法 • 用计算机语言表示算法:求5!用c语言表示 void main( ) { int i,t; t=1; i=2; while(i<=5){ t=t*i; /* 120 */ i=i+1; } printf("%d",t); }

  20. 2.5结构化程序设计方法 • 一个结构化程序就是用高级语言表示的结构化算法 • 用三种基本结构组成的程序必然是结构化程序 • 结构化程序的特点 • 自顶向下 • 逐步细化 • 模块化设计 • 结构化编码

  21. 本章小结 • 算法的概念 • 简单算法的设计 • 算法的特性 • 算法的表示(流程图、伪代码) • 算法的3种结构 • 结构化程序设计思想

More Related