针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。②不考虑已排好序的数据,将剩下的数据作为待排序列。编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。......
2023-11-20
算法的描述方法主要有如下几种。
1.自然语言描述
用自然语言描述算法时,可使用汉语、英语和数学符号等,通俗易懂,比较符合人们的日常思维习惯,但描述文字显得冗长,在内容表达上容易引起理解上的歧义,不易直接转换为程序,所以一般适用于算法较为简单的情况。
2.流程图描述
流程图是一个描述程序的控制流程和指令执行情况的有向图,它是程序的一种比较直观的表示形式。美国国家标准化协会(ANSI)规定了图3.1所示的符号作为常用的流程图符号。用传统流程图描述算法的优点是流程图可直接转化为程序,形象直观,各种操作一目了然,不会产生歧义,易于理解和发现算法设计中存在的错误;但缺点是所占篇幅较大,允许使用流程线,使用者可使流程任意转向,有可能造成程序阅读和修改上的困难。
3.NS结构化流程图描述
NS结构化流程图是由美国学者I.Nassi和B.Schneiderman于1973年提出的,NS图就是以这两位学者名字的首字母命名的。它最重要的特点就是完全取消了流程线,这样迫使算法只能从上到下顺序执行,从而避免了算法流程的任意转向,保证了程序质量。与传统的流程图相比,NS图的另一个优点就是形象、直观,节省篇幅,尤其适合于结构化程序的设计。
例如,用传统流程图表示的顺序结构如图3.2(a)所示,用NS图表示的顺序结构如图3.2(b)所示,表示先执行A操作,再执行B操作,两者是顺序执行的关系。(www.chuimin.cn)
图3.1 传统流程图中的常用符号
图3.2 顺序结构的流程图表示
4.伪码描述
伪码是指介于自然语言和计算机语言之间的一种代码,它的最大优点是与计算机语言比较接近,易于转换为计算机程序。书写无固定格式和规范,比较灵活。
很多初学者常常因急于求解问题而直接写代码,然后边写边改,越改思路越乱,结果是欲速则不达。当我们面对一个实际生活问题时,首先应通过抽象、分解、归纳、约简等分析手段将问题抽象为数学模型,并设法找到其求解方法,然后将问题求解方法用算法描述出来,进一步分析是否存在更优(如效率更高)的求解方法,最后再将算法编码实现。在上述4种算法描述方法中,传统流程图是初学者最易掌握,也是最清晰直观的一种算法描述方法,在流程图上查找算法的逻辑错误也比直接在代码上查找更快、更有效。因此,在学习程序设计时应养成“先画程序流程图,然后再编写代码”的好习惯。
有关C语言程序设计基础(第3版)的文章
针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。②不考虑已排好序的数据,将剩下的数据作为待排序列。编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。......
2023-11-20
算法是对操作或行为的描述。算法代表着用系统的方法描述解决问题的策略。不同的算法可能用不同的时间、空间或效率来完成同样的任务。那么怎样衡量一个算法的正确性呢?算法包含的操作步骤应该是确定的,不允许有歧义。算法的实现是以得到计算结果为目的的,没有任何输出的算法没有任何意义。......
2023-11-20
在程序设计中,许多问题的解“隐藏”在多个可能之中。在一个集合内对集合中的每一个元素进行一一测试的方法称为穷举法。穷举方法的实现主要依赖于以下两个基本要点:·搜寻可能值的范围如何确定。程序设计中应据问题的描述具体分析,确定时应尽量缩小搜索范围,提高程序效率。编写程序找出所有的“水仙花数”。程序可以依次取出区间[100,999]之间的每一个数,然后将该数分解为3个数字,按照判定条件判定即可。......
2023-11-20
若在表中找不到与给定条件相符合的数据,则称为不成功的查找,给出提示信息或空位置信息。本节介绍最常用的两种查找方法:顺序查找和折半查找。③基准位置数据值与查找的关键字值不相符时,在两个子集合中选取一个,重复执行①、②,直到被处理的查找集合中没有数据为止。图6.11是在一有序序列中实现对key=21进行折半查找的过程。......
2023-11-20
图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
A.与参数x的类型相同B.无法确定C.void类型D.int类型3.为了避免嵌套的条件语句if-else的二义性,C语言规定()。A.else与缩排位置相同的if配对B.else与同一行上的if配对C.else与其之后最近的if配对D.else与其之前最近的尚未配对的if配对4.设x、y、z和k都是int型变量,则执行表达式:x=后,x的值为()。A.7 B.6 C.5 D.47.在C语言程序中,用关键字()定义无符号型变量。else语句实现两个分支。......
2023-09-19
C语言中逻辑运算符及其含义见表3.2。表3.2逻辑运算符及其含义逻辑运算符“&&”和“||”是双目运算符,具有左结合性;“!”表3.3逻辑运算真值表C语言中进行逻辑表达式求值运算时,不但要注意逻辑运算符本身的运算规则,而且还必须要遵循下面的两条原则:·对逻辑表达式从左到右进行求解。......
2023-11-20
递推就是一个不断由变量旧值按照一定的规律推出变量新值的过程,递推在程序设计中往往通过迭代方法实现。迭代过程在程序结构上使用循环结构进行处理。求出斐波那契数列的前n项。题目分析:设用f1、f2和f3表示相邻的3个裴波那契数据项,据题意有f1、f2的初始值为1,即迭代的初始条件为:f1=f2=1;迭代的公式为:f3=f1+f2。......
2023-11-20
相关推荐