C程序設(shè)計(jì)報(bào)告_第1頁
C程序設(shè)計(jì)報(bào)告_第2頁
C程序設(shè)計(jì)報(bào)告_第3頁
C程序設(shè)計(jì)報(bào)告_第4頁
C程序設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課程名稱:課程名稱: C++課程設(shè)計(jì)C程序設(shè)計(jì)報(bào)告C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第1頁。C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第1頁。再依次提示用戶輸入n個(gè)人在課程A中的考試成績,然后計(jì)算出平均值,顯示出來。 要求用到第九章中的數(shù)組類模板Array定義浮點(diǎn)型數(shù)組存儲(chǔ)考試成績。姓名:馬雪峰學(xué)號:專業(yè)班級: 計(jì)科一班完成日期: 2016年6月26日1設(shè)計(jì)任務(wù)編寫程序提示用戶輸入一個(gè)班級中的學(xué)生人數(shù)n,再依次提示用戶輸入n個(gè)人在課程A中的考試成績,然后計(jì)算出平均值,顯示出來。要求用到第九章中的數(shù)組類模板Array定義浮點(diǎn)型數(shù)組存儲(chǔ)考試成績。1.1設(shè)計(jì)目的(1)、加強(qiáng)C++課程學(xué)習(xí),將課本上的理論知識運(yùn)用于實(shí)踐, 通過實(shí)C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第2頁。目的。C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第3頁。會(huì)C++中面向?qū)ο蟮乃枷?。?) 、在實(shí)際的操作過程中去衡量自己理論知識掌握的程度,通過設(shè)計(jì)流程,編寫程序,上機(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è)計(jì)內(nèi)容用數(shù)組類模板、析構(gòu)函數(shù)、構(gòu)造函數(shù)、賦值構(gòu)造函數(shù)、運(yùn)算符重載、指針等語法來完成一個(gè)班級在某門課程中考試的平均值的程序。1.3設(shè)計(jì)指標(biāo)或者要求設(shè)計(jì)指標(biāo):用C++完成一個(gè)班級在某門課程中的成績儲(chǔ)存并計(jì)算

平均值的程序,要求用 到數(shù)組類模板。輸入要求:在程序運(yùn)行的頁面根據(jù)提示輸入班級學(xué)生人數(shù)n,再依次輸入每個(gè)人在課程A中的成績。輸出要求:輸出n個(gè)人在課程A中的平均成績。2設(shè)計(jì)過程(1)、分析程序的功能:使用戶能根據(jù)程序提示輸入班級學(xué)生人數(shù)n和n個(gè)人在某門課中考試成績,并能儲(chǔ)存成績?nèi)缓笥?jì)算平均值,顯示出C程序設(shè)計(jì)報(bào)告全文共C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第4頁。(2) 、思考程序要用到的算法原理:使用數(shù)組類模板定義浮點(diǎn)型數(shù)組存儲(chǔ)考試成績;利用班級總?cè)藬?shù)與其在課程A中的總分之比的原理求平均值。(3) 、設(shè)計(jì)程序流程圖(見2.3)。(4) 、編寫程序(見2.4)。2.1程序功能使用戶能根據(jù)程序提示輸入班級學(xué)生人數(shù)n和n個(gè)人在某門課中考試成績,并能儲(chǔ)存成績?nèi)缓笥?jì)算平均值,顯示出來。2.2算法原理(1) 、使用數(shù)組類模板定義浮點(diǎn)型數(shù)組存儲(chǔ)考試成績;(2) 、利用班級總?cè)藬?shù)與其在課程A中的總分之比的原理求平均值2.3程序流程圖#ifndefARRAYH#defineARRAY_H#include<iostream.h>#include<stdlib.h>C程序設(shè)計(jì)報(bào)告全文共C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第5頁。constintNULL=0;#endifenumErrorType//錯(cuò)誤類型集合,共有三種類型{invalidArraySize,memoryAllocationError,indexOutOfRange};char*errorMsg[]={"Invalidarraysize","Memoryallocationerror","Invalidindex:"};template<classT>classArray{private:T*alist;//T類型指針,用于存放動(dòng)態(tài)分配的數(shù)組內(nèi)存首地址intsize;voidError(ErrorTypeerror,intbadIndex=0)const;public:Array(intsz=50);Array(constArray<T>&A);~Array(void);//重載"="使數(shù)組對象可以整體賦值A(chǔ)rray<T>&operator=(constArray<T>&rhs);T&operator[](inti);operatorT*(void)const;intListSize(void)const;voidResize(intsz);C程序設(shè)計(jì)報(bào)告全文共C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第6頁。//以下為類成員函數(shù)的實(shí)現(xiàn)template<classT>voidArray<T>::Error(ErrorTypeerror,intbadIndex)const{cout<<errorMsg[error];if(error==indexOutOfRange)cout<<badIndex;//如果是下標(biāo)越界錯(cuò),輸出錯(cuò)誤的下標(biāo)cout<<endl;exit(1);}template<classT>Array<T>::Array(intsz){if(sz<=0)//sz 為數(shù)組大小(元素個(gè)數(shù)),若小于0,則輸出錯(cuò)誤信息Error(invalidArraySize);size=sz;alist=newT[size];//動(dòng)態(tài)分配size個(gè)T類型的元素空間if(alist==NULL)//如果分配內(nèi)存不成功,輸出錯(cuò)誤信息Error(memoryAllocationError);}template<classT>Array<T>::~Array(void){delete[]alist;}template<classT>C程序設(shè)計(jì)報(bào)告全文共C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第7頁。{//從對象X取得數(shù)組大小,并賦值給當(dāng)前對象的成員intn=X.size;size=n;alist=newT[n];if(alist==NULL)//如果分配內(nèi)存不成功,輸出錯(cuò)誤信息Error(memoryAllocationError)T*srcptr=X.alist;T*destptr=alist;while(n--)*destptr++=*srcptr++;}//重載"="運(yùn)算符,將對象rhs賦值給本對象。實(shí)現(xiàn)對象之間的整體賦值template<classT>Array<T>&Array<T>::operator=(constArray<T>&rhs){intn=rhs.size;if(size!=n){delete[]alist;alist=newT[n];//重新分配n個(gè)元素的內(nèi)存if(alist==NULL)C程序設(shè)計(jì)報(bào)告全文共C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第8頁。size=n;//記錄本對象的數(shù)組大小}//從rhs向本對象復(fù)制元素T*destptr=alist;}}C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第9頁。while(n--)*destptr++=*srcptr++;return*this;}//重載下標(biāo)操作符,實(shí)現(xiàn)與普通數(shù)組一樣通過下標(biāo)訪問元素,并且具有越界檢查功能template<classT>T&Array<T>::operator[](intn){//檢查下標(biāo)是否越界if(n<0||n>size-1)Error(indexOutOfRange,n);//返回下標(biāo)為n的數(shù)組元素returnalist[n];}template<classT>Array<T>::operatorT*(void)const{//返回當(dāng)前對象中私有數(shù)組的首地址returnalist;C程序設(shè)計(jì)報(bào)告全文共13C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第10頁。template<classT>intArray<T>::ListSize(void)const{returnsize;}//將數(shù)組大小修改為sztemplate<classT>voidArray<T>::Resize(intsz){if(sz<=0)Error(invalidArraySize);if(sz==size)return;T*newlist=newT[sz];if(newlist==NULL)Error(memoryAllocationError);intn=(sz<=size)sz:size;//將原有數(shù)組中前n個(gè)元素復(fù)制到新數(shù)組中T*srcptr=alist;T*destptr=newlist;while(n--)C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第11頁。delete[]alist;alist=newlist;size=sz;}#endifvoidmain(){intn;doubleAverScore,TotalScore=0;cout<<"請輸入學(xué)生人數(shù):";cin>>n;Array<float>Score(n);for(inti=0;i<n;i++){cout<<"請輸入第"<<i+1<<"個(gè)學(xué)生的課程A成績(0~100):"cin>>Score[i];TotalScore+=Score[i];}AverScore=TotalScore/n;cout<<"平均成績?yōu)?<<AverScore<<endl;軟件運(yùn)行或者測試結(jié)果若一個(gè)班學(xué)生人數(shù)為10,他們的在課程A中的考試成績分別為88、C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第12頁。78、90、93、69、89、95、77、79C程序設(shè)計(jì)報(bào)告全文共13頁,當(dāng)前為第12頁。軟件設(shè)計(jì)過程中遇到的問題以及解決辦法在這次設(shè)計(jì)程序的過程中遇到了許多問題:比如對類模板、數(shù)組的內(nèi)存分配、指針、析構(gòu)函數(shù)等知識掌握不牢固,使得拿到題目無從下手;不知道重載運(yùn)算符“=”可以對數(shù)組整體賦值;對this指針概念模糊;但最后都通過請教別人和翻課本,上網(wǎng)查找相關(guān)資料等途徑解決了。參考文獻(xiàn):C++語言程序設(shè)計(jì)(第四版)、C++程序設(shè)計(jì)(第二版)譚浩強(qiáng)著、VisualC++編程之道。總結(jié)這兩周的C++課程設(shè)計(jì),時(shí)間上說長不長,說短也不短,卻讓我學(xué)到了很多:對很多函數(shù)有了新的認(rèn)識,對C++有了更深刻的了解,增強(qiáng)了程序的編寫能力,鞏固了專業(yè)知識。在寫程序的過程中我學(xué)到了自己曾經(jīng)不知道或一些不會(huì)用的函數(shù),特別是多文件結(jié)構(gòu),類模板,運(yùn)算符的重載等;也讓我明白了學(xué)好C++是多么重要;在自己基礎(chǔ)知識掌握不牢固的情況下,要設(shè)計(jì)一個(gè)程序是多么難??偟膩?/p>

溫馨提示

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

評論

0/150

提交評論