C語言問題

2022-11-07 02:40:15 字數 1254 閱讀 2153

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...