当前位置:首页 >> 幼儿读物 >>

C语言一日一学第2课——算法(2)


N--S 流程图表示算法

# f* X0 W( ~8 K& O+ l9 k2 b6 R

1973 年美国学者 I.Nassi 和 B.Shneiderman 提出了一种新的流程图形式.在这种流程图中, 完全去掉了带箭头的流程线. 全部算法写在一个矩形框内, 在该框内还可以包含其它的从属 于它的框, 或者说, 由一些基本的框组成一

个大的框. 这种流程图又称 N--S 结构化流程图 . N--S 流程图用以下的流程图符号:
% l; g2 B7 E8 {

顺序结构

' Z8 j/ ~8 w4 W3 S& \* J7 j, e* k

选择结构
; I3 C% A5 n. Y) ]1 k% I: @0 Q) C

+ k: J7 @) A* a- h9 E4 C

循环结构

循环结构

' _3 d& ^+ K- ?* `! P

用三种 N--S 流程图中的基本框,可以组成复杂的 N--S 流程图.图中的 A 框或 B 框,可以是 一个简单的操作,也可以是三个基本结构之一.
; p7 y3 M- [7 m9 ?5 p . O+ m8 A. ]2 z4 [

A 框可以是一个选择结构 B 框可以是一个循环结构 将例 1.0 判定闰年的算法用 N--S 图表示
. f; Q8 T7 U9 \6 h! ?

N--S 图表示算法的优点 比文字描述直观,形象, 易于理解;比传统流程图紧凑易画.尤其是它废除了流程线,整 个算法结构是由各个基本结构按顺序组成的,N--S 流程图中的上下顺序就是执行时的顺序. 用 N--S 图表示的算法都是结构化的算法,因为它不可能出现流程无规律的跳转,而只能自 上而下地顺序执行. 伪代码表示算法 概念:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法. 特点:它如同一篇文章一样 ,自上而下地写下来.每一行(或几行)表示一个基本操作.它 不用图形符号, 因此书写方便 , 格式紧凑, 也比较好懂, 也便于向计算机语言算法(即程序) 过渡.
. o: m' v- e6 q; i/ U- Z, U8 o* b+ P ! H$ s: q5 r4 X F! M) D

用处:适用于设计过程中需要反复修改时的流程描述. 例 1.1 输出 50 个学生中成绩高于 80 分者的学号和成绩. 用伪代码表示算法

1. 2.

BEGIN{算法开始} 1 g i

3. 4. 5. 6. 7. 8. 9. 10. 11.

while i≤50 { input and i+1 g i } 1 g i while i≤50 {if ≥80 print and END{算法结束} i+1 g i}

复制代码

计算机语言表示算法 概念:用计算机实现算法.计算机是无法识别流程图和伪代码的.只有用计算机语言编写的 程序才能被计算机执行. 因此在用流程图或伪代码描述出一个算法后, 还要将它转换成计算 机语言程序. 特点: 用计算机语言表示算法必须严格遵循所用的语言的语法规则, 这是和伪代码不同的.
T& Z0 e) q ! ?$ W*

用处:要完成一件工作,包括设计算法和实现算法两个部分.设计算法的目的是为了实现算 法. 例 1.2 求 5!用 C 语言表示.

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.

#include <stdio.h> void main( ) { int i,t; t=1; i=2; while(i<=5) { t=t*i; i=i+1; } printf("%d\n",t); }

复制代码

应当强调说明:写出了 C 程序,仍然只是描述了算法,并未实现算法.只有运行程序才是实 现算法.应该说,用计算机语言表示的算法是计算机能够执行的算法. 结构化程序设计方法 一个结构化程序 就是用高级语言表示的结构化算法.用三种基本结构组成的程序必然是结 构化的程序,这种程序便于编写,便于阅读,便于修改和维护. 结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构. 结构化程序设计方法的基本思路是:把一个复杂问题的求解过程 分阶段进行,每个阶段处 理的问题都控制在人们容易理解和处理的范围内. 采取以下方法来保证得到结构化的程序: 自顶向下; 逐步细化; 模块化设计; 结构化编码. 两种不同的方法: 自顶向下,逐步细化; 自下而上,逐步积累 用这种方法逐步分解, 直到作者认为可以直接将各小段表达为文字语句为止. 这种方法就叫 做"自顶向下,逐步细化". 自顶向下,逐步细化方法的优点: 考虑周全,结构清晰,层次分明,作者容易写,读者容易看.如果发现某一部分中有一 段内容不妥,需要修改,只需找出该部分修改有关段落即可,与其它部分无关.我们提倡用 这种方法设计程序.这就是用工程的方法设计程序. 模块设计的方法: 模块化设计的思想实际上是一种"分而治之"的思想, 把一个大任务分为若干个子任务, 每 一个子任务就相对简单了. 在拿到一个程序模块以后, 根据程序模块的功能将它划分为若干个子模块, 如果这些子模块 的规模还嫌大,还再可以划分为更小的模块.这个过程采用自顶向下方法来实现. 子模块一般不超过 50 行 划分子模块时应注意模块的独立性,即:使一个模块完成一项功能,耦合性愈少愈好. 作 业: 1.用 N-S 流程图表示下题 (1)依次输入 10 个数,要求将其中最大的数输出. (2)有 3 个数,a,b,c,要求按大小顺序把他们输出. (3)求 1+2+3+…+100. 2.用伪代码表示 1 题目中的(3) 3.什么叫结构化程序设计,他的主要内容是什么? 4.用自顶向下,逐步细化方法进行 1 题中的(1)(2)算法的设计
0 I j- f0 I - G6 ~ 8 M/ s$ D% l2 ?3 N: } * F& h. C) K* n3 w. G ; O" }# G) D' G0 r5 f % D0 \% Z( z+ R6 S6 `: ] " t% }( ]8 H& Y % ~- V1 w- h- U( O7 D+ ^- {: J 1 J% N5 u5 j 2 b- x 7 [2 q - r" o5 v * [9 u9 ]6 M+ {2 `' T $ j- k/ s0 A9 ^- h6 x , a8 R/ h. [ 8 P+ i 7 ^

相关文章:
C语言一日一学第7课——数组(2)
C语言一日一学第7课——数组(2)_互联网_IT/计算机_专业资料。C语言一日一..." ?- m2 [+ w+ ]( s 先用 N-S 流程图表示算法 ,如下: 3 ?" p(...
C语言一日一学第4课——最简单的C程序设计---顺序程序...
C语言一日一学第4课——最简单的C程序设计---顺序程序设计(2) C语言一日一学C语言一日一学隐藏>> 1.4 字符数据的输入输出 (一).字符输出函数 9 T6 T#...
C语言常用算法2
C语言常用算法2_计算机软件及应用_IT/计算机_专业资料。C语言,算法 ...&num2); switch(o) { case '+': printf("%.1f + %.1f = %.1f"...
C语言常用算法-2
C语言的六种常用算法 5页 1财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 C语言常用算法-2 隐藏>> C 语言常...
C语言一日一学第8课——函数(2)
C语言一日一学第8课——函数(2) C语言一日一学C语言一日一学隐藏>> 1.4...2. int i=2,p; p=f(i,++i); 复制代码 如果按自左至右顺序求实参的...
C语言一日一学第6课——循环控制(2)
C语言一日一学第6课——循环控制(2) C语言一日一学C语言一日一学隐藏>> ...y$ f- P% A0 q ' g: N-S 结构化流程图表示算法 9 R% R7 c$ m. ...
C语言第2次作业 算法与
单选题: 1、将三个数排序需要比较___次。 A. 2 B. 3 C. 4 D. 不确定 学生答案: B 参考答案: B 2算法的表示方法有___。 A. 自然语言,传统流程...
C语言100个经典算法 2
C语言100个经典算法 2_计算机软件及应用_IT/计算机_专业资料。C 语言的学习基础...一只猴子摘了 N 个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的 ...
c语言与程序设计-第2章课后习题参考答案
c语言与程序设计-第2章课后习题参考答案_理学_高等...(1) ++a*b-(2) !a+b/c (3) a==-b+c...(6) a||b^i 错误,^左侧类型为 double (7)...
C语言经典算法100例 2
C语言经典算法100例 2 C语言学习资料C语言学习资料隐藏>> 【程序 1】 题目:...=== = 【程序 4】 题目:输入某年某月某日,判断这一天是这一年的第几天? ...
更多相关标签: