1.多个数排序
for(i=0;i<+9;i++)
for(j=0;j<=9;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
2.两个数交换,不设置新变量
a=a+b;
b=a-b;
a=a-b;
3.求三个数中最大的
max=a>b?(a>c?a:c):(b>c?b:c)
4.输入一个数,之后顺序相反输出
long a;
int b;
scanf("%ld",&a);
while(a>0)
{
b=a%10;
printf("%d\t",b);
a=a/10;
}
5.移位算法 12345左移变成23451,右移51234
左:t=a[0]/*把第一个数提出来*/
for(i=1;i<=4;i++)
a[i-1]=a[i]; /*把a[i]赋值个前一个数*/
a[4]=t; /*最后一个数*/
右:
t=a[4]; /*把最后一个数提出来*/
for(i=4;i>=0;i--)
a[i+1]=a[i];
a[0]=t;
6.判断m是不是素数:
for(i=2;i
if(i>=m) printf("YES"); //如果一直没除尽,那么i就会循环到=m
这个算法可以优化比如可以只循环到sqrt(m)等等
7.兔子算法(Fabonaqie数列)
int a[20]; //把兔子数看作一个数组
a[0]=1;a[1]=1; //最前面2项
for(i=2;i<20;i++) //利用循环算数列中的项
{a[i]=a[i-1]+a[i-2]; //数组的定义
printf("%d",a[i]);
}
8.猴子吃桃问题
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
9.杨辉三角
main()
{int i,j;
int a[10][10];
printf("\n");
for(i=0;i<10;i++)
{a[i][0]=1; //每行的开头都是1
a[i][i]=1;} //最后也是1
for(i=2;i<10;i++)
for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j];//杨辉三角的定义
for(i=0;i<10;i++) //用双for来输出2维数组
{for(j=0;j<=i;j++)
printf("%5d",a[i][j]); //%5d 控制对齐
printf("\n"); //输完一行后换行
}
}
10.微软的面试题 :求100!的末尾有几个0?
一个数如果有因子5,在乘的时候就会产生一个0,如果能被25整除的话就有2个0,所以只要判断有多少个含5和含25的因子了。算法自己体会下,代码如下:
int a,cnt=0;
for(a=5;a<=100;a+=5)
{ cnt++;
if(a%25==0)
cnt++
}
printf("%d",cnt);
11.最短的求润年的函数
int isLeap(int y)
{
return y%(y%100?4:400)==0;
}