1樓:阿菜求學
主要看while迴圈。
x=x*i為算階乘,i不斷自加,x初值為1,即算1!,2!,3!
,則y分別為計算1/1!(1的階乘分之一),1/2!(2的階乘分之一),1/3!
(3的階乘分之一),等。
然後e=e+y,即計算1+(1/1!)+(1/2!)+(1/3!)+...,判斷條件為直到最後一項 1/n! 小於detax這個值。
寫成分數形式看得更清楚。
1 1 1
1+ — + — + — +......
1! 2! 3!
判斷條件為需使1/n!這一項小於規定的detax這個數。當然如果輸入這個數大於1,則由於1/n!肯定是小於1的,所以就打斷,一次迴圈都不執行,直接輸出e=1。
恩。。比較精巧
2樓:黃邦勇帥哥哥
while(y>=detax)
分析,e=e+y;最初的時候e=1;y=1結果e=2;迴圈一次,就得到x=x*i=1*2=2;這時y=1/2那麼e=2+1/2然後繼續x=x*i=2*3=6,e=2+1/2+1/6,繼續i=4,x=x*i=6*4=1*2*3*4..,這時y=1/(1*2*3*4),e=2+1/2+1/6+1/(1*2*3*4),繼續就是e=2+1/2+1/(1*2*3)+...+1/(1*2*3*...
*n);數中的n就與detax的值有關係,detax的值越小,n的值就越大。這個公式是求什麼的就不清楚了,那要看你的程式是什麼目的。
3樓:匿名使用者
這個是求階乘倒數的和的程式,有點像參考資料裡給出的程式,也就是說求:
1!+1/2!+1/3!
+......+1/n!的結果。
不過因為e=1.0,所以你的這個程式貌似是求1+1!+1/2!
+1/3!+......+1/n!
,好像開始e應該為0的樣子
你這裡面的x是用來記錄階乘中間值的,比如最開始x為1,第二次迴圈變成1*2,第三次變成1*2*3....
y代表階乘的倒數
e代表最後的結果值,所以每次迴圈它會加上y你輸入的detax是精度控制變數,這裡它主要是跟y進行比較,也就是跟你某一次算得的階乘的倒數進行比較,如果該倒數比這個精度閾值detax小了(x是階乘結果,會一直變大,y是倒數,則會越來越小),那麼表示後面的部分就可以省略了。
4樓:匿名使用者
有點像求自然對數e的近似值 輸入的detax是迴圈多少次的 越多越準確 e=2.71828……
C語言問題C語言問題,C語言問題C語言問題
include include int main b k p b k 0 puts b return 0 c語言問題c語言問題 include int main int h,m scanf d d h,m printf s num h if m 0 else printf o clock print...
C語言問題,C語言問題C語言問題
這題考的是自動型別轉換,由編譯系統自動完成,轉換是 向上 靠的 舉個例子 include stdio.h void main 你編譯一下就會有警告 conversion from double to float possible loss of data 也就是說系統預設轉化了a,b的資料型別為do...
c語言問題,C語言問題
1 c2 a 3 d4 a 5 d6 b 7 a8 a9 d c語言問題 include define n 30 typedef struct student student r n int main void num 1 for i 0 ir max score max j if max i if...