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

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课——算法(2)
2页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请...C语言一日一学第2课——算法(2) C语言一日一学C语言一日一学隐藏>> N-...
C语言一日一学第2课——算法(1)
C语言一日一学第2课——算法(1) C语言一日一学C语言一日一学隐藏>> 算法...如 1996,2004 年 是闰年;(2)能被 100 整除,又能被 400 整除的年份是闰年...
《1.2 基本算法语句》一课一练2
1.2 基本算法语句》一课一练2_高三数学_数学_高中教育_教育专区。必修 3 ...C、 数据库 D、 自然语言 4、算法: S1 输入 n S2 判断 n 是否是 2,若...
C语言第2次作业 算法与
A. 2 B. 3 C. 4 D. 不确定 学生答案: B 参考答案: B 2算法的表示方法有___。 A. 自然语言,传统流程图,N-S 流程图,伪代码,计算机语 言 B. 高...
第2章作业 算法
C语言C语言题隐藏>> 第2章 程序的灵魂——算法 程序的灵魂——算法 ——...8、程序设计三种基本结构的共同特点(1)只有一个入口 (2)只有一个出口 结构内...
C语言一日一学第4课——最简单的C程序设计----顺序程序设计(2)
C语言一日一学第4课——最简单的C程序设计---顺序程序设计(2) C语言一日一...2. 3. 4. 5. 6. 7. 8. %d:以带符号的十进制形式输出整数 %o:以八...
C语言程序设计(第2版)-- 课后题答案
C语言程序设计(第2版)-- 课后题答案_其它_高等...(2)(float)(a+b)/2+(int)x%(int)y,设 a=...定义一个结构体变量来表示日期(包括年、月、) ,...
C语言一日一学第7课——数组(2)
C语言一日一学第7课——数组(2) C语言一日一学C语言一日一学隐藏>> 1...." ?- m2 [+ w+ ]( s 先用 N-S 流程图表示算法 ,如下: 3 ?" p(...
C语言程序设计-第2章-习题
C语言程序设计-第2章-习题_理学_高等教育_教育专区。C语言程序设计基础1...3、用传统流程图和 N-S 结构图表示求解一下问题的算法: (1)有 3 个数 a...
C语言常用算法-2
C语言常用算法-2 隐藏>> C 语言常用算法 C 语言常用算法归纳应当掌握的一般算法一、基本算法: 交换、累加、累乘 、非数值计算常用经典算法: 穷举、排序(冒泡,...
更多相关标签:
c语言算法学习 | 自学习算法 嵌入c语言 | 清华大学c语言公开课 | c语言教学课件 | 学通c语言的24堂课iso | 浙江大学c语言课件 | 学通c语言的24堂课 | c语言学生选课系统 |