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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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;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;i

t+=h*f(x);

x+=h;

}

return(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)

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("%d is prime",n);

/*方法二*/

for (t=1,i=2;i

if(n%i==0) t=0;

if(t) printf("%d is prime",n);

/*方法三*/

for (i=2;i

if(n%i==0) break;

if(i==n) printf("%d is prime",n); /*方法四*/

for(t=1,i=2; i<=(int)sqrt(n); i++) if(n%i==0){

t=0;

break;

}

if(t) printf("%d is prime",n);

4.反序数:

/*求反序数*/

long fan(long n)

{ long k;

for(k=0;n>0;n/=10)

k=10*k+n%10;

return k;

}

/*求回文数*/

{ long k,m=n;

for(k=0;n>0;n/=10)

k=10*k+n%10;

if(m==k) return 1;

return 0;

}

/*求整数位数*/

int f(long n)

{ int count;

for(count=0;n>0;n/=10)

count++;

return count;

}

5.求最大公约数:

/*方法一*/

int gcd(int x,int y)

{ int z;

z=x

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)==0)

return b;

else

return gcd(b,r);

}

6.数组常用算法:

查找:

/*线性查找*/

int find(int num,int x[],int key)

{ int i,m=-1;

for(i=0;i

if(x[i]==key){

m=i;

break;

}

return m;

}

/*折半查找*/

int find(int x[],int num,int key)

{ int m=-1,low=0,high=num-1,mid;

while(low<=high){

mid=(low+high)/2;

if(x[mid]==key){

m=mid;

break;

}

else if(x[mid]>key) high=mid-1;

else low=mid+1;

}

return m;

}

/*折半查找(递归)*/

int b_search(int x[ ],int low,int high,int key) {

int mid;

mid=(low+high)/2;

if(x[mid]==key) return mid;

if(low>=high) return -1;

else if(key

return b_search(x,low,mid-1,key);

else

return b_search(x,mid+1,high,key);

相关文档
最新文档