利用公式 圆周率=1-1/3+1/5-1/7+….来求圆周率的近似值,直到最后一项的绝对值小于0.00001为止。我自己编的程序如下:
#include”stdio.h”
#include”math.h”
void main()
{int i=j=1;
float x,y=0;
while(fabs(x)<pow(10,-5))
{x=4*(pow(-1,j+1)*(1/i));
y+=x;
j++;
i+=2;
}
prnitf(“%f”,y);
}
不知道错在哪里呢,如何改正?请教各位高手~~~先谢了~~~
>> 本文固定链接: http://www.vcgood.com/archives/2572
>> 转载请注明: iloveyouf1987 2008年07月31日 于 C语言帝国 发表
原程序改过之后如下:
#include “stdio.h”
#include “math.h”
void main()
{float x=1.0,y=0;
int i=1,flag=1;
clrscr();
while(fabs(x)>pow(10,-5))
{
x=flag*(1.0/i);
y+=x;
flag=flag*(-1);
i+=2;
}
printf(“%f”,4*y);
}
但是改过之后我运行了十几分钟也没有结果,后来把pow(10,-5)改为pow(10,-4)得出了结果为3.141797。
估计是要求的精度太高了吧。
要得到你那个精度的数据你就自己开着机器慢慢算吧,总会算出来的。
呵呵
还有几个问题不明白~~~~~
1. 我在定义的时候换成 int i,j;i=1;j=1; 系统提示错误,这是为什么?
2 clrscr();这是用来做什么的?
呵呵~~~
回答:
1.程序语句不错,没有系统提示的错误信息我无法知道是哪里出了问题。但是我给的那个程序是正确的。
2.清屏函数。
whos
int i,j;i=1;j=1;
float x,y;x=1.0;y=0;
后系统提示有三个错误:
表达式语法错误,未定义的x,y…..
这是为什么?
C语言规定,变量的定义一律要放在其他执行语句的前面。你定义了i,j后给i,j赋值,然后又定义了x,y。这时变量x,y的定义就在赋值语句之后了,所以系统提示出错。
解决办法:
1.集中定义变量:
int i,j;float x,y;
i=1;j=1;x=1.0;y=0;
2.定义变量时就赋值:
int i=1,j=1;
float x=1.0,y=0;
哦,明白了~~~
都是很基础的东西,看书时没留意到~~~
谢了~~~以后可能还有问题要麻烦你啊,呵呵
呵呵,没关系。