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

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语言第2次作业 算法与
A. 2 B. 3 C. 4 D. 不确定 学生答案: B 参考答案: B 2算法的表示方法有___。 A. 自然语言,传统流程图,N-S 流程图,伪代码,计算机语 言 B. 高...
C语言100个经典算法 2
C语言100个经典算法 2_计算机软件及应用_IT/计算机...生一对兔子,小兔 子长到第三个月后每个月又生一...} } } C 语言的学基础,100 个经典的算法-2 程序...
C语言一日一学第8课——函数(2)
7页 免费 C语言一日一学第8课——函... 7页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...
12.1算法的概念(第2课时)学案
3a ? 1 . (将___的表达式赋给变量) (2) i ? 0; i ? i ? 1. (...四、典型例题: 例 1:请仔细阅读下面的算法: 第一步 A=1,B=2,C=3; 第...
第2章答案
第2章答案_理学_高等教育_教育专区。夏耘c语言学习...计算表达式 c=(a^b<<2)后 c 的二进制数是__...2.编写程序,输入一个三角形的三条边,若能构成一...
2《高一数学 算法(二) 程序语句 》
2《高一数学 算法(二) 程序语句 》_数学_高中教育_教育专区。真金国际教育集团...程序语句()赋值、输入和输出语句 1.编写程序,任给五个变量 a、b、cc、...
高一数学算法框图第2课时
组成。 (2)顺序结构是任何一个算法都不可缺少的基本结构,它由 问题 1:求...画出这个算法的程序框图。 解:程序框图: 输入a,b,c 开始 Y a+b>c, a+...
C语言一日一学第4课——最简单的C程序设计---顺序程序...
C语言一日一学第4课——最简单的C程序设计---顺序程序设计(2) C语言一日一...2. 3. 4. 5. 6. 7. 8. %d:以带符号的十进制形式输出整数 %o:以八...
算法标准答案
每个测试数据输入一个整数 n( 2 <= n <= 9) ...(a); } 2411: 鹦鹉学舌 2——C 语言初学者百...零起点学算法 87——打印所 有低于平均分的分数 Time...
C语言一日一学第7课——数组(2)
C语言一日一学第7课——数组(2) C语言一日一学C语言一日一学隐藏>> 1...." ?- m2 [+ w+ ]( s 先用 N-S 流程图表示算法 ,如下: 3 ?" p(...
更多相关标签:
清华大学c语言公开课 | c语言学生选课系统 | c语言教学课件 | c语言课设小学生测验 | 学通c语言的24堂课 | 大学c语言课本 | c语言教学视频49课时 | c语言课程教学大纲 |