C++課程設計報告書- 編寫程序精確計算100!的值_第1頁
C++課程設計報告書- 編寫程序精確計算100!的值_第2頁
C++課程設計報告書- 編寫程序精確計算100!的值_第3頁
C++課程設計報告書- 編寫程序精確計算100!的值_第4頁
C++課程設計報告書- 編寫程序精確計算100!的值_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

河北聯(lián)合大學2012-2013第2學期《軟件設計基礎-C++》課程設計報告設計名稱:編寫程序精確計算100!的值姓名:學號:專業(yè)班級:學院:設計時間:設計地點:指導教師評語:教師評定教師評定:自評成績:指導教師簽字:年月日《軟件設計基礎-C++》課程設計報告第3頁,共10頁目錄1.課程設計目的 32.課程設計任務與要求 33.課程設計說明書 44.課程設計成果 65.程序調試過程 76.設計問題的不足和改進方案 87.課程設計心得 98.參考文獻 9

1.課程設計目的《軟件設計基礎-C++》課程設計是這門課程的實踐性教學環(huán)節(jié)之一,本次設計結合實際應用的要求,使課程設計既覆蓋C++的知識點,又接近工程實際需要。目的是通過課程設計的綜合訓練,培養(yǎng)學生實際分析問題、解決問題的能力,以及編程和動手能力,最終目標是通過課程設計這種形式,幫助學生系統(tǒng)掌握C++這門課程的主要內容,養(yǎng)成良好的編程習慣,更好的完成教學任務。2.課程設計任務與要求:要求:本次課程設計利用《軟件設計基礎-C++》課程中所學到的編程知識和編程技巧,完成具有一定難度和工作量的程序設計題目,幫助學生掌握編程、調試的基本技能,獨立完成所布置的任務。要求:1、對系統(tǒng)進行功能需求分析2、設計合理的數(shù)據結構和系統(tǒng)框架3、編程簡練,程序功能齊全,能正確運行4、說明書、流程圖要清楚5、課題完成后必須按要求提交課程設計報告任務:問題描述:由于100!的結果不能夠用C++中某種數(shù)據類型的變量進行精確的描述,因此需要采用一個大的數(shù)組,數(shù)組中每個元素存儲一位數(shù),這樣一個非常大的數(shù)可以用一個大的數(shù)組來表示。問題的解決方案:根據問題描述,可以采用模擬人進行乘法的過程,進行計算100!的值。首先用一個大數(shù)組來描述一個小數(shù)1,然后讓這個大數(shù)組所表示的數(shù)為這個大數(shù)組乘2的值;再讓這個大數(shù)組所表示的數(shù)為這個大數(shù)組乘3的值;…依次類推,直到這個大數(shù)組所表示的數(shù)為這個大數(shù)組乘100的值。這樣可求得100!的值。

3.課程設計說明書=1\*GB2⑴概要設計模塊說明:在我的程序中主要有兩個部分,分別是文件的寫入與100階乘的計算。在階乘的計算中又使用了for循環(huán)嵌套外部循環(huán)是實現(xiàn)j的依次遞增即相應階乘中的一項,內部循環(huán)是通過模擬手工計算乘法過程來計算結果。最后又通過兩個for循環(huán)來得結果。模塊結構圖:寫入文件寫入文件輸入數(shù)據計算并輸出結果結束=2\*GB2⑵詳細設計開始打開開始打開/創(chuàng)建文件輸入數(shù)據用for循環(huán)嵌套計算階乘輸出結果關閉文件結束各功能模塊流程圖:開始開始Ofstreamofs(“com.txt”,ios::trunc)寫入文件的內容 ofs.close()結束圖1寫入文件流程圖開始開始j=2;j<=n;j++i=0;i<N;i++s=a[i]*j+c;a[i]=s%10;c=s/10;for(i=N-1;i>=0;i--)//忽略前導零if(a[i])break;結束for(j=i;j>=0;j--)//倒序輸出cout<<a[j];圖2for循環(huán)嵌套求階乘圖4.課程設計成果#include<iostream>#defineN3000#include<cstring>#include<fstream>usingnamespacestd;inta[N];//定義數(shù)組intmain(){ ofstreamofs("com.txt",ios::trunc);//ios::trunc表示在打開文件前將文件清空,由于是寫入,文件不存在則創(chuàng)建 if(!ofs) { cout<<"不能打開出文件"<<endl; return1; } intn,i,j,c,s; cin>>n; memset(a,0,sizeof(a));//數(shù)組清零 a[0]=1;//a[0]賦值為1 for(j=2;j<=n;j++)//乘以j { //開始階乘,階乘元素從2開始依次"登場" //按最基本的乘法運算思想來考慮,將臨時結果的每位與階乘元素相乘 c=0;//是否進位 for(i=0;i<N;i++) { s=a[i]*j+c;//相應階乘中的一項與當前所得臨時結果的某位//相乘(加上進位) a[i]=s%10;//更新臨時結果的位上信息 c=s/10;//看是否有進位 } } for(i=N-1;i>=0;i--) if(a[i])break;//忽略前導零 for(j=i;j>=0;j--)//倒序輸出 cout<<a[j]; ofs.close();//關閉文件}運行結果如下:5.程序調試過程步驟:1.輸入數(shù)據100,輸入完成后程序開始調用函數(shù)進行計算。2.100階乘的計算是通過for循環(huán)嵌套來實現(xiàn)的,外部循環(huán)是實現(xiàn)j的依次遞增即相應階乘中的一項,內部循環(huán)是通過模擬手工計算乘法過程來計算結果,即由于100!的結果不能夠用C++中某種數(shù)據類型的變量進行精確的描述,因此需要采用一個大的數(shù)組,數(shù)組的每一個元素表示一位十進制數(shù)字,高位在前,低位在后,這樣一個非常大的數(shù)可以用一個大的數(shù)組來表示。以此模擬手工計算,例如:2234*8。我們將被乘數(shù)表示為一個數(shù)組A[],a[1],a[2],a[3],a[4]分別為2,2,3,4,a[0]置為0.Step1:從被乘數(shù)的個位a[4]起,取出一個數(shù)字4.Step2:與乘數(shù)8相乘,其積是兩位數(shù)32,其個位數(shù)2作為結果的個位,存入a[4],十位數(shù)3存入進位c。Step3:取被乘數(shù)的上一位數(shù)字a[3]與乘數(shù)相乘,并加上上一步計算過程的進位C,得到27,將這個數(shù)的個位7作為結果的倒數(shù)第二位,存入a[3],十位數(shù)2存入進位c。Step4:重復Step3,取a[i](i依次為4,3,2,1)與乘數(shù)相乘并加上c,其個位仍存入a[i],十位數(shù)字存入c,直到i等于1為止。Step5:將最后一步的進位c作為積的最高位a[0]。3.在通過一個循環(huán)語句將大數(shù)組中的元素依照“從左至右,高位到低位”的順序排列出來,最終在以循環(huán)語句進行順序的顛倒得出結果。6.設計問題的不足和改進方案不足之處有二,一是沒有運用相對好的遞歸函數(shù),二是只有寫入文件,沒有讀出文件改進方案:將程序改用遞歸函數(shù)來實現(xiàn),進而優(yōu)化程序;并用fstream來實現(xiàn)函數(shù)的讀出,以實現(xiàn)以文件的形式保存計算過程。7.課程設計心得近一個月的課程設計結束了,感覺自己收獲很大。這一個月的課程設計不僅是對我所學知識的檢驗,更是對我知識綜合運用的實踐。通過這次課程設計,我深深體會到“千里之行始于足下”這句千古名言的真正含義。只有平時努力學習,腳踏實地才能在應用的時候出彩!在課程設計過程中我也深深感受到了自己知識的匱乏,好多想法想去實現(xiàn)卻又不知道方向,以致想法胎死腹中!但我也從中學會了好多,對于循環(huán)結構的應用變得得心應手了,也粗略涉及到了文件的有關知識。除此之外,我還學會了如何去把握一件事情,如何去做一件事情。做事之前要有準確的分析,這樣會減少不必要的彎路,對于目標的實現(xiàn)起很大作用;做事的時候要有耐心,過程中寂寞、挫折不會少,只有耐得住性子才能成功。8.參考文獻[1]

(美)

Bjarne

Stroustrup

著.

C++程序設計語言(特別版).

(

裘宗燕

).北京:

機械工業(yè)出版社,2002.125~188

[2]

何渝編

著.計算機常用數(shù)值算法與程序[M].北京:人民郵電出版社,20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論