#include <stdlib.h> #include <stdio.h> long a=10000,b,c=2800,d,e,f[2801],g; main() { for(;b-c;) f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf(“%.4d”,e+d/a),e=d%a) for(b=c;d+=f*a,f=d%–g,d/=g–,–b;d*=b); } 计算结果: 314159265358979323846264338327950288419716939937510582097494 459230781640628620899862803482534211706798214808651328230664 709384460955058223172535940812848111745028410270193852110555 964462294895493038196442881097566593344612847564823378678316 527120190914564856692346034861045432664821339360726024914127 372458700660631558817488152092096282925409171536436789259036 001133053054882046652138414695194151160943305727036575959195 309218611738193261179310511854807446237996274956735188575272 489122793818301194912983367336244065664308602139494639522473 719070217986094370277053921717629317675238467481846766940513 200056812714526356082778577134275778960917363717872146844090 122495343014654958537105079227968925892354201995611212902196 086403441815981362977477130996051870721134999999837297804995 10597317328160963185 |
>> 本文固定链接: http://www.vcgood.com/archives/314
d=0,
d/a
??
抱歉,刚才看错了,以为是a=0了。
d+=f*a,f=d%–g
g的初始值为0吧,–g不就成了负数了吗?
printf(“%.4d”,e+d/a),e=d%a第一次打印难道不是0.0000吗?
小菜鸟一个,大家见笑了,不知有谁可以详细解释一下。
自己上机运行一下看效果,就知道有没有错了。
(g的初始值为0吧,–g不就成了负数了吗?不是的。)
g=c*2
for(;d=0,g=c*2;c-=14,printf(“%.4d”,e+d/a),e=d%a)
for(b=c;d+=f*a,f=d%–g,d/=g–,–b;d*=b);
第一个for的执行顺序是,先初始值,这里没有,然后执行d=0,g=c*2,接着才去执行for(b=c;d+=f*a,f=d%–g,d/=g–,–b;d*=b); 所以这里的g应该等于c*2了,所以g就不是为0了。
这段计算π的程序,真的写得不错,不过写法有点过份简单了,简直就是出自高手之手,初学者很不容易读懂。 有哪个兄弟数过计算了几位吗?
直接拿数组名来计算,并赋其值,是什么意思???
我写的初学程序调了一下午都不知道怎么问题,算不出来。。各位大侠帮我看看哪里错了吧!
强大盗走。