- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主讲老师:刘志强 常用算法 主要分布: 第四章 第五章 第六章 三、累加、连乘 1、循环条件 次数控制(累加/连乘的项数n) 用误差控制(直到某一项小于或大于某个数) 使用终止标记 2、循环体 求和 求每一项:从前一项求出后一项,或单独求每一项 为下一项做准备 3、 循环初值: 设为0或设为第一项 注意双重循环设初值的位置 例 计算 p=1×2×3× ······×n main( ) { int i,n; long p; scanf(”%d”,n); i=1;p=1; while (i=n) {p*=i; i++; } printf (”p=%ld\n”,p); } 计算 四、求最大、最小、次大、次小 main() { int i,n; float a[10]; int max,min; for(i=0;i10;i++) scanf(“%f”,a[i]); max=min=0; /*设最大数和最小数的下标都为0 */ for(i=1;i10;i++) { if(a[i]a[max]) max=i; if(a[i]a[min]) min=i; } printf(“a[%d]=%f,a[%d]=%f\n”, max,a[max],min,a[min]); } 求最小、次小 main() { int i,a[10] , min1,min2; for (i=0; i10; i++ ) scanf(”%d”,a[i]); min1=a[0]a[1]?a[0]:a[1]; min2=a[0]a[1]?a[0]:a[1]; for( i=2;i10; i++) { if(a[i]min1) { min2=min1 ; min1=a[i]; } else if (a[i]min2) min2=a[i]; } printf(”最小数是%d,次小数是%d\n”,min1,min2); } 五、求特殊数 求素数 求最大公约数 求水仙花数 例:猴子吃桃:第一天吃总数的一半多一个,第二天吃剩下的一半多一个,……,到第十天想再吃时剩一个,求第一天共有多少个? 设第i天未吃前有xi个,由题意得: x1/2-1——x2 x2/2-1——x3 …… x9/2-1——x10 已知 x10=1 所以 x10=1 x9=(x10+1)*2 x8=(x9+1)*2 …… x1=(x2+1)*2 main( ) {int k , x=1 ; for ( k=9 ; k=1 ; k--) x = ( x+1 ) * 2 ; printf ( ”总数=%d\n” , x ) ; } 例: 用二分法求下面方程在(x1,x2)之间的根 2x3-4x2+3x-6=0 #include math.h float f(x) float x; {return ((2*x-4)*x+3)*x-6;} float root(x1,x2) float x1,x2; {float x,y,y1; do { x=(x1+x2)/2; y=f(x); y1=f(x1); if (y*y10) x1=x; else x2=x; }while (fabs(y)=1e-6); return x;} main() {float x1,x2; do { scanf(%f,%f,x1,x2); }while(f(x1)*f(x2)=0); printf(A root of equation is %8.2f\n,root(x1,x2));} #include math.h main() {float x0=1.5,x,f,f1; do {x=x0; f=((2*x-4)*x+3)*x-6; f1=(6*x-8)*x+3; x0=x-f/f1; } while(fab
文档评论(0)