📄 圆周率的统计计算.cpp
字号:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#define PI 3.141592653589793
void main( )
{
int digit_num_after_dot = 5;
S: printf("请输入要精确到的小数点后的位数(1~8):\n");
do
{
scanf("%d",&digit_num_after_dot);
}while(digit_num_after_dot < 1 || digit_num_after_dot > 8);
double precision = pow( 10,(-1)*digit_num_after_dot);
int all_num = 0;
int success_num = 0;
const int step_num = 100;
bool go_on = true;
double t_value1[step_num] ;
double t_value2[step_num] ;
double pai = 0;
int i = 0 ,j,t=0;
srand( (unsigned)time( NULL ) );
printf("圆周率的值 落入1/4圆中的点数 单位正方形中的总点数\n");
do
{
i++;
for( j = 0;j < step_num; j++ )
t_value1[j] = (double) rand()/RAND_MAX ;
for( j= 0;j< step_num; j++ )
t_value2[j] = (double)rand()/RAND_MAX ;
for(j = 0;j < step_num; j++ )
{
if( (t_value1[j] * t_value1[j] + t_value2[j] * t_value2[j]) < 1 )
success_num++;
}
all_num = i * step_num ;
pai = 4*(double)success_num/(double)all_num;
printf("%10f,%15d,%20d\n",pai,success_num,all_num);
if( (pai < ( PI + precision)) && (pai > (PI - precision)))
{
printf("圆周率的估计值为:%f\n所用点数:%d\n精度要求:%f\n",
pai,all_num,precision);
go_on = false;
break;
}
}while(go_on);
printf("Will you proceed?(y/n)\n");
scanf("%s",&t);
if(t=='y'||t=='Y')
goto S;
else return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -