c语言中常用算法
2013-02-19 09:43
225 查看
1. 整数的各位分离
void inte(int n)
{
int i;
while(n)
{
i=n%10;
n=n/10;
}
}
2. C语言常考算法求最大、最小值
例如:查找a[ ]数组中的最小值,n为数组的大小
int func(int a[ ], int n)
{
int max=a[0];
for(int i=0;i<n;i++)
{
if(min>a[i]) min=a[i];
}
return min;
}
例如:查找a[ ]数组中的最大值
int func(int a[ ], int n)
{
int max=a[0];
for(int i=0;i<n;i++)
{
if(max>a[i]) max=a[i];
}
return max;
}
3. C语言常考算法:阶乘
long func(int n)
{
int i;
long t=1;
for(i=2;i<=n;i++)
{
t*=i;
}
return t;
}
4. C语言常考算法:判断某数为素数(素数是指只能被自己和1整除的数)
int prime(int n)
{
int m;
for(m=2;m<=sqrt(n);m++)
if(n%m==0) return 0;
return 1;
}
5. C语言常考算法:求最大公约数 欧几里得算法:
gcd( int m, int n)
{
int t,r;
if(m<n) {t=m; m=n;n=t;}
while(n!=0)
{
r=m%n;
m=n;
n=r;
}
return m;
}
6. C语言常考算法:求最小公倍数
算法:两数之积除以最大公约数所得的值即为最小公倍数
gcd( int m, int n)
{
int t,r;
while(n!=0)
{
r=m%n;
m=n;
n=r;
}
return (m*n)/m;
}
7. C语言常考算法:数组元素逆置 第一个与最后一个交换,第二个与倒数第二个交换
exchange(int a[ ], int n)
{
int i, t;
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t;
}
}
8. c语言常考算法:累加与累乘
累加就是对若干个数求和,其最基本的思想就是”反复的做加法”,一般来说,计算机每次只处理两个数的相加运算,所以多个数相加必须通过多次的两两相加来实现
例1:
用c语言实现1+2+3+4+5+6+7+8+9+10的累加
方法1:
#include <stdio.h>
void main( )
{
int i,sum;
sum=0;
for(i=1;i<=10;i++)
sum=sum+i;
printf(“%d”,sum);
}
方法2:
#include <stdio.h>
void main( )
{
int i,sum;
sum=0;
i=1;
while( i<=10)
{
sum=sum+i
i=i+1;
}
printf(“%d”,sum);
}
用c语言实现1*2*3*4*5*6*7*8*9*10的累加
方法1:
#include <stdio.h>
void main( )
{
int i,sum;
sum=1;
for(i=1;i<=10;i++)
{
sum=sum*i;
}
printf(“%f”,sum);
}
方法2:
#include <stdio.h>
void main( )
{
int i,sum;
sum=1;
i=1;
while( i<=10)
{
sum=sum*i
i=i+1;
}
printf(“%f”,sum);
}
9. C语言常考算法:冒泡排序
思想:相临的两个数两两比较,如果第一个数大于第二个数,两者交换位置,既将小的排前面,大的排后面
sort(int a[ ], int n)
{
int i,j, t;
for(i=n-1;i>0;i--)
{
for(j=0; j<=i; j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
void inte(int n)
{
int i;
while(n)
{
i=n%10;
n=n/10;
}
}
2. C语言常考算法求最大、最小值
例如:查找a[ ]数组中的最小值,n为数组的大小
int func(int a[ ], int n)
{
int max=a[0];
for(int i=0;i<n;i++)
{
if(min>a[i]) min=a[i];
}
return min;
}
例如:查找a[ ]数组中的最大值
int func(int a[ ], int n)
{
int max=a[0];
for(int i=0;i<n;i++)
{
if(max>a[i]) max=a[i];
}
return max;
}
3. C语言常考算法:阶乘
long func(int n)
{
int i;
long t=1;
for(i=2;i<=n;i++)
{
t*=i;
}
return t;
}
4. C语言常考算法:判断某数为素数(素数是指只能被自己和1整除的数)
int prime(int n)
{
int m;
for(m=2;m<=sqrt(n);m++)
if(n%m==0) return 0;
return 1;
}
5. C语言常考算法:求最大公约数 欧几里得算法:
gcd( int m, int n)
{
int t,r;
if(m<n) {t=m; m=n;n=t;}
while(n!=0)
{
r=m%n;
m=n;
n=r;
}
return m;
}
6. C语言常考算法:求最小公倍数
算法:两数之积除以最大公约数所得的值即为最小公倍数
gcd( int m, int n)
{
int t,r;
while(n!=0)
{
r=m%n;
m=n;
n=r;
}
return (m*n)/m;
}
7. C语言常考算法:数组元素逆置 第一个与最后一个交换,第二个与倒数第二个交换
exchange(int a[ ], int n)
{
int i, t;
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t;
}
}
8. c语言常考算法:累加与累乘
累加就是对若干个数求和,其最基本的思想就是”反复的做加法”,一般来说,计算机每次只处理两个数的相加运算,所以多个数相加必须通过多次的两两相加来实现
例1:
用c语言实现1+2+3+4+5+6+7+8+9+10的累加
方法1:
#include <stdio.h>
void main( )
{
int i,sum;
sum=0;
for(i=1;i<=10;i++)
sum=sum+i;
printf(“%d”,sum);
}
方法2:
#include <stdio.h>
void main( )
{
int i,sum;
sum=0;
i=1;
while( i<=10)
{
sum=sum+i
i=i+1;
}
printf(“%d”,sum);
}
用c语言实现1*2*3*4*5*6*7*8*9*10的累加
方法1:
#include <stdio.h>
void main( )
{
int i,sum;
sum=1;
for(i=1;i<=10;i++)
{
sum=sum*i;
}
printf(“%f”,sum);
}
方法2:
#include <stdio.h>
void main( )
{
int i,sum;
sum=1;
i=1;
while( i<=10)
{
sum=sum*i
i=i+1;
}
printf(“%f”,sum);
}
9. C语言常考算法:冒泡排序
思想:相临的两个数两两比较,如果第一个数大于第二个数,两者交换位置,既将小的排前面,大的排后面
sort(int a[ ], int n)
{
int i,j, t;
for(i=n-1;i>0;i--)
{
for(j=0; j<=i; j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
相关文章推荐
- C语言:常用算法
- c语言常用算法
- c语言实现二叉树常用算法
- C语言实现二叉树的常用的算法(递归与非递归实现遍历)
- 结点遍历C语言实现二叉树的常用的算法(递归与非递归实现遍历)
- C/C++常用算法【C语言顺序查找(顺序表)】【2】
- 18、黑马程序员-C语言常用算法
- libcstl:标准C语言通用数据结构和常用算法库
- 归纳整理Linux下C语言常用的库函数----时间日期数学及算法
- c语言数据结构——链表常用算法
- 常用经典算法的C语言实现
- C语言常用算法汇总
- C语言常用算法源代码
- C语言常用的几个算法
- C语言常用算法
- C语言常用算法
- C语言字符串常用函数(sprintf,strl…
- 常见算法:C语言求最小公倍数和最大公约数三种算法
- 《算法导论》书籍中的常用算法
- C++算法之——常用算法总结