欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    最新C语言常用算法集合汇总.docx

    • 资源ID:27664725       资源大小:16.77KB        全文页数:15页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新C语言常用算法集合汇总.docx

    1、最新C语言常用算法集合汇总C语言常用算法集合1.定积分近似计算:/*梯形法*/double integral(double a,double b,long n) long i;double s,h,x; h=(b-a)/n; s=h*(f(a)+f(b)/2; x=a; for(i=1;in;i+) x+=h; s+=h*f(x) ; return(s);/*矩形法*/double integral(double a,double b,long n) long i;double t=0,h,x; h=(b-a)/n; x=a; for(i=0;in;i+) t+=h*f(x); x+=h; r

    2、eturn(t);2. 生成斐波那契数列:/*直接计算*/int fib(int n) int i,f1=1,f2=1,f; for(i=3;i=n;i+) f=f1+f2; f1=f2; f2=f; if(n=1|n=2) return 1; else return f;/*递归调用*/void fib(int n,int*s) int f1,f2; if(n=1|n=2) *s=1; else fib(n-1,&f1); fib(n-2,&f2); *s=f1+f2; 3.素数的判断:/*方法一*/ for (t=1,i=2;in; i+) if(n%i=0) t=0; if(t) pri

    3、ntf(%d is prime,n);/*方法二*/for (t=1,i=2;in&t; i+) if(n%i=0) t=0; if(t) printf(%d is prime,n);/*方法三*/for (i=2;in; i+) if(n%i=0) break; if(i=n) printf(%d is prime,n);/*方法四*/for(t=1,i=2; i0;n/=10) k=10*k+n%10; return k;/*求回文数*/int f(long n) long k,m=n; for(k=0;n0;n/=10) k=10*k+n%10; if(m=k) return 1; re

    4、turn 0;/*求整数位数*/int f(long n) int count; for(count=0;n0;n/=10) count+; return count;5.求最大公约数:/*方法一*/int gcd(int x,int y) int z; z=xy?x:y; while(!(x%z=0&y%z=0)/*x%z|y%z*/ z-; return z;/*方法二*/int gcd(int x,int y) int r; while(r=x%y)!=0) x=y; y=r; return y;/*方法三*/int gcd(int a ,int b) int r ; if(r=a%b)

    5、=0) return b; else return gcd(b,r);6.数组常用算法:查找:/*线性查找*/int find(int num,int x,int key) int i,m=-1; for(i=0;inum;i+) if(xi=key) m=i; break; return m;/*折半查找*/int find(int x,int num,int key) int m=-1,low=0,high=num-1,mid; while(lowkey) high=mid-1; else low=mid+1; return m;/*折半查找(递归)*/int b_search(int x

    6、 ,int low,int high,int key) int mid; mid=(low+high)/2; if(xmid=key) return mid; if(low=high) return -1; else if(keyxmid) return b_search(x,low,mid-1,key); else return b_search(x,mid+1,high,key); /*寻找子串*/int find(char *s1,char *s2) int i,k=0; while(s1i=s2i) i+; if(s2i=0) return k; s1+; k+; return -1;

    7、分词:/*方法一*/void fen(char s10,char str) int i,j,k; for(i=0,j=0,k=0;stri!=0;i+) if(isalpha(ai) sjk+=stri; else sjk=0; k=0; j+; /*方法二*/#include#includevoid main() int i=0,n=0;char s80,*p; strcpy(s,It is a book.); for(p=s;p!=0;p+) if(*p=) i=0; else if(i=0) n+;i=1; printf(%dn,n); getch();排序:/*插入法排序*/void

    8、sort(int a,int n) int i,j,t; for(i=1;i=0&taj;j-) aj+1=aj; aj=t; /*归并排序*/#define x 10#define y 10void com(int *a,int *b,int *c) int i,j,k; for(i=0,j=0,k=0;i=x&j=y;) if(aibj) ck+=ai;i+; else ck+=bj;j+; if(ix) for(k=k-1;ix;i+) ck+=ai; if(jx) for(k=k-1;jy;j+) ck+=aj;/*交换法排序1 冒泡排序*/void sort(int a,int n)

    9、 int i,j,t,flag; for(i=0;in-1;i+) flag=1; for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; flag=0; if(flag) break; /*交换法排序2*/void sort(int a,int n) int i,j,t; for(i=0;in-1;i+) for(j=i+1;jaj) t=ai; ai=aj; aj=t; /*选择法排序*/void sort(int a,int n) int i,j,point,t; for(i=0;in-1;i+) point=i; for(j=i+1;jn;j+) if(apoint

    10、aj) point=j; if(point!=i) t=apoint; apoint=ai; ai=t; 7.一元非线性方程求根:/*牛顿迭代法求函数跟*/#include #include int main(void) double x,x1,eps=1e-6,f,f1; /*误差为eps*/ x=1.0; /*x=1.0是初值*/ do x1=x; f=6-x1*(5-x1*(4-3*x1); /*f为f(x)函数*/ f1=-5+x1*(8-9*x1); /*f1为f(x)的导函数*/ x=x1-f/f1; f=6-x*(5-x*(4-3*x); while(fabs(f)=eps &

    11、fabs(x-x1)=eps); printf(x=%f,x); /*二分法求函数跟*/#include #include double f(double x) return 6-x*(5-x*(4-3*x); /*f(x)函数*/int main(void) double a,b,c,x,eps=1e-6; do scanf(%lf%lf,&a,&b); while(f(a)*f(b)0); if(fabs(f(a)1e-6) x=a;else if (fabs(f(b)eps&fabs(b-a)eps) if(f(a)*f(c)eps) if(f(a)*f(c)0) b=c; else a

    12、=c; c=(a*f(b)-b*f(a)/ (f(b)-f(a); #include void f();int main(void) int x, loop=0; do for(x=1;x5;x+) int x=2; printf(%d,x); printf(%d ,x); f(); loop+; while(loop1); getch();void f() printf(%d,x+); 8.汉诺塔:#includevoid Hanoi(int n, char A, char B, char C) if(n=1) printf(n move %d from %c to %c,n,A,C); e

    13、lse Hanoi(n-1,A,C,B); printf(nmove %d from %c to %c,n,A,C); Hanoi(n-1,B, A, C); int main(void) Hanoi(3,A,B,C); getch();9.建立链表:NODE *creat(void) /* void表示无参函数 */ NODE *head=NULL,*p1=NULL,*p2=NULL; long num; unsigned score; int n=0; do scanf(“%ld%u”,&num,&score); if(num=0) break; n+; p1=(NODE *)malloc

    14、(sizeof(NODE); p1-data.num=num, p1-data.score=score; p1-next=NULL; if(n=1) head=p2=p1; else p2-next=p1; p2=p1; while(1); return head;10.级数的近似计算:#include #include int main(void) double s=1,a=1,x,eps,f; int n,m; printf(input x and eps:); scanf (%lf%lf,&x,&eps); for(n=1;fabs(a)eps; n+) for(f=1,m=1;m=n;m+) f*=m; a=pow(x,n)/f; s+=a; printf(%f,s);


    注意事项

    本文(最新C语言常用算法集合汇总.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开