程序设计语言初步二

程序设计语言初步二

ID:27769800

大小:2.99 MB

页数:140页

时间:2018-12-03

程序设计语言初步二_第1页
程序设计语言初步二_第2页
程序设计语言初步二_第3页
程序设计语言初步二_第4页
程序设计语言初步二_第5页
资源描述:

《程序设计语言初步二》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1第四章算法设计方法24.1算法的概念4.2算法的三种基本结构4.3算法的描述方法4.4结构化程序设计方法4.5算法设计实例研究提纲3程序设计的目的和步骤算法的描述方式计算机算法及其特性4.1算法的概念44.1算法的概念一.程序设计的目的计算机科学与技术学科的根本问题是:什么能够被有效地自动化;设计程序的根本目的:让计算机帮助人们自动地完成所要处理的复杂任务;程序设计两个核心问题:“做什么”与“怎么做”;其中需求分析解决“做什么”,程序设计解决“怎么做”。54.1算法的概念二.程序设计两步走对复杂问题,直接写出能解决该问题的计算机程序是困难的,为此,人们在进行程序设计时分

2、两步走:1)算法设计:不使用程序设计语言,而使用一种较简单明了的表达方式(例如自然语言)设计出求解问题的步骤序列---算法。2)程序编写:根据设计并描述好的算法,使用某种程序设计语言编写对应于该算法的程序。6三.算法的概念算法:是解决问题的步骤序列(操作序列)。4.1算法的概念起床穿衣、叠被去水房洗漱回宿舍放洗漱用品骑车去食堂排队买饭吃饭交回餐具骑车去教室描述的是活动和过程7:20前离开宿舍7:50前离开食堂8:00前进入教室描述的是操作执行后的状态,通过状态的转移来描述所执行的操作。可能的活动:起床、穿衣叠被、洗漱等可能的活动:骑车到食堂、排队买饭、吃饭、交回餐具74.

3、1算法的概念四.计算机算法及其特性什么是计算机可执行的操作;要在计算机能力集上进行算法设计;算法必须具备的五个特性:可执行性:算法中的每一个步骤都是计算机可执行的(在计算机能力集范围内);确定性:算法中的每一个步骤,必须是明确定义的,不得有任何歧义性;有穷性:算法必须在执行有穷步之后结束;有输入信息的说明:对加工对象提要求;有输出信息的步骤:至少要输出问题答案。8例1求1×2×…×9×10,即10!算法思路:计算机能力集只提供两数相乘的运算。N!=N×(N-1)!10!=10×9!=10×9×8!=10×9×8×7!=…..=10×9×8×…×2×1!先计算1!、再计算2

4、!=2*1!、再计算3!=3*2!,…以此类推,直到计算出10!=10*9!。使用变量p9例1求1×2×…×9×10,即10!第一种算法:S1(求2!):先求2×1,得到结果2并赋值给变量p;即:2×1→p;S2(求3!):将步骤S1得到的乘积p(p=2)再乘以3,得结果6并赋值给变量p;即:3×p→p;S3(求4!):将p(p=6)再乘以4,得24并赋值给变量p;即:4×p→p;S4(求5!):将p(p=24)再乘以5,得120并赋值给变量p;即:5×p→p;…S9(求10!):将p(p=362880)乘以10,得3628800,10×p→p;10#include

5、dio.h>main(){intp;p=2*1;//求2!赋值给pp=3*p;//求3!赋值给pp=4*p;p=5*p;p=6*p;p=7*p;p=8*p;p=9*p;p=10*p;//求10!赋值给pprintf("%d",p);system("pause");return0;}评价:求10!需要写9个赋值操作,算法过于繁琐!试想:求1000!的算法11对算法进行抽象:核心操作就是两数相乘i×p→p,反复相乘10-1=9次,i初始值为2,p初始值为1,每相乘一次i的值加1。根据上述分析,本题可利用循环结构求解:第1次循环用于求2!,第2次循环在第1次循环基础上求3!,…

6、,第9次循环在第8次循环基础上求10!例1求1×2×…×9×10,即10!12定义两个变量p和i,p代表阶乘结果,i代表本次循环要求的是i!;循环条件:i<=10循环体:p=i*p;(求i!)i=i+1;i!(i-1)!例1求1×2×…×9×10,即10!初始化:i=2;p=1由于本次循环求得的i*p的值将作为下次循环p的值,故本次循环将i*p赋值给p,为下一次循环做准备。13S1:使i=2;S2:使p=1;/*变量初始化*/S3:执行i×p,乘积仍放在变量p中,即i×p=>p;S4:使i的值加1,即i+1=>i;S5:如果i<=10,返回重新执行步骤S3以及其后的步骤S

7、4和S5;否则,算法结束。最后得到p的值就是10!的值。求1×2×…×9×10算法思路:“迭代”和“循环”:在程序设计中,重复执行同样操作的过程称为“迭代”。程序中被重复执行的程序段称为“循环”。14例1源程序#includemain(){intn,i,p;//n:存储要求阶乘的数;p:存储求得的阶乘;printf("inputn:");scanf("%d",&n);i=2;p=1;while(i<=n){p=i*p;i=i+1;}printf("%d!=%d",n,p);system("pause");

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。