C语言第3章-计算机算法初步课件.ppt

上传人(卖家):三亚风情 文档编号:3377133 上传时间:2022-08-25 格式:PPT 页数:25 大小:230KB
下载 相关 举报
C语言第3章-计算机算法初步课件.ppt_第1页
第1页 / 共25页
C语言第3章-计算机算法初步课件.ppt_第2页
第2页 / 共25页
C语言第3章-计算机算法初步课件.ppt_第3页
第3页 / 共25页
C语言第3章-计算机算法初步课件.ppt_第4页
第4页 / 共25页
C语言第3章-计算机算法初步课件.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、第第3 3章章 计算机算法初步计算机算法初步 3.3 递推与迭代法 3.2 穷举法 3.1 算法的概念 3.1 3.1 算法的概念算法的概念 利用计算机求解问题的一般过程(1)问题分析阶段(2)数据结构设计阶段(3)算法设计阶段(4)编码与调试阶段 算法描述l在计算机科学的发展过程中,人们已经提出了很多种类的算法描述方法。l一种是自然语言的描述方法。鉴于自然语言本身过于灵活且又缺乏严谨性,所以容易产生理解上的歧义。l还有一种算法的图形描述方式流程图。它采用一些标准的图形符号描述算法的操作过程,从而避免了人们对非形式化语言的理解差异。起止框I/O框处理框判断框调用框连接框有向边 常用流程图符号例

2、1:求解一元二次方程 问题分析l假设一元二次方程可以书写成ax2+bx+c=0。可以看出,任何一个一元二次方程都由三个系数a、b、c惟一确定,所以,首先需要用户输入三个系数,然后再根据一元二次方程的求解规则计算最终的结果,并将结果显示输出。算法描述 N N Y Y 开始 输入 a,b,c b2-4ac t t 0 t=0 结束 输出一个解 输出“无解”输出两个解#include#include main()int a,b,c,t;printf(“Input a,b,c:”);scanf(“%d%d%d”,&a,&b,&c);t=b*b 4*a*c;if(t0)printf(“No soluti

3、onn”);else if(t=0)printf(“X=%lfn”,-b/(2.0*a);else double t0;t0=sqrt(double)t);printf(“X1=%lf,X2=%lfn”,(-b+t0)/(2*a),(-b-t0)/(2*a);程序代码 3.2 3.2 穷举法穷举法 概述l穷举法,又称为枚举法,是人们日常生活中常用的一种求解问题的方法。穷举法的核心在于明确问题的所有可能性,并针对每种可能情况逐个进行判断,最终找出正确问题的答案。穷举法应用实例1:素数的判断 l所谓素数是指仅能被1和自身整除,且大于等于2的数值。判断一个给定的数值是否是素数是穷举法的典型实例。例2

4、:判断给定整数是否是素数。问题分析l为了检查一个整数是不是素数,可以采用穷举法。假设给定的整数用x表示,则判断过程就是确认x不能整除以2x-1之间的任何整数。这就需要一一列举出2x-1之间的每个整数进行排查。NY开始输入x2 tt xt 加1x%t=0结束输出“不是素数”输出“是素数”YNt=xYN 算法描述#include main()int x,t;printf(“Enter an integer:”);scanf(“%d”,&x);for(t=2;tx;t+)/*列举小于列举小于x大于大于1的所有整数的所有整数*/if(x%t=0)break;if(t=x)/*是否通过循环条件出口是否通

5、过循环条件出口*/printf(“%d is primen”,x);else printf(“%d isnt primen”,x);程序代码 穷举法应用实例2:百钱买百鸡l“百钱买百鸡”是我国古代数学家张丘建提出的一个著名的数学问题。假设某人有钱百枚,希望买一百只鸡;不同的鸡价格不同,公鸡5枚钱一只,母鸡3枚钱一只,而小鸡3只1枚钱。试问:如果用百枚钱买百只鸡,可以包含几只公鸡、几只母鸡和几只小鸡。例3:百钱买百鸡。问题分析l从题目要求可知:公鸡、母鸡和小鸡的数量是有限的,都不会超过100。通过对不同数量的公鸡、母鸡和小鸡进行组合,可以计算出购买这些鸡所用的花费,但这个题目要求找出那些花费正好

6、100枚且鸡的总数也为100只的情况。因此,可以采用穷举法,将不同的公鸡、母鸡和小鸡的数量枚举一遍,找出那些符合题目要求的解。算法描述 N Y 开始 条件判断 x 加 1 结束 z=100 x=100/5 y=100/3 x y 加 1 z 加 1 0 x 0 y 0 z 输出 x,y,z N Y Y N N Y#include#include main()int x,y,z;for(x=0;x=100/5;x+)for(y=0;y=100/3;y+)for(z=0;z=100;z+)if(x+y+z=100&15*x+9*y+z=300)printf(“x=%d,y=%d,z=%dn”,x,

7、y,z);程序代码 3.3 3.3 递推与迭代法递推与迭代法 概述l递推常用于序列数据的计算。其基本策略是用已知结果和特定关系(递推公式)计算中间值。l采用递推法进行问题求解的关键在于找出递推公式和边界条件。l迭代也是计算机数值计算的一种基本算法,其基本策略是从初值出发,不断计算问题的近似解。递推与迭代法应用实例1:等比数列求和 l所谓等比数列是指在一组数据中,后项和前项之前存在着一个固定的比例关系。例如:整数序列3、15、75、375的初值是3,后项与前项是5倍的关系,即前项乘以5得到后项。l本题要求给定等比序列的首项和比例,计算这个数列的前10项之和。例4:等比数列求和。问题分析l等比数列

8、的递推公式为:itemi=itemi-1*ratio后项等于前项乘以比例值sumi=sumi-1+itemi前i项之和等于前i-1项之和加当前项l由于在重复上述递推计算之前,需要将第1项的值累加到sum中,所以,需要先将item存入sum中。算法描述 N Y 开始 输入 item,ratio item sum 1 i i 10 item*ratio item 加一 sum+itemsum i 加 1 结束 输出 sum#include main()int item,ratio,sum,i;printf(“nEnter the first item and ratio:”);scanf(“%d%d”,&item,&ratio);sum=item;for(i=1;i 1 0-4(-1)i+14/(2 i-1)item P I+item P I i 加 1 结 束 输 出 P I#include#include main()int i=1,sign=1;double PI=0.0,item;do item=sign*4.0/(2*i+-1);sign=-sign;PI+=item;while(fabs(item)1e-4);/*数据项精度控制循环数据项精度控制循环*/printf(“PI=%lfn”,PI);程序代码

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言第3章-计算机算法初步课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|