请问:这个圆周率C语言程序是否正确?
请教:这个圆周率C语言程序是否正确???
#include <stdio.h>
main()
{
double m=0.0,num=0.0,sum=0.0,f=-1.0;
long i,n;
printf( " Enter loops number: ");
scanf( "%d ",&n);
for(i=1;i <=3*n;i+=2){
f*=-1.0;
num=4.0*f/i;
m+=num;
}
printf( "¦Ðis %.20f\n ",m);
getch();
return 0;
}
--------题是这样的:
用如下无穷级数计算圆周率:
π=4-4/3+4/5-4/7+4/9-4/11.... 以表格形式打印出用1项,2项,3项等等计算出的π的近似值.要计算多少项才能得到值3.14, 3.141, 3.1415, 3.14159?
--------请问上面的那个程序的求圆周率对不对?
-------方便的话请给出一个好的源吗,网上这个好像搜不到...
------解决方案--------------------
#include <stdio.h>
int main() {
int i = 1;
int temp = 1;
float sum = 0;
for (i = 1; ; i += 2) {
sum = sum + 4.0 * temp / i;
temp = -temp;
// 注意浮点数的比较,两个浮点数相等,不是用等于号,而是用范围来比较
if ((sum - 3.14159) > -0.000001 && (sum - 3.14159) < 0.000001) {
printf( "PI is: %f\nn is: %d ", sum, i);
break;
}
}
}
结果是:
PI is: 3.141589
n is: 291779
这么多项,如果每一项都要打印出来,屏幕都滚动了不知道多少次。
#include <stdio.h>
main()
{
double m=0.0,num=0.0,sum=0.0,f=-1.0;
long i,n;
printf( " Enter loops number: ");
scanf( "%d ",&n);
for(i=1;i <=3*n;i+=2){
f*=-1.0;
num=4.0*f/i;
m+=num;
}
printf( "¦Ðis %.20f\n ",m);
getch();
return 0;
}
--------题是这样的:
用如下无穷级数计算圆周率:
π=4-4/3+4/5-4/7+4/9-4/11.... 以表格形式打印出用1项,2项,3项等等计算出的π的近似值.要计算多少项才能得到值3.14, 3.141, 3.1415, 3.14159?
--------请问上面的那个程序的求圆周率对不对?
-------方便的话请给出一个好的源吗,网上这个好像搜不到...
------解决方案--------------------
#include <stdio.h>
int main() {
int i = 1;
int temp = 1;
float sum = 0;
for (i = 1; ; i += 2) {
sum = sum + 4.0 * temp / i;
temp = -temp;
// 注意浮点数的比较,两个浮点数相等,不是用等于号,而是用范围来比较
if ((sum - 3.14159) > -0.000001 && (sum - 3.14159) < 0.000001) {
printf( "PI is: %f\nn is: %d ", sum, i);
break;
}
}
}
结果是:
PI is: 3.141589
n is: 291779
这么多项,如果每一项都要打印出来,屏幕都滚动了不知道多少次。