Chinaunix首页 | 论坛 | 博客
  • 博客访问: 987320
  • 博文数量: 327
  • 博客积分: 9995
  • 博客等级: 中将
  • 技术积分: 4319
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-25 11:21
文章存档

2011年(31)

2010年(139)

2009年(157)

我的朋友

分类: C/C++

2009-06-03 13:23:30

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(m/i==0) break;  //如果除尽了就退出循环
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;
}

阅读(768) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~