最新C语言常用算法集合汇总.docx
- 文档编号:27664725
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:15
- 大小:16.77KB
最新C语言常用算法集合汇总.docx
《最新C语言常用算法集合汇总.docx》由会员分享,可在线阅读,更多相关《最新C语言常用算法集合汇总.docx(15页珍藏版)》请在冰豆网上搜索。
最新C语言常用算法集合汇总
C语言常用算法集合
1.定积分近似计算:
/*梯形法*/
doubleintegral(doublea,doubleb,longn)
{longi;doubles,h,x;
h=(b-a)/n;
s=h*(f(a)+f(b))/2;
x=a;
for(i=1;i x+=h; s+=h*f(x); } return(s); } /*矩形法*/ doubleintegral(doublea,doubleb,longn) {longi;doublet=0,h,x; h=(b-a)/n; x=a; for(i=0;i t+=h*f(x); x+=h; } return(t); } 2.生成斐波那契数列: /*直接计算*/ intfib(intn) {inti,f1=1,f2=1,f; for(i=3;i<=n;i++){ f=f1+f2; f1=f2; f2=f; } if(n==1||n==2)return1; elsereturnf; } /*递归调用*/ voidfib(intn,int*s) {intf1,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;i if(n%i==0)t=0; if(t)printf("%disprime",n); /*方法二*/ for(t=1,i=2;i if(n%i==0)t=0; if(t)printf("%disprime",n); /*方法三*/ for(i=2;i if(n%i==0)break; if(i==n)printf("%disprime",n); /*方法四*/ for(t=1,i=2;i<=(int)sqrt(n);i++) if(n%i==0){ t=0; break; } if(t)printf("%disprime",n); 4.反序数: /*求反序数*/ longfan(longn) {longk; for(k=0;n>0;n/=10) k=10*k+n%10; returnk; } /*求回文数*/ intf(longn) {longk,m=n; for(k=0;n>0;n/=10) k=10*k+n%10; if(m==k)return1; return0; } /*求整数位数*/ intf(longn) {intcount; for(count=0;n>0;n/=10) count++; returncount; } 5.求最大公约数: /*方法一*/ intgcd(intx,inty) {intz; z=x x: y; while(! (x%z==0&&y%z==0))/*x%z||y%z*/ z--; returnz; } /*方法二*/ intgcd(intx,inty) { intr; while((r=x%y)! =0){ x=y; y=r; } returny; } /*方法三*/ intgcd(inta,intb) {intr; if((r=a%b)==0) returnb; else returngcd(b,r); } 6.数组常用算法: 查找: /*线性查找*/ intfind(intnum,intx[],intkey) {inti,m=-1; for(i=0;i if(x[i]==key){ m=i; break; } returnm; } /*折半查找*/ intfind(intx[],intnum,intkey) {intm=-1,low=0,high=num-1,mid; while(low<=high){ mid=(low+high)/2; if(x[mid]==key){ m=mid; break; } elseif(x[mid]>key)high=mid-1; elselow=mid+1; } returnm; } /*折半查找(递归)*/ intb_search(intx[],intlow,inthigh,intkey) { intmid; mid=(low+high)/2; if(x[mid]==key)returnmid; if(low>=high)return-1; elseif(key returnb_search(x,low,mid-1,key); else returnb_search(x,mid+1,high,key); } /*寻找子串*/ intfind(char*s1,char*s2) {inti,k=0; while(s1[i]==s2[i])i++; if(s2[i]==0)returnk; s1++; k++; return-1; } 分词: /*方法一*/ voidfen(chars[][10],charstr) {inti,j,k; for(i=0,j=0,k=0;str[i]! =0;i++) if(isalpha(a[i])) s[j][k++]=str[i]; else{ s[j][k]=0; k=0; j++; } } } /*方法二*/ #include #include voidmain() {inti=0,n=0;chars[80],*p; strcpy(s,"Itisabook."); for(p=s;p! ='\0';p++) if(*p=='') i=0; else if(i==0) {n++;i=1;} printf("%d\n",n); getch(); } 排序: /*插入法排序*/ voidsort(inta[],intn) {inti,j,t;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 语言 常用 算法 集合 汇总
![提示](https://static.bdocx.com/images/bang_tan.gif)