常用算法(三种基本结构).ppt_第1页
常用算法(三种基本结构).ppt_第2页
常用算法(三种基本结构).ppt_第3页
常用算法(三种基本结构).ppt_第4页
常用算法(三种基本结构).ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

常用算法,带有数学函数的分段函数求值,#include #include void main() float x,y; cinx; if(x10) y=sqrt(x+1)/(2*x*x); else if(x-1) y=x*x*x*x*x+1; else y=3*x+1; cout“y=“y;,分离与组成数字(任意位数),P65 7,#include #include void main() int m,g,s,b,q,w,ws; cinm; ws=log10(m)+1; g=m%10;s=m/10%10;b=m/100%10; q=m/1000%10;w=m/10000; cout“ws=“wsendl; cout“zx:“; switch(ws) case 5:coutw; case 4:coutq; case 3:coutb; case 2:couts; case 1:coutg; ,coutendl“nx:“; switch(ws) case 5:coutgsbqw;break; case 4:coutgsbq;break; case 3:coutgsb;break; case 2:coutgs;break; case 1:coutg; ,分离与组成数字(任意位数),#include #include void main() int m,sz5,nxs,i,n; cinm; /*分离数字,个位放在sz0中,n是数据位数*/ n=0; while(m!=0) szn=m%10; m=m/10;n+; cout=0;i-) coutszi;,/*构成逆序数*/ nxs=0; for(i=0;in;i+) nxs=nxs*10+szi; cout“ nsx:“nxs;,P65 7,各类数学表达式的求和、积及组合求值,#include void main( ) int i,m,n; float x,p,q,s,ai; cinn; cinx; p=1,q=1,m= - 1,s=1; for(i=1;i=n;i+) m= - m; p*=i; ai=m*q/p; s+=ai; couts; ,前n+1项之和,各类数学表达式的求和、积及组合求值,#include void main( ) int i; float s,p; s=0;p=1,i=1; while(p=1e+6) s+=p; i+; p*=i; couts; ,计算:s=1!+2!+ ,直到n!超过106为止,计算:,#include void main( ) int i,n; float s,p; cinn; s=0;p=1; for(i=1;i=n;i+) p*=i;s+=p; couts; ,求一个数的因子,对这些因子进行求和、积等类操作,#include void main( ) int m,n,gs=0,s=0; coutm; n=1; while(n=m) if(m%n=0) s+=n; gs+; n+; cout“s=“s“ gs=“gs; ,任意输入一个数,找出它所有的因子并统计因子的个数及因子之和。,判断一个数是否为素数、完数、水仙花数等各类数,#include void main( ) int n,j,gs=0; coutn; j=1;gs=0; while(j=n) if(n%j=0) gs+; j+; if(gs=2) coutn“ yes“; else coutn“ no“; ,判断一个数n是否是素数,判断的方法之一,1,2,n之中n的因子的个数,统计:,输入n,当j=n时,n%j=0,真,gs+,假,j=1 gs=0,gs=2,真,yes,假,no,j+,判断一个数是否为素数、完数、水仙花数等各类数,#include #include void main( ) int n,j,k; coutn; j=2,k=sqrt(n); while(j=k) if(n%j!=0) j+; else break; if(j=k+1) coutn“ yes“; else coutn“ no“; ,判断一个数n是否是素数,判断的方法之二,2,3,sqrt(n)之中的数都不是n的因子,验证:,输入n,当j=k时,n%j!=0,真,j+,假,break,j=2 k=sqrt(n),j=k+1,真,yes,假,no,退出循环时j取值,j=k+1,执行break退出,j=k,n是素数,n不是素数,表达式j=k为假,判断一个数是否为素数、完数、水仙花数等各类数,#include #include void main() int n,j,k,f=1; coutn; j=2,k=sqrt(n),f=1; while(j=k) if(n%j!=0)j+; else f=0;break; if(f=1) coutn“ yes“; else coutn“ no“; ,判断一个数n是否是素数,设变量f,其值作为判断结果的标志 f=1 n是素数 f=0 n不是素数,输入n,当j=k时,n%j!=0,真,j+,假,f=0 break,j=2 f=1,f=1,真,yes,假,no,k=sqrt(n),判断一个数是否为素数、完数、水仙花数等各类数,#include #include void main() int n,j,k,f=1; coutn; j=2,k=sqrt(n),f=1; while(j=k) if(n%j!=0)j+; else f=0;break; if(f=1) coutn“ yes“; else coutn“ no“; ,判断一个数n是否是素数,设变量f,其值作为判断结果的标志 f=1 n是素数 f=0 n不是素数,输入n,当j=k时,n%j!=0,真,j+,假,f=0 break,j=2 f=1,f=1,真,yes,假,no,k=sqrt(n),判断一个数是否为素数、完数、水仙花数等各类数,s=0,n%i=0,for i=1 to n/2,T,s+=i,s=n,T,打印因子,for n=1 to 999,#include void main( ) int n,i,s; for(n=1;n1000;n+) s=0; for(i=1;i=n/2;i+) if(n%i=0)s+=i; if(s=n) printf(“n%d its factors are:“,n); for(i=1;i=n/2;i+) if(n%i=0)printf(“%4d“,i); ,判断n是否是完数,若m是水仙花数,则:,(2) b:m的百位数,(1) 是三位数,s:m的十位数,g:m的个位数,m=b3+s3+g3,b、s、g的范围,#include void main( ) int m,b,s,g; for(b=1;b=9;b+) for(s=0;s=9;s+) for(g=0;g=9;g+) m=b*100+s*10+g; if(m=b*b*b+s*s*s+g*g*g) coutm“ “; ,判断一个数是否为素数、完数、水仙花数等各类数,找出所有的水仙花数。,b:19 s:09 g:09,若m是水仙花数,则:,(2) b:m的百位数,(1) 是三位数,s:m的十位数,g:m的个位数,m=b3+s3+g3,#include void main( ) int m,b,s,g; for(m=100;m1000;m+) g=m%10; s=m/10%10; b=m/100; if(m=b*b*b+s*s*s+g*g*g) coutm“ “; ,判断一个数是否为素数、完数、水仙花数等各类数,找出所有的水仙花数。,费波纳契数列(1,1,2,3,5,8,13),f1=f2,斐波那契数列:1 1 2 3 5.f,要求计算数列之和及平均值,直到f大于105为止,分析 1 1 2 3 5,m+,while f=1e+5,=f1+f2,f=f1+f2,f1=1,f2=1,s=2,m=2,pj=s/m 输出s及pj,s+=f,f2=f,#include void main() int f1,f2,f,s,m; float pj; f1=1,f2=1,s=2,m=2; f=f1+f2; while(f=1e+5) m+;s+=f; f1=f2;f2=f; f=f1+f2;,f1,f2,f,第三项,=f1+f2,f1,f2,f,第四项,=f1+f2,f1,f2,f,第五项,f=f1+f2,pj=s*1.0/m; cout“s=“ s “,pj=“ pj; ,费波纳契数列(1,1,2,3,5,8,13),例:求费波纳契数列前n项,#include void main() int f1=1,f2=1,n,i; cinn; for(i=1;i=n/2;i+) coutf1tf2t; f1=f1+f2; f2=f1+f2; if(n%2) coutf1; ,#include void main() int f100=1,1,i,n; cinn; for(i=2;in;i+) fi=fi-1+fi-2; for(i=0;in;i+) coutfi“ “; ,各类有规律数列,2/1,3/2,5/3,8/5,前20项之和,数列中每一项的分子用a表示,分母用b表示,第一项:,a=2 b=1,从第二项开始,分子=前项的分子+前项的分母 =a+b 分母=前项的分子 =a c=a; a=a+b; b=c;,#include void main( ) int a,b,c,i; float s; a=2;b=1;s=0; for(i=1;i=20;i+) s+=a*1.0/b; c=a; a=a+b; b=c; couts; ,各类有规律数列,求s=a+aa+aaa+aaaa+aa.a(n个a)的值,其中a是一个数字。例如当a为2,n为5时,求和表达式为:2+22+222+2222+22222,a和n由键盘输入。,#include void main() int a,n,count=1,sn=0,tn=0; cinan; while(count=n) tn=tn+a; sn=sn+tn; a=a*10; count+; cout“a+aa+.+aaaaa=“sn;,在某一范围内找出满足条件的数,并统计这些数的个数、和、积、最大值、最小值、平均值等,求200到300之间所有素数及平均值和素数的个数,#include void main() int i,k,num,sum=0,m,n,gs=0; cinmn; for(k=m;k=n;k+) num=0; for(i=1;ik;i+) if(k%i=0) num+; if(num=1) coutk“ “; sum+=k; gs+; cout“n共有“gs“个素数“; cout“n平均值为:“(float)sum/gs; ,输入一组数,用结束标志结束输入,求出这些数中满足条件的数,并统计这些数的个数、和、积、最大值、最小值、平均值等,任意输入一批正数,计算其和、乘积,并统计其个数,输入负数程序结束,#include void main( ) int x,h,j,g; h=0;j=1;g=0; for(cinx;x0;cinx) h+=x; g+; j*=x; cout“h=“h“,j=“j“,g=“g; ,输入一组数,用结束标志结束输入,求出这些数中满足条件的数,并统计这些数的个数、和、积、最大值、最小值、平均值等,输入一批正数,求其中偶数的平均值,输入负数时结束输入,#include void main() int num,sum=0,gs=0; cinnum; while(num0) if(num%2=0) sum+=num;gs+; cinnum; cout“共有“gs“个偶数“; cout“n平均值为:“(float)sum/gs; ,找最大公约数可用辗转相除的算法,首先把两个数中大的那个数作为被除数,两数相除得一余数。将除数作为被除数,余数作为除数再

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论