前言
上期的Python(加了turtle 所以带图片)割圆法点赞数量感人
但洛谷那期已经让我飞了 于是我准备掉点头发
以五升六之躯硬刚初三
这期请教了大量的高年级同学
把这个要用到九年级知识点的割圆法搞出来了
不要怕难 像我这样的xxs也能看懂
先声明 割圆法不一定要用循环 其实一次循环就可以得出结论了
先放代码(这边用圆周率是为了获得角度的弧度值):
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a;
cout<<"请输入分割次数";
cin>>a;
double b=sin(360.0/a*(3.141592653589/180));
printf("π的近似值:%.12lf",a*b/2);
return 0;
}
_____________________________________________________________________________
框架
写框架:
#include<bits/stdc++.h>//万能头
/*
这个万能头约等于以下几行代码:
#include<iostream>
#include<cstdio>
#incldue<cmath>
*/
using namespace std;//使用头文件
return 0;//防止无输出的时候报错
}
_____________________________________________________________________________
输入
接下来输入分割次数:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a;//声明变量a的类型为long long(int也行 随你便 这里改为int以后 后面也不用改了)
cout<<"请输入分割次数";//不换行的输出
cin>>a;//由于上个输出不换行 所以在输出结尾输入
}
_____________________________________________________________________________
处理数据
开始处理数据了
这里 理科文凭高达xxs的可能看不懂 我将逐帧解析
看不懂的人 可能就是理科担忧的那群人
double b=sin(360.0/a*(3.141592653589/180));
类型使用
用double是为了可以把数据精确到小数点后12位
角度值与弧度值
这边用圆周率是为了把角度值转换为弧度值
角度值换弧度值:角度值*(π/180)
弧度值换角度值:弧度值/(π/180)
整形与浮点型的除法
用360.0不用360是因为c++里有个概念:
整形/整形=整形(整形就是int和long long)
实例:9/2=4
浮点型/整形=浮点型(浮点型就是float和double)
实例:9.0/2=4.5
整形/浮点型=浮点型
实例:9/4.5=2.0
分成三角形靠近中心点的锐角的角度计算
360/a就是计算中心点的角有多少度
这张图把圆的四分之一分成了4份
先把这个圆的四分之一看成一个角
那么360.0/a则等于90°
三角函数
这里的sin函数来自cmath工具箱 求的是括号里角度的对边/邻边的值
除了sin 还有两个三角函数 分别为tan cos
这边整理成了一张图 自己看
_____________________________________________________________________________
输出
printf("π的近似值:%.12lf",a*b/2);
输出方式讲解
这行代码使用的printf函数来自于cstdio工具箱
"%"这个符号是控制符
这个符号后面的".12"是让输出数据保留12位小数
在这之后的"lf"是说明这是double类型
计算π
除以2是因为a*b是圆的周长 圆的周长是也可以理解为
已知r=1 那么除以2就可以得出算好的π了
注意事项
这边输入的a是指把圆看成a边形
没有1边形和2边形
最少输入3 不然程序虽然不会报错 但会输出一些很小的值
这边给出输入1或2的输出:
π的近似值:-0.000000000001
结尾
MVP结算:
本期字数:1730
本期质量分:83
15赞更新Python 30赞更新c++