台灣最大程式設計社群網站
線上人數
857
 
會員總數:245006
討論主題:188957
歡迎您免費加入會員
討論區列表 >> C/C++ >> 我在寫一個 e^x 指數的程式 跑出來的值跟計算機 不符合
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
我在寫一個 e^x 指數的程式 跑出來的值跟計算機 不符合
價值 : 10 QP  點閱數:1909 回應數:3

樓主

FU
門外漢
0 2
36 1
發送站內信

麻煩 幫我一下  奇怪 我看了好多次了 還是不對    並向你說聲謝謝
#include <stdio.h>
int main()
{

int product,X_value,exp,number1,number2,number3;
float tatal,sum=0;
 printf( "Input X Product\n" );
 scanf( "%d", &X_value);

product=1,number3=1,number1=1,number2=1;


 while(number1<20){
 product=product*X_value; /*分母*/
 number2=number2*number3; /*分子*/
 
 tatal=(float)product/number2; /*分母/分子*/
 
 number3=++number3;
 number1=++number1;
 sum=sum+tatal;



}

 printf("%.8f\n",sum+1);
 



return 0;
}

本篇文章發表於2005-03-17 14:59
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

FU
檢舉此回應
哇 都沒有人回我 是看不懂嗎
還是題目太簡單了
本篇文章回覆於2005-03-17 16:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不符合是什麼情況
程式看起來唯一的錯誤大概在於型別根本都不對^___^a

所以結果應該是會差很多
仔細檢查一下喔...裡面的型別實在有些地方大有問題
現在人在外面, 等晚上來詳細回答
這很簡單啦
本篇文章回覆於2005-03-17 17:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

QQ的乖乖餃
捐贈 VP 給 QQ的乖乖餃 檢舉此回應
#include <stdio.h>
int main()
{
int product,X_value,exp,number1,number2,number3;
float tatal,sum=0;
 printf( "Input X Product\n" );
 scanf( "%d", &X_value);

product=1,number3=1,number1=1,number2=1;


 while(number1<20)
{
 product=product*X_value; /*分母*/
 number2=number2*number3; /*分子*/  ====> number2 *= number3
 
 tatal=(float)product/number2; /*分母/分子*/  ---> tatal=(float)product/(float)number2; // 主要這行有問題
 
 number3=++number3;  ----> number3++;
 number1=++number1;  ----> number1++;
 sum=sum+tatal;  --> sum += tatal;
}

 printf("%.8f\n",sum+1);
 
return 0;


上面講有問題那行, 型別轉換那個基本上不是很重要
重要在於number2, 您若追蹤下去會發現, 他最後會變負的, 而且會變很小
因為超過int的極限了 7!=5040  ,8!=40320  <---超過int範圍 (改long還是過不了,您可試試)
所以, 上面那個
   int product,X_value,exp,number1,number2,number3;  
--->double product,X_value,exp,number1,number2,number3; 比較好

 scanf( "%d", &X_value);
---> scanf( "%f", &X_value);


不過, 裡面的while迴圈弄到20階層, 在高可能連double都會爆掉(那就是要自己實作大數運算了)
再去仔細看一下變數型別的部分, 和變數可容納的數字大小喔

另外, 這個程式語法我也稍作上方的修改, c有些寫法比較精簡, 建議不要把他寫複雜比較好喔
本篇文章回覆於2005-03-17 23:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.