C语言之算法的概念和特点

一、算法的概念
对算法最通俗易懂的说法是:解决问题的方法和步骤

一个程序主要包块两个方面的信息:

(1)数据:在程序中要用到那些数据,以及这些数据的类型和数据的组成形式。

(2)算法:解决某个问题所选用的方法,以及用该方法解决问题的步骤。

而算法要解决的不仅仅是“数值计算”问题,更多的是解决“非数值运算问题”;

(1)数值运算: 对于数值运算往往有现成的模型,因为人们对数值运算研究比较深入,算法比较成熟,几乎所用数值运算都可以找到问题解决方法。问题:加减乘除、判断闰年、求方程的根……

(2)非数值运算: 非数值运算的种类繁多,要求各异,难以做到全部都有现成的答案,因此只有一些典型的非数值运算(例如排序算法、查找搜索算法等)有现成的、成熟的算法可供使用。非数值运算最常见的就是用于事务管理领域,如:图书检索、学生电子信息档案、人事管理和行车调查管理……

二、算法的特征
1.有穷性:一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。 一个算法应包括有限的操作步骤,这里的有穷性意思是指“在合理的范围之内”,比如让计算机运算10000年才结束,那该计算就不能算有效的算法,究竟什么算是“合理限度”,由人们的常识和需要判读。

2.确定性:算法中的每一个步骤都应当是确定的,不能是含糊和模棱两可,使算法的执行者或阅读者都能明确其含义及如何执行 。例如“手举过头顶”,这个步骤就是不确定的,没有说明是右手、左手、还是双手举过头顶。

3.有效性(可行性): 算法中每一个步骤都应当能有效地执行,并得到确定的结果。 例如,若b=0,则执行a/b是不能有效执行的,因为分母不能为0。

4.有0个或多个输入:所谓输入是指在执行算法时需要从外界取得必要的信息。 例如,求任意两个整数的最小值,则需要用键盘输入2个整数,然后才能输出最小值。当然,一个算法也可以没有输入,比如直接输出一行信息“Hello world!"。

5.有1个或多个输出:算法的目的就是为了求解,“解”就是输出,无输出的算法没有任何意义。 注意,算法的解,不仅仅是通过运算得到的数值,还可以是文字。

三、算法的表示方式
表示一个算法常用的方法有:自然语言、传统流程图、结构化流程图(N-S流程图)、伪代码、计算机语言等,重点是用计算机语言表示算法。

用计算机语言(C语言等)表示算法必须严格遵循所用的语言的语法规则,在前面写的最简单的程序(Hello world!及详解)文章中就介绍了C语言最简单程序,以及C语言的一些最基本语法规则。
四、结构化程序设计方法

结构化程序设计方法的基本思路:把一个复杂问题过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。

得到结构化的程序一般包括以下4个步骤:
(1)自顶而下
(2)逐步细化

自上而下、逐步细化:将问题求解由抽象逐步具体化的过程。(类似写文章时拟提纲)
在这里插入图片描述

(3)模块化设计:将程序模块,分成若干个子模块(一般不超过50行),划分子模块时要注意模块的独立性(每一个模块完成一项功能)
(4)结构化编码:将以设计好的算法用计算机语言来表示(结构化语言:C语言、Visual Basic等)

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值