不抄题目了就是拼题网的那道题
simple:输入0.01
输出3.132157
注释版:
#include<stdio.h>
int main ()
{
double i,n,num;double m=0.00,fenzi=1,fenmu=1,p=0.00;
scanf("%lf",&n);//这里输入的不能是%d,要用双浮点型,不然数值不准而偏大
for(i=1;i>0;i++,m+=2){
if(i==1||i==2){//第一,第二项的分子都是1,i代表的是第几项
fenzi=1;
}else fenzi=fenzi*(i-1);//第三项才到这里,第二项分子为1*(3-1)==2
fenmu=fenmu*(m+1);
num=fenzi/fenmu;//num是分子除以分母的分数
p=p+num;//累加
if(num<n)break;//这是一个越加,后面的分数越小的过程,如果得到的这个分数比num小,结束
}
printf("%.6lf",p*2.0);
return 0;
}
纯净版:
#include<stdio.h>
int main ()
{
double i,n,num;double m=0.00,fenzi=1,fenmu=1,p=0.00;
scanf("%lf",&n);
for(i=1;i>0;i++,m+=2){
if(i==1||i==2){
fenzi=1;
}else fenzi=fenzi*(i-1);
fenmu=fenmu*(m+1);
num=fenzi/fenmu;
p=p+num;
if(num<n)break;
}
printf("%.6lf",p*2.0);
return 0;
}
注意一点,如果您的代码输出的是3.141596的话就是你scanf输入用的是%d而不是%f就会导致数不准。