C语言常用算法.docx

上传人:lao****ou 文档编号:310380 上传时间:2023-08-16 格式:DOCX 页数:26 大小:53.29KB
下载 相关 举报
C语言常用算法.docx_第1页
第1页 / 共26页
C语言常用算法.docx_第2页
第2页 / 共26页
C语言常用算法.docx_第3页
第3页 / 共26页
C语言常用算法.docx_第4页
第4页 / 共26页
C语言常用算法.docx_第5页
第5页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言常用算法.docx》由会员分享,可在线阅读,更多相关《C语言常用算法.docx(26页珍藏版)》请在第一文库网上搜索。

1、y=y*x;returny;)1ongf2(intn)1ongm=1;intk;for(k=1;k=n;k+)m=m*k;returnm;)voidmain()f1oats,t,x;intifn;scanf(*%f%d*,&x,&n);s=0,t=-1;for(i=1:i=n;i+)t=-t;s=s+t*f1(x,i)f2(i);)printf(%f,s);)二、整除性基本知识:x%y=0(int)(xy)=xyfmod(x,y)=0应用:1 .素数(质数)/inc1udettinc1udevoidmain()累加索乘基本知识:s=s+x累加0X=X+1计数0=*x累乘求XB11T=T*1累乘

2、求N11应用:级数求和1.输入X、n后输出下列算式的值。(次数控制)X2X3XF2!3!4!7?!程序1Jtinc1udevoidmain()f1oats,t,x,t1=1.0,t2=1.0:inti,nscanf(*%f%d*,&x,&n):s=0,t=-1;for(i=1;i=n:i+)t1=t1*x:t2=t2*i;t=-t;s=s+t*t1t2;)printf(%f”,s);)程序2Sinc1udef1oatf1(f1oatx,intn)f1oaty=1.0;intk;for(k=0:kn:k+)e1seprintf(“刎不是素数.”,m);)2 .水仙花数:若某数等于各位数字的立方和

3、,则称该数为水仙花数for(i=100;i0)k=n%10:t=t+k*k*k;n=n10;)if(m=t)Printf(%d是水仙花数.”,m);水仙花数/inc1udeintf(intm)intk,n,t;n=m;t=0:whi1e(n0)k=n%10:t=t+k*k*k;n=n10;)if(m=t)return1;e1sereturn0;)voidmain()intm1i,n=0;doscanf(%d,&m);n=sqrt(m);for(i=2;in)printf(u%dw,m);WhiIe(In!=0);/*输入0结束*/素数2Ainc1ude#inc1udeintprime(intm

4、)intk,p:p=sqrt(m);for(k=2jk=pjk)if(mk=0)return0;return1;voidmain()(intm,i,n=0;doscanf(%d,&m);if(prime(m)printf(w%d是素数.”,m);digit=in%10;s=s+digit*digitin=in10;)Printf(sum=%1dn”,s);5.最大公约数、最小公倍数#inc1udevoidmain()intm,n,k,t,p;scanf(*%d%d*,&n);if(mn)k=m;p=n;e1sek=njp=m;whi1e(t=(k%p)!=0)(k=P:P=t;)printf(

5、*gongyueshu=%dn*,p);printf(*gongbeishu=%dn*,m*np);)6.亲密数对:说明:若a、b为1对亲密数,则a的因子和等于b、b的因子和等于a、且a不等于b。如:220、284是1对亲密数,284、220也是1对亲密数。#inc1udevoidmain()(inta,b,c,i;for(a=6;a=5000;a+)intm;doscanf(%d*,&m);if(f(m)printf(%d是水仙花数.”,m);e1sePrintf(%d不是水仙花数.”,m);whi1e(m!=0):)3 .完数:某数等于其诸因子之和则该数为完数,如6=1+2+3,28=1+

6、2+4+7+14则6、28就是完数。#inc1udeinc1udevoidmain()intn,i,s;for(n=6;n=1000;n+)s=0;for(i=1;i=n/2;i+)if(n%i=0)s+=i;if(n=s)fprintf(p,%6d,n);)4 .数位截取:输入一个长整型数,求各位数字的平方和Ainc1udevoidmain()intdigit;1ongin,s;scanf(%1d”,in);if(in0)三、 最大最小1 .从输入的若干个正数中选出最小数#inc1udevoidmain()(f1oatx,min;scanf(*%f*,&x):min=x;whi1e(x=0)

7、if(xmin)nin=x;scanf(*%f*,&x):)printf(*theminiumnumberis%f*,min);)2 .编制函数,其功能是在f1oat类型1维数组中查找最大值、最小值,并将它们返回到调用程序。ttinc1udevoidmaxmin(intx,intn,int*max,int*min)inti:*max=x0:*min=x0:for(i=1;in;i+)(if(*maxxi)*max=xi;if(xi*min)*min=xi;b=c=O;for(i=1;ia2;i+)if(a%i=0)b=b+i;for(i=1;ib;i+)if(b%i=O)c=c+i;if(a=

8、c&a!=b)printf(*%6d,%6dn*,a,b):)方法2:用函数Sinc1ude1ongs(intm)(intj;1ongsum=0;for(j=1;j=m2:j+)if(m%j=0)sum=sum+j;returnsum;)voidmain()(inta,b:1ongc1,c2;scanf(%d%dw,&a,&b);c1=s(a):c2=s(b);if(a!=b)&(c1=b)&(c2=a)printf(*%6d,%6dn*,a,b);inta36,i,j,m,n,max;for(i=0;i3;i+)for(j=0;j6;j+)scanf(*%d*,&aij);max=a00;f

9、or(i=0;i3;i+)for(j=0;jmax)(max=aij;m=i:n=j:)printf(*themaxnumis%d,row%d1ine%dn*,max,m,n);3 .鞍点问题:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小MefineN10WefineM10voidmain()(inti,j,k,m,n,f1ag1,f1ag2,aNM,max,maxi,maxj:scanf(*%d*,&n);scanf(*%d*,&m):for(i=0:in;i+)for(j=0;jm;j+)scanf(%d”,&anm);for(i=0;in;i+)voidmain(

10、)intx10,i1min,max;for(i=0;i10;i+)scanf(*%d*,x+i);maxmin(x,10,&max,&min):printf(*MX=%dMIN=%dn*,max,min);)四、 双重循环1 .求S=I!+2!+3!+鹿!(n由输入决定)inc1udevoidmain()(inti,jtn;1ongintt=1,sum=0;scanf(%d,&n);for(i=1:i=n;i+)t=1;for(j=1;j=i;j+)t=t*j;sum=sum+t:)printf(*n!=%1d*,sum);)2 .输入一个3*6的二维整型数组数据,输出其中最大值及其所在行列下

11、标。Sinc1udevoidmain()SdefineN10voidsort(inta,intn)inti,j,k,temp;for(i=0:in-1:i+)k=i;for(j=i+1;jn;j+)if(akaj)k=j;temp=ak;ak=ai;ai=temp:)voidmain()(intaN,i;for(i=0;iN;i+)scanf(*%d*,&ai);sort(a,N);for(i=0:iN;i+)printf(*%d*,ai);)2.冒泡法#inc1udevoidmain()(inta10,i,j,t;输入排序数/printfC1nput10numbers:n*)for(i=0;

12、i10;i+)/scanf(*%d*,ai);printfn*);for(j=0;jm;j+)printf(%d,anm);printf(*n*);f1ag2=0;for(i=0;in;i+)max=ai0;for(j=0;jmax)(max=aij;maxj=j;)for(k=0,fIag1=I;kakmaxj)f1ag1=0;if(f1ag1)(printf(*n第%d行,第%d列的%d是鞍点“,i,maxj,max);f1ag2=1;)if(!f1ag2)printf(*n矩阵中无鞍点”);)五、 三种排序1 .选择排序:函数sort使用选择法将一维整型数组中各元素按值从大到小排序。#inc1udefor(i=0;iN;i+)printf(*%d,ai);)六、 二种查找1.顺序查找设a是一个整型数组,n和X都是整数,数组a中各元素的值互异。请编写函数find(a,n,x),在数组a的前n个元素中查找x,如果找到,返回X在数组a中的位置;如果没有找到,返回0

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

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服