c语言程序设计算法语言,《C语言程序设计》算法的概念.docx

C程序设计

第2章程序的灵魂-算法

—个程序包括以下两个方面的内容:

对数据的描述。在程序中要指定数据的类型和数据的 组织形式,即数据结构。

对操作的描述。即操作步骤,也就是算法。

数据是操作的对象,操作的目的是对数据进行加工 处理,以得到期望的结果。作为程序设计人员,必须认 真考虑和设计数据结构和操性步骤(即算法)。著名计 算机科学家沃思提出一个公烹:数据结构+算法二程序。

实际上,一个程序除了以上两个主要要素之外,还 应当采用结构化程序设计方法进行程序设计,并且用某 一种诂算机蚩言表示。因止乞算涛、哎攵据结构、程序设 计方袪和语書工具4个方面崑一苗呈帶设计人员所应具 备的知识。

2.1算法的概念

子。广义地说,为解决一个问题而采取的方法和步骤2 就称为算法(algorithm)。例如*苗迷天极睾动彳乍的囱鮑 就是太极拳的賢法。一首歌曲的乐谱,也可以称为该 ii窗——————…

子。

对同一个问题,可以有不同的解题方法和步骤。 计算机算法可分为两大类别:

数值迈昇昇法

非数值运算算法

2.2简单算法举例

[例 2.1]求 1X2X3X4X5

算法1:

步骤1:先求1*2,得到结果2。

步骤2:将步骤1得到的乘积2再乘以3,得到结果6。

步骤3:将6再乘以4,得24。

步骤4:将24再乘以5,得120。

算法2:

S y使卩二1

52:使上2

S3:使卩忆乘积仍放在变量p中,可表示为p*Z=>p

S4:使泊勺值加1,即z+l=>z

S5:如果7不大于5,返回重新执行步骤S3以及其后的步 骤S4和S5;否则,算法结束。最后得卩的值就是5!的 值。

[例2.2]有50个学生,要求将他们之中成绩在80 分以上的学号和成绩输出

弘代表第Z个学生学号。g,代表第Z个学生成绩,算法 如下:

5]: 1=>/ 52:如果£>80,则输出彼和&;否则不输出

S3: Z+lnZ

54:如果注50,返回S2,继续执行;否则,算法结束。

[例2.3]判定2000-2500年中的每一年是否是闰年

闰年的条件是:⑴能被4整除但不能被100整除的 年份是闰年,如1996年、2004年;(2)能被400整除的年 份是闰年,如1600年、2000年。

设y为被检测的年份。可采用以下步骤:

S]: 2000=>y

齐:若y不能被4整除,则输出、不是闰年” o然后转

员:若y能被4整除,不能被100整除,则输出、是闰 年” o然后转到S6

S4:若y能被400整除,输出“y是闰年”,然后转到S&

S5:输出“y不是闰年” ^6 ■ v+iny

S7:当庐2500时,转S?继续执行,否则算法停止。

[例 2.4]求 1-1/2+1/3-1/4+...+1/99-1/100

算法如下:

S]: sign=l

S2 - sum= 1

S3: deno=2

S4: sign=(-l^sign

S5: term=sign*(l/deno)

S6: sum=sum+term

S7: deno=deno+l

若deno<100返回S4;否则算法结束。

[例2.5]对一个大于或等于3的正整数,判断它 是不是-个素数丿yW

判断一个数n(n>3)是否素数的方法是将M乍为被除数, 将2到介1各个整数先后作为除数,如果都不能被整除, 则兀为素数。

算法如下:

S]:输入〃的值

52: i=2 G作为除数)

S3: 〃被i除,得余数厂

Sj:如果r=0,表示“能被z?整除,则输出 J不是素数”, 聲法结束;否则执行S5

J是素数乃,然后S5:

J是素数乃,然后

S宰如果i

2.3算法的特性

(1)有穷性。一个算法应包含有限的操作步骤,而不能 是无B艮的。

(2)确定性。算法中的每一个步骤都应当是确定的,而 不应当是含糊的、模棱两可的。

(3)有零个或多个输入。所谓输入是指在执行算法时需 要从外界取得必要的信息。

(4)有一个或多个输出。算法的目的是为了求解,“解” 就是输出。

(5)有效性。算法中的每一个步骤都应当能有效地执行, 并得到确定的结果。

2.4怎样表示一个算法

为了表示一个算法,可以用不同的方法。 常用的方法有:

自然语言 传统流程图 N-S流程图 伪代码 PAD图等。

O

O连接点

242用流程图表示算法

) 起止框

输入输出框

处理框 流程线

[例2.6]将例2.1求5啲算法用流程图表示

2=>z

門二”

汁1二>『

[例2.7]将例2.2的算用流程图表示。将50名学生 中成绩在80分以上者的学号和成绩输出

JY

JY

[例2.8]将例2.3判定闰年的算法用流程图表示

20003),

y不能被4整除

N

y二二y禾能被loo整矗二二二円

输出y是闰年输出y

输出y是闰年

输出y不是闰年

输出y是闰年

输出y不是闰年

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值