歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

大數(shù)階乘問題C中課程設計絕無僅有

  • 資源ID:34972545       資源大?。?span id="pfxrb7r" class="font-tahoma">252.53KB        全文頁數(shù):11頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

大數(shù)階乘問題C中課程設計絕無僅有

西安建筑科技大學課程設計(論文) 課程設計(論文) 課程名稱: 題 目: 求解1000的階乘 院 (系): 理學院 專業(yè)班級: 應數(shù)0801 姓 名: 學 號: 081030107 指導教師: 2011年 1 月 14 日 摘要 計算數(shù)字的階乘問題,是比較常見,而且比較重要的一種函數(shù)。其中計算一般較小的數(shù)字時,采用迭代法,這種方法簡潔、方便。但是,在運算一些較大的數(shù)字的階乘時,例如計算1000的階乘,由于沒有任何一個編程語言有一種變量或機制來儲存1000!這么大的數(shù),所以就會產(chǎn)生數(shù)字越界問題,也叫上溢。因此,如何計算大數(shù)的階乘問題就是本文研究的重點。本文詳細討論了如何采用數(shù)組的方法計算原題,從而避免數(shù)字越界問題。 關鍵詞:越界,數(shù)組,階乘 目錄 1.緒論 4 2.程序說明 4 2.1問題描述 4 2.2開發(fā)平臺 4 2.3變量命名規(guī)則4 3.程序設計 5 3.1設計思路:5 3.2設計難點及處理6 4.結果及分析6 4.1運行結果 6 4.2結果分析7 4.3需要完善的地方8 4.4心得體會8 5.參考文獻9 6.附錄10 1.緒論 在數(shù)學計算的很多領域中都涉及數(shù)字的階乘問題,因此,數(shù)字的階乘問題是十分常見且重要的一種函數(shù)。一般情況下,計算較小的數(shù)字的階乘時,采用遞歸調用算法。這個是最容易想的,如果是1的階乘,則返回1,其他的都返回n-1的階乘與n的積,循環(huán)調用即可。不過問題是即使用double來存放該值,由于double本身的精度、能存的數(shù)字大小所限,算不了太大的數(shù)的階乘。因此,計算較大數(shù)字的階乘時,一種簡潔高效的算法的開發(fā)就顯得十分緊迫和重要了。 2.程序說明 2.1問題描述: 求解1000的階乘 2.2開發(fā)平臺: Microsoft Visual C++ 6.0 2.3變量命名規(guī)則 numArr[] 數(shù)組 total 數(shù)組元素的值 rem 余數(shù) i 數(shù)組元素編號 count 數(shù)組元素需乘的數(shù) 3.程序設計 3.1設計思路: 用numArr[]數(shù)組來存放階乘的每一位數(shù)字,首先令數(shù)組的最后一位的數(shù)值為1,位數(shù)為1,然后將每次相乘的乘積存回數(shù)組,并循環(huán)處理每個數(shù)組中超過10的數(shù),若數(shù)值超過10,則需要進位,將位數(shù)加1,原來的數(shù)除以10,商數(shù)加前一位數(shù)的數(shù)值后存回前一位數(shù)的數(shù)組中,再將余數(shù)存回原來位數(shù)的數(shù)組中。 例如,求12! 12! = 11!* 12 11! = 39916800 12! = 479001600 3.2設計難點及處理 由于位數(shù)的限制,沒有任何編程語言,可以存儲例如1000!這個乘法結果的量。解決的方法是采用數(shù)組來存儲。 4.結果及分析 4.1運行結果 4.2結果分析 通過使用數(shù)組的方法,可以有效避免數(shù)字越界問題,存儲較大數(shù)字的階乘,得到準確的計算結果。 4.3需要完善的地方 程序的編寫有待進一步的精簡,本程序可以解決1000的階乘問題,但對于特別巨大的數(shù)字的階乘問題還是無法解決。并且不能用迭代法計算較小數(shù)的階乘??稍诖嘶A上編寫萬能階乘計算程序。 4.4心得體會 通過這次的課程設計,我查閱了很多資料,并和同學們一起討論,使我學會了獨立自學,以及如何互相討論學習,增強了我對于C++語言的掌握,和編寫程序的能力。使我受益匪淺。 5.參考文獻 [1] (美) Bjarne Stroustrup 著. C++程序設計語言(特別版). ( 裘宗燕 ).北京: 機械工業(yè)出版社,2002.125~188 [2] 何渝編 著.計算機常用數(shù)值算法與程序[M].北京:人民郵電出版社,2003.73~125 [3]鄭麗 著.C++語言程序設計(第4版)[M].北京:清華大學出版社,2010.188~248 [4]龔志祥 著.Visual C++編程實例與技巧集粹[M].北京:兵器工業(yè)出版社,2004.265~312 [5](美)Barbara Moo, Andrew Koening 著.C++沉思錄.(梁實秋).北京:人民郵電出版社,2008.86~137 6.附錄 核心源程序: #include<iostream.h> #include<conio.h> void main() { clrscr(); int numArr[3000]; // Approximately , size of array depends on size of factorial. int total,rem=0,count; //rem use to save remainder of division(Carry Number). register int i; for(i=0;i<3000;i++) numArr[i]=0; //set all array on NULL. i=2999; //start from end of array. numArr[2999]=1; for(count=2;count<=1000;count++)//Refer to my article for more explanation. { while(i>0) { total=numArr[i]*count+rem; rem=0; if(total>9) { numArr[i]=total%10; rem=total/10; } else numArr[i]=total; i--; } rem=0; total=0; i=2999; } for(i=0;i<3000;i++) // Display arrays cell to show factorial 1000 { if(numArr[i]!=0 | count==1) { cout<<numArr[i]; count=1; } } getch(); } - 11 -

注意事項

本文(大數(shù)階乘問題C中課程設計絕無僅有)為本站會員(仙***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!