return0;
}
9.假设一个班级有50名同学,每个同学都报出自己的生日,每个同学的生日都不相重的概率只有0.0296,如果有100个同学,不相重的概率为3.0725´10-7。
相重复的概率如此之大与我们主观想象不同。
写一个程序,输入同学的人数n,利用统计方法计算出其生日不重复的概率。
然后再用彷真的方法,利用随机数产生每个同学的生日,计算出生日不重复的概率并与前面的结果进行比较。
学生的生日可以用随机函数rand()产生,调用rand()前首先调用srand(longint*)函数设置种子,以上函数需要包含头文件stdlib.h。
#include
#include
#defineNUM50
usingnamespacestd;
intmain()
{
inti,j;
doubleprobability=1;
for(i=1;i<=NUM;i++)
probability=probability*((365+1-i)/365.0);
cout<<"统计方法:
"<//以下为仿真方法
inttotal=100000;//采样次数
intduplicateNumber=0;
inta[366]={0};//存放生日,放于a[1]到a[365],值为1。
inttemp;
srand(time(0));
for(i=1;i<=total;i++)
{
for(j=1;j
{
temp=rand()%365+1;
if(a[temp])
{
duplicateNumber++;break;
}
else
a[temp]=1;
}
for(j=1;j<=365;j++)
a[j]=0;
}
cout<<"仿真方法:
"<<(double)(total-duplicateNumber)/total;
}
10.用new和delete运算符实现动态内存空间管理的方法编写程序。
从键盘输入3´3整型数组的数据,计算并输出所有元素之和、最大值和最小值。
提示:
申请空间可以采用两种方法:
(1)一次申请二维数组;
(2)对二维数组一行一行申请。
#include
#defineM3
#defineN3
usingnamespacestd;
intmain()
{
inti,j;
/****二维方式***/
//int(*p)[N];
//p=newint[M][N];
/****一维方式****/
int**p=newint*[M];
for(i=0;ip[i]=newint[N];
cout<<"输入:
"< for(i=0;i for(j=0;j cin>>p[i][j];
cout<<"输出:
"< intsum=0,max=p[0][0],min=p[0][0];
for(i=0;i for(j=0;j {
sum=sum+p[i][j];
if(max
if(min>p[i][j])min=p[i][j];
}
cout<<"sum="< cout<<"max="< cout<<"min="<return0;
}