知识点
算法的五个特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性
计算机科学家沃思提出:程序 = 算法 + 数据结构
常用的算法表示方法有:自然语言、传统流程图、结构化流程图、伪代码、PAD图等
计算机算法可分为两大类:数值运算算法和非数值运算算法
习题
2.1 什么是算法?试从日常生活中找3个例子,描述它们的算法。
算法是对解题方案的准确而完整的描述,是一系列解决问题的清晰指令。
例1:上课
S1:从宿舍向教学楼出发
S2:进入教室
S3:找空位
S4:坐下
例2:晾衣服
S1:将衣服从洗衣机内取出
S2:将衣架置入衣物内
S3:将衣物挂上晾衣架
例3:喝茶
S1:将茶叶放入茶壶
S2:倒入开水等待几分钟
S3:倒入茶杯
S4:喝茶
2.2 什么叫结构化的算法?为什么要提倡结构化的算法?
结构化算法是由一些基本结构顺序组成的,如顺序结构、选择结构、循坏结构。
因为结构化的算法不存在无规律的转向,相较于非结构化的算法更为严谨阅读性以及质量更高。
2.3 试述3种基本结构的特点,你能否自己另外设计两种基本结构(要符合基本结构的特点)。
顺序结构:一种线性有序的结构,依次执行各语句模块
选择结构:根据条件成立与否选择程序执行的通路
循坏结构:重复执行一个或几个模块,直到满足某一条件
基本结构的特点:
① 只有一个入口
② 只有一个出口
③ 结构内的每一部分都有机会被执行到。
④ 结构内不存在死循环
由此可以给出以下两种结构:while型和until型循坏复合以及多选择结构
2.4 用传统流程图表示求解以下问题的算法。
(1)有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现在改盛酱油,B瓶则相反)。
(2)依次将10个数输入,要求将其中最大的数输出。
(3)有3个数a、b、c,要求按大小顺序把它们输出。
(4)求1+2+3+...+100。
(5)判断一个数n能否同时被3和5整除。
(6)将100~200之间的素数输出。
(7)判断一个数m和n的最大公约数。
(8)求方程式ax²+bx+c=0的根。分别考虑:①有两个不等的实根;②有两个相等的实根;
2.5 N-S图表示2.4题中各题的算法。
2.6 用伪代码表示2.4题中各题的算法。
2.7 什么叫结构化程序设计?它的主要内容是什么?
结构化程序设计是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变单纯而明确,为设计一些较大的软件打下了良好的基础。
2.8 用自顶向下、逐步细化的方法进行以下算法的设计:
(1)输出1900-2000年中是闰年的年份。
(2)求ax²+bx+c=0的根,分别考虑D=b²-4ac大于0、等于0和小于0这3种情况。
(3)输入10个数,输出其中最大的一个数。