栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > C++面试题库

C++笔试题数学算法类

C++笔试题数学算法类

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

#include<iostream>

#include<cmath>

#include<ctime>

#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<COUNT;i++)

{

x=rand()*1.0/RAND_MAX;

y=rand()*1.0/RAND_MAX;

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

}

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

}

结果:测试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 (“%dn”, a[0]);

return 0;

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/265652.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号