设为首页 加入收藏

TOP

C++笔试题数学算法类
2014-11-24 01:25:52 来源: 作者: 【 】 浏览:7
Tags:试题 数学 算法

1. 解二次方程:a*x*x+b*x+c


int Quadratic( double a,double b,double c,double& x1,double& x2);


返回值:解的个数 用求根公式计算


2. 最大公约数


DWORD Divisor( DWORD dwFirst, DWORD dwSecond );


返回值:最大公约数


long Divisor( long dwFirst, long dwSecond )


{


if (dwFirst < dwSecond)


{


long temp = dwFirst;


dwFirst = dwSecond;


dwSecond = temp;


}


if (dwSecond == 0)


{


return dwFirst;


}


if (dwFirst % 2 == 0)


{


if (dwSecond % 2 == 0)


{


return(Divisor(dwFirst >> 1,dwSecond >> 1) << 1);


}


else


{


return Divisor(dwFirst >> 1,dwSecond);


}


}


else


{


if (dwSecond % 2 == 0)


{


return Divisor(dwFirst,dwSecond >> 1);


}


else


{


return Divisor(dwSecond,dwFirst – dwSecond);


}


}


}


3. 根据蒙特卡洛算法计算圆周率


double PI( DOWRD dwCount/*测试次数*/ );


返回值:PI


/**//*


利用蒙特卡洛算法近似求圆周率PI


VC++6.0


ZZH


*/


#include


#include


#include


#define COUNT 500000 //循环取样次数


using namespace std;


bool InCircle(double x,double y)//是否在1/4圆范围之内


{


if((x*x+y*y)<=1)return true;


return false;


}


void main()


{


double x,y;


int num=0;


int i;


srand((unsigned)time(NULL));


for(i=0;i

{


x=rand()*1.0/RAND_MAX;


y=rand()*1.0/RAND_MAX;


if(InCircle(x,y)) num++;


}


cout<<”PI:”<<(num*4.0)/COUNT<

}


结果:测试5次的结果显示:3.13958,3.14041,3.13729,3.13859,3.14186


4. 无符号整数乘法,乘数为32bit,结果为64bit


提示:32bit整数分解为16bit相乘


void Multiply( DWORD dwFirst, DWORD dwSecond, DWORD& dwHigh, DWORD& dwLower );



5. 链表排序(从小到大)


节点定义为:


struct Node{


int nValue;


struct Node* pNext;


};


最后一个节点的pNext = NULL.


Node* SortChain( Node* pHead );


返回值:链表头


冒泡排序,插入排序等。为避免繁琐可以不交换指针,只交换值;也可以将值存入数组,对数组排序,再存入链表中。


改错并说明原因


file: 1.c


int a[10]={0};


file: 2.c


int main ()


{ extern int *a;


printf (“%d\n”, a[0]);


return 0;


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2008年经历的几个面试总结 下一篇做了几次.net面试官后的感想

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: