程序是这样的:
#include<stdio.h>#include<math.h>void main(){ int n,i; double pi,h,sum; sum=0; printf("请输入一个N值:"); scanf("%d",&n); for(i=1;i<=n;i++) { h=1/(i*i); sum=sum+h; } pi=sqrt((sum*6)); printf("n=%d,pi=%f",n,pi);}
但结果值这样的:
这是为什么呀,算法哪里有问题呀?
将语句
h=1/(i*i);改成
h=1.0/i/i;这样才会计算得到浮点数,否则当 i>1 以后,h都等于0。
哥们儿,还是呀,,,,
你输入h=1.0/i/i了吗?要1.0哦,你还是输入1啊!1与1.0是有区别的,前者是整型,后者是实型,整型除以整型还是得到整型数据哦!所以h=1/i/i,只有在i=1时,h=1,i>1时,h=0,所以你那样的计算结果只会得到pi=sqrt(6)。
追问噢噢,好
温馨提示:答案为网友推荐,仅供参考