C程序設(shè)計報告_第1頁
C程序設(shè)計報告_第2頁
C程序設(shè)計報告_第3頁
C程序設(shè)計報告_第4頁
C程序設(shè)計報告_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余8頁可下載查看

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、課程名稱:C+課程設(shè)計設(shè)計題目:編寫程序提示用戶輸入一個班級中的學(xué)生人數(shù)n,再依次提示用戶輸入n個人在課程A中的考試成績,然后計算出平均值,顯示出來。要求用到第九章中的數(shù)組類模板Array定義浮點(diǎn)型數(shù)組存儲考試成績。姓名:馬雪峰學(xué)號:專業(yè)班級:計科一班完成日期:2016年6月26日1設(shè)計任務(wù)編寫程序提示用戶輸入一個班級中的學(xué)生人數(shù)n,再依次提示用戶輸入n個人在課程A中的考試成績,然后計算出平均值,顯示出來。要求用到第九章中的數(shù)組類模板Array定義浮點(diǎn)型數(shù)組存儲考試成績。1.1設(shè)計目的(1)、加強(qiáng)C+播程學(xué)習(xí),將課本上的理論知識運(yùn)用于實(shí)踐,通過實(shí)際的程序操作來提高自己編寫程序的能力,達(dá)到理論與

2、實(shí)踐相結(jié)合的目的。(2)、培養(yǎng)自己動腦思考,動手操作的能力,在實(shí)際操作過程中體會C+”面向?qū)ο蟮乃枷搿?3)、在實(shí)際的操作過程中去衡量自己理論知識掌握的程度,通過設(shè)計流程,編寫程序,上機(jī)調(diào)試去尋找并發(fā)現(xiàn)知識的缺陷,并想辦法彌補(bǔ)。(4)、在本程序中主要是要達(dá)到能對類的定義及用法,數(shù)組的定義及用法,數(shù)組類模版,運(yùn)算符重載,多文件結(jié)構(gòu),成員函數(shù)的實(shí)現(xiàn)等的熟練運(yùn)用。1.2 設(shè)計內(nèi)容用數(shù)組類模板、析構(gòu)函數(shù)、構(gòu)造函數(shù)、賦值構(gòu)造函數(shù)、運(yùn)算符重載、指針等語法來完成一個班級在某門課程中考試的平均值的程序。1.3 設(shè)計指標(biāo)或者要求設(shè)計指標(biāo):用C+垸成一個班級在某門課程中的成績儲存并計算平均值的程序,要求用到數(shù)組類

3、模板。輸入要求:在程序運(yùn)行的頁面根據(jù)提示輸入班級學(xué)生人數(shù)n,再依次輸入每個人在課程A中的成績。輸出要求:輸出n個人在課程A中的平均成績2設(shè)計過程(1)、分析程序的功能:使用戶能根據(jù)程序提示輸入班級學(xué)生人數(shù)n和n個人在某門課中考試成績,并能儲存成績?nèi)缓笥嬎闫骄?,顯示出來。(2)、思考程序要用到的算法原理:使用數(shù)組類模板定義浮點(diǎn)型數(shù)組存儲考試成績;利用班級總?cè)藬?shù)與其在課程A中的總分之比的原理求平均值。(3)、設(shè)計程序流程圖(見2.3)。(4)、編寫程序(見2.4)。2.1 程序功能使用戶能根據(jù)程序提示輸入班級學(xué)生人數(shù)n和n個人在某門課中考試成績,并能儲存成績?nèi)缓笥嬎闫骄担@示出來。2.2 算法

4、原理(1)、使用數(shù)組類模板定義浮點(diǎn)型數(shù)組存儲考試成績;(2)、利用班級總?cè)藬?shù)與其在課程A中的總分之比的原理求平均值。2.3 程序流程圖2.4 程序主要模塊或者函數(shù)#ifndefARRAY_H#defineARRAY_H#include#include#ifndefNULLconstintNULL=0;#endifenumErrorType/錯誤類型集合,共有三種類型invalidArraySize,memoryAllocationError,indexOutOfRange;char*errorMsg=Invalidarraysize,Memoryallocationerror,Invalidi

5、ndex:;templateclassArrayprivate:T*alist;/T類型指針,用于存放動態(tài)分配的數(shù)組內(nèi)存首地址intsize;voidError(ErrorTypeerror,intbadIndex=0)const;public:Array(intsz=50);Array(constArray&A);Array(void);/重載=使數(shù)組對象可以整體賦值A(chǔ)rray&operator=(constArray&rhs);T&operator(inti);operatorT*(void)const;intListSize(void)const;voidResize(intsz);/以

6、下為類成員函數(shù)的實(shí)現(xiàn)templatevoidArray:Error(ErrorTypeerror,intbadIndex)constcouterrorMsgerror;if(error=indexOutOfRange)coutbadIndex;/如果是下標(biāo)越界錯,輸出錯誤的下標(biāo)coutendl;exit(1);templateArray:Array(intsz)(if(sz=0)/sz為數(shù)組大小(元素個數(shù)),若小于0,則輸出錯誤信息Error(invalidArraySize);size=sz;alist=newTsize;/動態(tài)分配size個T類型的元素空間if(alist=NULL)/如果

7、分配內(nèi)存不成功,輸出錯誤信息Error(memoryAllocationError);)templateArray:Array(void)(deletealist;templateArray:Array(constArray&X)(/從對象X取得數(shù)組大小,并賦值給當(dāng)前對象的成員intn=X.size;size=n;alist=newTn;if(alist=NULL)/如果分配內(nèi)存不成功,輸出錯誤信息Error(memoryAllocationError)T*srcptr=X.alist;T*destptr=alist;while(n-)*destptr+=*srcptr+;/重載=運(yùn)算符,將對

8、象rhs賦值給本對象。實(shí)現(xiàn)對象之間的整體賦值templateArray&Array:operator=(constArray&rhs)(intn=rhs.size;if(size!=n)(deletealist;alist=newTn;/重新分配n個元素的內(nèi)存if(alist=NULL)Error(memoryAllocationError);size=n;/記錄本對象的數(shù)組大小/從rhs向本對象復(fù)制元素T*destptr=alist;T*srcptr=rhs.alist;while(n-)*destptr+=*srcptr+;return*this;)/重載下標(biāo)操作符,實(shí)現(xiàn)與普通數(shù)組一樣通過

9、下標(biāo)訪問元素,并且具有越界檢查功能templateT&Array:operator(intn)(/檢查下標(biāo)是否越界if(nsize-1)Error(indexOutOfRange,n);/返回下標(biāo)為n的數(shù)組元素returnalistn;)templateArray:operatorT*(void)const/返回當(dāng)前對象中私有數(shù)組的首地址returnalist;)/取當(dāng)前數(shù)組的大小templateintArray:ListSize(void)const(returnsize;)/將數(shù)組大小修改為sztemplatevoidArray:Resize(intsz)(if(sz=0)Error(in

10、validArraySize);if(sz=size)return;T*newlist=newTsz;if(newlist=NULL)Error(memoryAllocationError);intn=(sz=size)?sz:size;/將原有數(shù)組中前n個元素復(fù)制到新數(shù)組中T*srcptr=alist;T*destptr=newlist;while(n-)*destptr+=*srcptr+;deletealist;alist=newlist;size=sz;)#endifvoidmain()intn;doubleAverScore,TotalScore=0;coutn;ArrayScore

11、(n);for(inti=0;in;i+)(cout請輸入第i+1Scorei;TotalScore+=Scorei;AverScore=TotalScore/n;cout平均成績?yōu)锳verScoreendl;3軟件運(yùn)行或者測試結(jié)果若一個班學(xué)生人數(shù)為10,他們的在課程A中的考試成績分別為88、78、90、93、69、89、95、77、79、90,根據(jù)程序提示依次輸入,則程序運(yùn)行結(jié)果如圖所示:4軟件設(shè)計過程中遇到的問題以及解決辦法在這次設(shè)計程序的過程中遇到了許多問題:比如對類模板、數(shù)組的內(nèi)存分配、指針、析構(gòu)函數(shù)等知識掌握不牢固,使得拿到題目無從下手;不知道重載運(yùn)算符“=”可以對數(shù)組整體賦值;對t

12、his指針概念模糊;但最后都通過請教別人和翻課本,上網(wǎng)查找相關(guān)資料等途徑解決了。參考文獻(xiàn):C+吾言程序設(shè)計(第四版)、C+強(qiáng)序設(shè)計(第二版)譚浩強(qiáng)著、VisualC+編程之道。5總結(jié)這兩周的C+課程設(shè)計,時間上說長不長,說短也不短,卻讓我學(xué)到了很多:對很多函數(shù)有了新的認(rèn)識,對C+有了更深刻的了解,增強(qiáng)了程序的編寫能力,鞏固了專業(yè)知識。在寫程序的過程中我學(xué)到了自己曾經(jīng)不知道或一些不會用的函數(shù),特別是多文件結(jié)構(gòu),類模板,運(yùn)算符的重載等;也讓我明白了學(xué)好C+是多么重要;在自己基礎(chǔ)知識掌握不牢固的情況下,要設(shè)計一個程序是多么難??偟膩碚f,這次課程設(shè)計實(shí)習(xí)讓我受益匪淺。雖然在調(diào)試程序的過程中遇到了許多困難,有時候甚至覺得一點(diǎn)頭緒都沒有,無從下手,但最終都通過

溫馨提示

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

評論

0/150

提交評論