突然碰到这道题,如图
将圆半径设为1,正六边形边长正好等于半径即1
这样,由正六边形边长就可以求出正十二边形的,以此类推24,48…
由于圆的周长近似认为等于内接正多边形的周长(正多边形边数越大,越接近),所以就可以求出π了
已下是代码:
# include<stdio.h>
# include<math.h>
int main()
{
//=======================定义变量===========================
int iSelect;
int n_1;//正多边形的边数
double iSide=1;
double PI;
int i_1;//for循环里面的
double temp;
printf("欢迎来到第15组,考试报名管理\n");
printf("1:求π的近似值\n");
printf("2:黑白子交换\n");
printf("3:开始报名管理\n");
printf("请输入对应的数字选择要进行的项目:");
scanf("%d",&iSelect);
switch(iSelect)
{
//==========================1==============================
case 1:
printf("假设圆半径为1\n");
printf("正6边形,π=3\n");
for(i_1=0,n_1=12;i_1<20;i_1++,n_1*=2)
{
iSide=(double)sqrt(2-sqrt(4-iSide*iSide));
PI=(double)n_1*iSide/2;
printf("正%d边形,边长=%.15f\tπ=%.15f\n",n_1,iSide,PI);
}
break;
//==========================2==============================
case 2:
break;
//==========================3==============================
case 3:
break;
}
return 0;
}
由于double精度问题,可能误差有点大,主要是弄懂怎么做的就可以了