#include<stdio.h>
#include<math.h>
int main(){
float sum= 0;
float fenzi = 1;
float fenmu= 1;
float fenshu=fenzi/fenmu;
int s=1;
while (fabs (fenshu)>=1e-6){
sum=sum+fenshu;
fenmu+=2;
s=-s:
fenshu=s*(fenzi/fenmu);
}
printf ("%f", 4*sum);
}
#include<stdio.h>
#include<math.h>
int main(){
float sum= 0;
float fenzi = 1;
float fenmu= 1;
float fenshu=fenzi/fenmu;
int s=1;
while (fabs (fenshu)>=1e-6){
sum=sum+fenshu;
fenmu+=2;
s=-s:
fenshu=s*(fenzi/fenmu);
}
printf ("%f", 4*sum);
}
题主的问题在于“循环数字肯定比这个大”,实际上若令n表示循环次数,则循环数字的绝对值是1/(2*n-1),当n不断增大的时候,循环数字的极限是0,因此后面肯定会小于1e-6的。实际上我们可以算出相应的n,其满足1/(2n-3)>1e-6>1/(2n-1),可得n=(10^6+2)/2=500001。PS. 题主的描述中似乎有个小问题,1e-6不是0.00001而是0.000001。