题目链接:点击这里
π的定义方法:
可以用反余弦函数acos或反正切函数atan求 π \pi π,也可以自己写出 π \pi π小数点后15位。写更多位没有用,因为double类型最多表示小数点后16位有效数字。
#define PI acos(-1)
#define PI 4*atan(1)
#define PI 3.14159(注意:double型是只有16位有效,所以超出16位的无效)
c++里面有已经定义好的常量M_PI,调用前必须在引入前定义宏#define _USE_MATH_DEFINES
要是图简便,直接double PI=3.141592653589793应该也是没问题的
下面是定义的代码
#define _USE_MATH_DEFINES
#include<bits/stdc++.h>
using namespace std;
int main()
{
const double PI1 = 3.1415926535897932;
const double PI2 = acos(-1);
const double PI3 = 4*atan(1);
const double PI4 = M_PI;//<cmath>中的常量,必须在第一行加上#define _USE_MATH_DEFINES才可以使用
printf("PI:\t\t%.16f\nacos(-1):\t%.16f\n4*atan(1):\t%.16f\nM_PI:\t\t%.16f", PI1, PI2, PI3, PI4);
//输出的最后一位是1,是错误的,只有小数点后15位是正确的。因为double类型最多只能表示16位有效数字,包括个位和小数点后15位。
return 0;
}
下面上题解代码:
#include <cstdio>
using namespace std;
const double PI=3.14159;
int main()
{
double r,d,c,s;
scanf("%lf",&r);
d=r*2;
c=2*PI*r;
s=PI*r*r;
printf("%4lf %4lf %4lf",d,c,s);
return 0;
}