c语言程序设计第二章课件,C语言程序设计第二章课件

《C语言程序设计第二章课件》由会员分享,可在线阅读,更多相关《C语言程序设计第二章课件(25页珍藏版)》请在人人文库网上搜索。

1、C语言程序设计,主讲:龚文引,第二讲:程序设计的灵魂算法,2.1 算法的概念,要利用计算机处理问题,光学习语言的语法规则还不够,最重要的是要学会针对各类型的问题,拟定出有效的解题方法和步骤。解题方法和步骤就是算法。 算法 为了解决一个问题而采取的有限步骤。 计算机算法 如何使计算机一步一步地工作的具体过程。,2.1 算法的概念 (Cont.),利用计算机处理问题的步骤: 设计好算法算法设计; 用计算机语言实现算法程序设计。 算法设计还要充分考虑算法的好坏。 衡量算法好坏的主要标准: 程序简练 执行速度快 占空间少,2.1 算法的概念 (Cont.),算法的特点 有穷性 确定性 有效性 有零个或。

2、多个输入 有一个或多个输出,2.1 算法的概念 (Cont.),例2.1 考虑 的算法 算法:直接表达。 直接用语句 s=1+2+3+4+5+6+7+8+9+10,当项数较多时该算法不适用,2.1 算法的概念 (Cont.),算法:迭代法(累加求和法) s=1+2+3+4+5+6+7+8+9+10 算法步骤: 使s=0 使i=1 s+is i+1i 若i10转,否则转 输出s,0,1,1,2,3,3,6,4,10,5,该算法通用,是好算法,s,i,+,累加器,计数器,2.2 算法的表示,算法需要有统一的表示方法 常见的表示方法有: 自然语言 流程图 结构化程序图 N-S流程图,2.2 算法的表。

3、示 (Cont.),自然语言表示,对于计算 s=1+2+3+4+5+6+7+8+9+10 用自然语言表示为: 使s=0 (s为累加器) 使i=1 (i为计数器) s+is (累加求和公式) i+1i (计数器加1) 若i10转,否则转 输出s的值,特点:通俗易懂;文字冗长、含义不大严格。,2.2 算法的表示 (Cont.),流程图表示 用流程图符号表示算法 常用的流程图符号有:,对于计算 s=1+2+3+4+5+6+7+8+9+10 用流程图表示为:,Start,s+i s,i+1 i,i10,输出s,End,0 s,1 i,直观形象,易于理解,次序清楚,Y,N,2.2 算法的表示 (Cont。

4、.),流程图包含以下部分 表示相应操作的框 带有箭头的流程线 框内外必要的问题说明,流程线不要忘记画箭头,2.2 算法的表示 (Cont.),结构化表示 传统的流程图有一个弊端: 对流程线没有严格的限制,对于较复杂的算法可能会变成乱麻一般(BS型算法a Bowl of Spaghetti) 为克服这一弊端,提出了由三个基本结构组成算法流程图的思想: 结构化流程图,2.2 算法的表示 (Cont.),结构化表示顺序结构 按固定顺序(从上到下或从左到右)执行的结构,A,B,a,b,2.2 算法的表示 (Cont.),结构化表示选择结构 根据条件p选择执行哪一个分支,p,A,B,a,b,成立,不成立。

5、,例:计算 y= 1/x 当x0时 y= 10000 当x=0时 的算法流程图: 选择结构,开始,输入x,X=0?,10000y,1/xy,输出y,结束,Y,N,2.2 算法的表示 (Cont.),结构化表示循环结构 重复执行某些操作的结构: 当型(while)循环和直到型(until)循环,P1,A,A,P2,a,a,b,b,Y,Y,N,N,当型循环,直到型循环,2.2 算法的表示 (Cont.),结构化表示的特点 只有一个入口 只有一个出口 结构内每一部分都有机会被执行到 不存在死循环,观察前例:,开始,0 s,1 i,S+i s,i+1 i,i10,输出s,结束,顺序结构,循环结构,y,。

6、n,2.2 算法的表示 (Cont.),N-S流程图表示 N-S流程图的三个基本结构,A,B,P,成立,不成立,A,B,A,B,当P1,直到P2,顺序结构,选择结构,循环结构,例:计算 y= 1/x 当x0时 y= 10000 当x=0时 的N-S流程图:,输入x,x=0?,是,否,10000y 1/xy,输出y,例: 计算 s=1+2+3+4+5+6+7+8+9+10 的N-S流程图: 直到型 当型,0 s,1 i,输出s,1 i,0 s,s+i s,i+1 i,s+i s,i+1 i,输出s,i10,直到i10,算法设计实例,判定20002500年中的每一年是否闰年,将结果输出。 分析:闰。

7、年的条件是: 能被4整除,但不能被100整除的年份都是闰年,如1996,2004年是闰年; 能被100整除,又能被400整除的年份是闰年。如1600,2000年是闰年。 不符合这两个条件的年份不是闰年。,算法设计实例 (Cont.),自然语言表示 S1:2000 y S2:若y不能被4整除,则输出y “不是闰年”。然后转到S6。 S3:若y能被4整除,不能被100整除,则输出y “是闰年”。然后转到S6。 S4:若y能被100整除,又能被400整除,输出y“是闰年”,否则输出“不是闰年”。 然后转到S6。 S5: 输出y “不是闰年”。 S6:y+1 y S7:当y2500时,转S2继续执行,若y2500,算法停止。,算法设计实例 (Cont.),流程图表示,算法设计实例 (Cont.),N-S图表示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值