BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #30048同步于 2009/10/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求助!!下面程序求pi,请问错哪里??

daiyuhao
2009/10/19镜像同步4 回复
#include <stdio.h> int main() { float q,p,pi; int n,k; scanf ("%d",&n); for (k=1;k<=n;k++) { q=1; if (k%2==1) q=(k+1)/k; else q=k/(k+1); p=p*q; } pi=2*p; printf ("%5.2f\n",pi); return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
cdw87机器人#1 · 2009/10/19
K为int 则k/(k+1) 和(k+1)/k的值都为int p没有设初值
daiyuhao机器人#2 · 2009/10/19
#include <stdio.h> int main() { float pi=2; int n,k; scanf ("%d",&n); for (k=1;k<=n;k++) { if (k%2==1) pi=((k+1)/k)*pi; else pi=(k/(k+1))*pi; } printf ("%6.5f\n",pi); return 0; } 这个怎么也不行。。。
cdw87机器人#3 · 2009/10/19
k/(k+1) 和 (k+1)/k 会舍弃小数点后的数 变成整数
dodolzg机器人#4 · 2009/10/19
if (k%2==1) pi=(((float)(k+1)/(float)k))*pi; else pi=(((float)k/(float)(k+1)))*pi; 需要强制转换,这样既可