您的位置:首页 > 编程语言 > C语言/C++

笔试题汇集之常见算法篇(C/C++)

2015-07-28 10:07 148 查看
//二分查找算法

int BSearch(int a[],int key,int n)

{

int low = 0;

int high =n-1;

int mid;

while(low<= high)

{

mid =(low+high)/2;

if(a[mid]== key)

returnmid;

elseif(a[mid] < key)

low =mid+1;

else

high =mid-1;

}

return -1;

}

//写一个函数找出一个整数数组中,第二大的数microsoft

const int MINNUMBER = -32767;

int find_sec_max(int data[] , int count)

{

int maxnumber = data[0];

int sec_max = MINNUMBER;

for(int i = 1 ; i <count ; i++)

{

if(data[i] > maxnumber)

{

sec_max = maxnumber;

maxnumber = data[i];

} else {

if(data[i] > sec_max)

sec_max = data[i];

}

}

return sec_max;

}

斐波拉契数列递归实现的方法如下:

int Funct( int n )

{

if(n==0) return 1;

if(n==1) return 1;

retrurn Funct(n-1) + Funct(n-2);

}

如何不使用递归,来实现上述函数?

int Funct( int n ) // n 为非负整数

{

int a=1;

int b=1;

int c;

if(n==0 || n == 1)

return 1;

for(int i=1;i<n;i++)

{

c=a+b;

a=b;

b=c;

}

return b;

}

实现任意长度的整数相加或者相乘功能。

void bigadd(char* num,char* str,int len)

{

for(int i=len;i>0;i--)

{

num[i] += str[i];

int j = i;

while(num[j]>=10)

{

num[j--] -=10;

num[j] += 1;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: