常考算法1:求最大、最小值
例如:查找a[]数组中的最小值,n为数组的大小
int func(int a[ ], int n)
{
int min=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(inti=0;i<n;i++)
{
if(max<a[i]) max=a[i];
}
return max;
}
常考算法2:求阶乘
long func(int n)
{
int i;
long t=1;
for(i=2;i<=n;i++)
t*=i;
return t;
}
常考算法3:判断某数为素数
素数是指只能被自己和1整除的数
int prime(int n)
{
int m;
for(m=2;m<=sqrt(n);m++)
if(n%m==0) return 0;
return 1;
}
常考算法4:冒泡排序
思想:相临的两个数两两比较,如果第一个数大于第二个数,两者交换位置,既将小的排前面,大的排后面
void 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;
}
}
常考算法5;求最大公约数
欧几里得算法:
int 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:最小公倍数
算法:两数之积除以最大公约数所得的值即为最小公倍数
int 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*n)/m;
}
源程序如上,是原版的,当初感觉到了哪里不对劲,可又说不出来,然后实际运行,果然有错,相信有功底的牛人们,一下子就能找到病根所在,红体字显示的原理并没有错,错在返回的表达式上 "(m*n)/m",在while循环结束后此m已然非彼m了。。。
常考算法7:数组元素逆置
voidexchange(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:累加与累乘
例如1+2+3+4+5+6…….100
intadd(int n)
{
intsum=0;
for(inti=1;i<=100;i++)
{
sum=sum+i;
}
returnsum;
}
例如1*2*3*4*+5*6…….100
intadd(int n)
{
int sum=1;
for(inti=1;i<=100;i++)
{
sum=sum*i;
}
returnsum;
}
常考算法9:整数的各位分离
voidinte(int n)
{
int i;
while(n)
{
i=n%10;
n=n/10;
}
}
1424

被折叠的 条评论
为什么被折叠?



