看板 C_and_CPP 關於我們 聯絡資訊
long a=10000, b, c=2800, d, e, f[2801], g; main() { while( b-c ) f[b++] =a/5; while(d = 0 , g = c*2){ b = c; while(d += f[b]*a, f[b] = d%--g, d /= g--, --b) d*=b; c -= 14; printf("%.4d", e+d/a); e = d%a; } } ※ 引述《fm461020 (豬)》之銘言: : 這是老師上課出的作業, : 下列程式能印出圓周率達800位,將各for loops改成while loops: : 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[b]*a, f[b] = d%--g, d /= g--, --b; d *= b); } : 看不懂寫法,改成while也沒成功跑出來,請問有人會嗎? : 此程式跑出來的結果如下 : 31415926535897932384626433832795028841971693993751058209749445923078164062862089 : 98628034825342117067982148086513282306647093844609550582231725359408128481117450 : 28410270193852110555964462294895493038196442881097566593344612847564823378678316 : 52712019091456485669234603486104543266482133936072602491412737245870066063155881 : 74881520920962829254091715364367892590360011330530548820466521384146951941511609 : 43305727036575959195309218611738193261179310511854807446237996274956735188575272 : 48912279381830119491298336733624406566430860213949463952247371907021798609437027 : 70539217176293176752384674818467669405132000568127145263560827785771342757789609 : 17363717872146844090122495343014654958537105079227968925892354201995611212902196 : 08640344181598136297747713099605187072113499999983729780499510597317328160963185 : 請按任意鍵繼續 . . . -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.4.112
fm461020:感謝你的解答^_^,我也知道我哪裡寫錯了 04/07 14:28
VictorTom:( ′▽`)-o因囡囝囚 04/07 14:35
fm461020:解開謎底,好開心^_^,不過為什麼可以印出圓周率? 04/07 14:38
VictorTom:小弟比較好奇為什麼b不用給初值....@_@" 04/07 14:49
cutecpu:因為它放在 global 初始值為 0 04/07 15:00
fm461020:感謝樓上給的解答^_^ 04/07 15:18
VictorTom:謝謝 cutecpu大:) ( ′▽`)-o因囡囝囚 04/07 18:01