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<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;
}