C语言练习,编写函数fun,在精度范围内求π,为啥编译组建都没错,运行结果都为0.0000
答案:4 悬赏:80 手机版
解决时间 2021-04-28 23:42
- 提问者网友:练爱
- 2021-04-28 20:30
C语言练习,编写函数fun,在精度范围内求π,为啥编译组建都没错,运行结果都为0.0000
最佳答案
- 五星知识达人网友:第四晚心情
- 2021-04-28 21:16
你的k没赋初值就使用了,导致j的初始值错误
全部回答
- 1楼网友:思契十里
- 2021-04-28 23:31
变量 k没有赋初值,其他ok追问如果k,b 都定义为double 变量,可以直接j=b/k 吗?追答如果k,b 都定义为double 变量,可以直接j=b/k 。
- 2楼网友:慢性怪人
- 2021-04-28 22:30
1-k没初始值成为了随机数,很大,所以j就很小------就为0了
- 3楼网友:荒野風
- 2021-04-28 21:50
#include
#include
double fun ( double eps)
{
int n=1, k=1,b=1; //这里k要赋予初值
double pi=0.0,j=(double)b/(double)k;
do
{
pi+=j;
b=b*n;
k*=(2*n+1);
n++;
j=(double)b/(double)k;
}
while(j>=eps);
return pi*2;
}
int main(void)
{
double pai=fun(0.001);
//pai=3.1394696806461506
return 0;
}追问谢谢你的回答,另外问一下你用的什么软件?追答您是说c语言的开发软件么?追问 就是你上面那个环境,追答我是在vs2003上编译通过以后把代码贴上来的。
#include
double fun ( double eps)
{
int n=1, k=1,b=1; //这里k要赋予初值
double pi=0.0,j=(double)b/(double)k;
do
{
pi+=j;
b=b*n;
k*=(2*n+1);
n++;
j=(double)b/(double)k;
}
while(j>=eps);
return pi*2;
}
int main(void)
{
double pai=fun(0.001);
//pai=3.1394696806461506
return 0;
}追问谢谢你的回答,另外问一下你用的什么软件?追答您是说c语言的开发软件么?追问 就是你上面那个环境,追答我是在vs2003上编译通过以后把代码贴上来的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯