![C++程序設(shè)計(jì)報(bào)告_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/489e165e-a7ca-4867-add0-8e5c5e5882c5/489e165e-a7ca-4867-add0-8e5c5e5882c51.gif)
![C++程序設(shè)計(jì)報(bào)告_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/489e165e-a7ca-4867-add0-8e5c5e5882c5/489e165e-a7ca-4867-add0-8e5c5e5882c52.gif)
![C++程序設(shè)計(jì)報(bào)告_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/489e165e-a7ca-4867-add0-8e5c5e5882c5/489e165e-a7ca-4867-add0-8e5c5e5882c53.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、設(shè)計(jì)題目:編寫(xiě)程序提示用戶(hù)輸入一個(gè)班級(jí)中的學(xué)生人數(shù) n, 再依次提示用戶(hù)輸入 n個(gè)人在課程 A中的考試成 績(jī),然后計(jì)算出平均值,顯示出來(lái)。 要求用到第 九章中的數(shù)組類(lèi)模板 Array 定義浮點(diǎn)型數(shù)組存儲(chǔ) 考試成績(jī)。姓名:馬雪峰學(xué)號(hào):20141030106專(zhuān)業(yè)班級(jí):計(jì)科一班完成日期:2016年6月26日1設(shè)計(jì)任務(wù)編寫(xiě)程序提示用戶(hù)輸入一個(gè)班級(jí)中的學(xué)生人數(shù)n,再依次提示用戶(hù)輸入n個(gè)人在課程A中的考試成績(jī),然后計(jì)算出平均值,顯示出來(lái)。要求用到第九章中的數(shù)組類(lèi)模板Array定義浮點(diǎn)型數(shù)組存儲(chǔ)考試成績(jī)。1.1設(shè)計(jì)目的(1)、加強(qiáng)C+課程學(xué)習(xí),將課本上的理論知識(shí)運(yùn)用于實(shí)踐,通過(guò)實(shí)際的程序操作來(lái)提高 自己編寫(xiě)
2、程序的能力,達(dá)到理論與實(shí)踐相結(jié)合的目的。(2) 、培養(yǎng)自己動(dòng)腦思考,動(dòng)手操作的能力,在實(shí)際操作過(guò)程中體會(huì)C+中面向?qū)ο蟮乃?想。(3)、在實(shí)際的操作過(guò)程中去衡量自己理論知識(shí)掌握的程度,通過(guò)設(shè)計(jì)流程,編寫(xiě)程序, 上機(jī)調(diào)試去尋找并發(fā)現(xiàn)知識(shí)的缺陷,并想辦法彌補(bǔ)。(4)、在本程序中主要是要達(dá)到能對(duì)類(lèi)的定義及用法,數(shù)組的定義及用法,數(shù)組類(lèi)模版, 運(yùn)算符重載,多文件結(jié)構(gòu),成員函數(shù)的實(shí)現(xiàn)等的熟練運(yùn)用。1.2設(shè)計(jì)內(nèi)容用數(shù)組類(lèi)模板、析構(gòu)函數(shù)、構(gòu)造函數(shù)、賦值構(gòu)造函數(shù)、運(yùn)算符重載、指針等語(yǔ)法來(lái)完成一個(gè)班級(jí)在某門(mén)課程中考試的平均值的程序。1.3設(shè)計(jì)指標(biāo)或者要求設(shè)計(jì)指標(biāo):用C+完成一個(gè)班級(jí)在某門(mén)課程中的成績(jī)儲(chǔ)存并計(jì)算平
3、均值的程序,要求用 到數(shù)組類(lèi)模板。輸入要求:在程序運(yùn)行的頁(yè)面根據(jù)提示輸入班級(jí)學(xué)生人數(shù)n,再依次輸入每個(gè)人在課程A中的成績(jī)。輸出要求:輸出n個(gè)人在課程A中的平均成績(jī)。2設(shè)計(jì)過(guò)程(1) 、分析程序的功能:使用戶(hù)能根據(jù)程序提示輸入班級(jí)學(xué)生人數(shù)n和n個(gè)人在某門(mén)課中 考試成績(jī),并能儲(chǔ)存成績(jī)?nèi)缓笥?jì)算平均值,顯示出來(lái)。(2)、思考程序要用到的算法原理:使用數(shù)組類(lèi)模板定義浮點(diǎn)型數(shù)組存儲(chǔ)考試成績(jī);利用 班級(jí)總?cè)藬?shù)與其在課程 A中的總分之比的原理求平均值。(3)、設(shè)計(jì)程序流程圖(見(jiàn) 2.3 )。(4)、編寫(xiě)程序(見(jiàn) 2.4 )。2.1程序功能使用戶(hù)能根據(jù)程序提示輸入班級(jí)學(xué)生人數(shù)n和n個(gè)人在某門(mén)課中考試成績(jī),并能儲(chǔ)
4、存成績(jī)?nèi)缓笥?jì)算平均值,顯示出來(lái)。2.2算法原理(1 )、使用數(shù)組類(lèi)模板定義浮點(diǎn)型數(shù)組存儲(chǔ)考試成績(jī);2.3程序流程圖S出 AverScore結(jié)束2.4程序主要模塊或者函數(shù)#ifndef ARRAY_H#defi ne ARRAY_H#in elude <iostream.h>#i nclude <stdlib.h>#ifndef NULLcon st int NULL = 0;#en difenum ErrorType/錯(cuò)誤類(lèi)型集合,共有三種類(lèi)型invalidArraySize, memoryAllocationError, indexOutOfRange;char *e
5、rrorMsg="In valid array size", "Memory allocatio n error","Invalid in dex:"template <class T>class Arrayprivate:T* alist; /T類(lèi)型指針,用于存放動(dòng)態(tài)分配的數(shù)組內(nèi)存首地址int size;void Error(ErrorType error,i nt badI ndex=0) con st;public:Array(i nt sz = 50);Array(c onst Array<T>&
6、; A);Array(void);/重載"="使數(shù)組對(duì)象可以整體賦值A(chǔ)rray<T>& operator= (const Array<T>& rhs);T& operator(i nt i);operator T* (void) con st;int ListSize(void) con st;void Resize(i nt sz);/以下為類(lèi)成員函數(shù)的實(shí)現(xiàn)template <class T>void Array<T>:Error(ErrorType error, i nt bad In dex) c
7、onstcout << errorMsgerror;if (error = in dexOutOfRa nge)cout << badI ndex; /如果是下標(biāo)越界錯(cuò),輸出錯(cuò)誤的下標(biāo)cout << en dl;exit(1);template <class T>Array<T>:Array(i nt sz)if (sz <= 0) /sz為數(shù)組大小(元素個(gè)數(shù)),若小于0,則輸出錯(cuò)誤信息 Error(i nvalidArraySize);size = sz;alist = new Tsize; /動(dòng)態(tài)分配size個(gè)T類(lèi)型的元素空
8、間if (alist = NULL) /如果分配內(nèi)存不成功,輸出錯(cuò)誤信息Error(memoryAllocatio nError);template <class T>Array<T>:Array(void)delete alist;template <class T>Array<T>:Array(c onst Array<T >& X)/從對(duì)象X取得數(shù)組大小,并賦值給當(dāng)前對(duì)象的成員int n = X.size;size = n;alist = new Tn;if (alist = NULL) /如果分配內(nèi)存不成功,輸出錯(cuò)誤信
9、息Error(memoryAllocatio nError)T* srcptr = X.alist;T* destptr = alist;while (n-)*destptr+ = *srcptr+;/重載"="運(yùn)算符,將對(duì)象rhs賦值給本對(duì)象。實(shí)現(xiàn)對(duì)象之間的整體賦值template <class T>Array<T>& Array<T>:operator= (const Array<T>& rhs)int n = rhs.size;if (size != n)delete alist;alist = new
10、Tn; /重新分配n個(gè)元素的內(nèi)存if (alist = NULL)Error(memoryAllocatio nError);size = n; /記錄本對(duì)象的數(shù)組大小/從rhs向本對(duì)象復(fù)制元素T* destptr = alist;T* srcptr = rhs.alist;while (n-)*destptr+ = *srcptr+;return *this;/重載下標(biāo)操作符,實(shí)現(xiàn)與普通數(shù)組一樣通過(guò)下標(biāo)訪(fǎng)問(wèn)元素,并且具有越界檢查功能template <class T>T& Array<T>:operator (i nt n)/檢查下標(biāo)是否越界if (n <
11、; 0 | n > size-1)Error(i ndexOutOfRa nge, n);/返回下標(biāo)為n的數(shù)組元素return alist n;template <class T>Array<T>:operator T* (void) const/返回當(dāng)前對(duì)象中私有數(shù)組的首地址return alist;/取當(dāng)前數(shù)組的大小template <class T>int Array<T>:ListSize(void) constreturn size;/將數(shù)組大小修改為sztemplate <class T>void Array<
12、T>:Resize(i nt sz)if (sz <= 0)Error(i nvalidArraySize);if (sz = size)return;T* n ewlist = new Tsz;if (n ewlist = NULL)Error(memoryAllocatio nError);int n = (sz <= size) ? sz : size;/將原有數(shù)組中前n個(gè)元素復(fù)制到新數(shù)組中T* srcptr = alist;T* destptr = n ewlist;while (n-)*destptr+ = *srcptr+;delete alist;alist =
13、 n ewlist;size = sz;#en difvoid mai n()int n;double AverScore,TotalScore = 0;cout << "請(qǐng)輸入學(xué)生人數(shù):”;cin >> n;Array<float> Score (n);for (in t i=0; i<n; i+)cout << "請(qǐng)輸入第"<< i+1 <<" 個(gè)學(xué)生的課程 A成績(jī)(0100):" cin >> Scorei;TotalScore += Scorei;
14、AverScore = TotalScore/n;cout << " 平均成績(jī)?yōu)?” << AverScore << endl;3軟件運(yùn)行或者測(cè)試結(jié)果若一個(gè)班學(xué)生人數(shù)為 10,他們的在課程 A中的考試成績(jī)分別為 88、78、90、93、69、89、 95、77、79、90,根據(jù)程序提示依次輸入,則程序運(yùn)行結(jié)果如圖所示:I H:DEbuigqq 心貳123456789主冃土冃至冃主冃主冃至冃主冃至口0 0- 0 00 0 0 0 0 -0 0 R- 0 0 0 0 0 1曠 0 0 0 0 0- 0 0 0 0 ( <<<<&
15、lt;<<< 貝 績(jī)績(jī)績(jī)績(jī)績(jī)績(jī)績(jī)績(jī)薯 e- 成成成成成成成成成昉nu AAAAAAAAACf i 口王口王口至口王口王口王口王口王口王t 古4JA 丄 K 亠員ZCA三4ZCA梟 n rnp mrmkmFCmKIL D 0il課isililisilil內(nèi) c T二三 二-一二一二一二 三一二二-些 t f-L.二上3匸一53匸二空些苣8 d 123456789 1 y-. y- 學(xué)第第第第第第第第第第績(jī)斷 入入兀入入兀入入兀入入成S “ j j j . j s88 ?890936989957779904軟件設(shè)計(jì)過(guò)程中遇到的問(wèn)題以及解決辦法在這次設(shè)計(jì)程序的過(guò)程中遇到了許多問(wèn)題:
16、比如對(duì)類(lèi)模板、數(shù)組的內(nèi)存分配、指針、析構(gòu)函數(shù)等知識(shí)掌握不牢固,使得拿到題目無(wú)從下手;不知道重載運(yùn)算符“=”可以對(duì)數(shù)組整體賦值;對(duì)this指針概念模糊;但最后都通過(guò)請(qǐng)教別人和翻課本,上網(wǎng)查找相關(guān)資料等途 徑解決了。參考文獻(xiàn):C+語(yǔ)言程序設(shè)計(jì)(第四版)、C+程序設(shè)計(jì)(第二版)譚浩強(qiáng)著、Visual C+編程之道。5總結(jié)這兩周的C+課程設(shè)計(jì),時(shí)間上說(shuō)長(zhǎng)不長(zhǎng),說(shuō)短也不短,卻讓我學(xué)到了很多:對(duì)很多函數(shù) 有了新的認(rèn)識(shí),對(duì) C+有了更深刻的了解,增強(qiáng)了程序的編寫(xiě)能力,鞏固了專(zhuān)業(yè)知識(shí)。在寫(xiě) 程序的過(guò)程中我學(xué)到了自己曾經(jīng)不知道或一些不會(huì)用的函數(shù),特別是多文件結(jié)構(gòu),類(lèi)模板, 運(yùn)算符的重載等;也讓我明白了學(xué)好 C+是多么重要;在自己基礎(chǔ)知識(shí)掌握不牢固的情況下, 要設(shè)計(jì)一個(gè)程序是多么難。總的來(lái)說(shuō)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育創(chuàng)新與家教的結(jié)合如何引導(dǎo)孩子在逆境中成長(zhǎng)
- 科技創(chuàng)新企業(yè)如何構(gòu)建高效的營(yíng)銷(xiāo)團(tuán)隊(duì)
- 《少年閏土》教學(xué)設(shè)計(jì)與反思
- 2025年租賃合同提前解除市場(chǎng)影響
- 二級(jí)建造師合作合同樣本
- 互助市場(chǎng)拓展合作合同書(shū)
- 二手房屋購(gòu)買(mǎi)合同誠(chéng)意金約定
- 個(gè)人質(zhì)押與抵押合同
- XX公司員工培訓(xùn)合同協(xié)議
- 產(chǎn)品設(shè)計(jì)與研發(fā)合作合同范例
- 最高人民法院婚姻法司法解釋?zhuān)ǘ┑睦斫馀c適用
- 關(guān)于醫(yī)保應(yīng)急預(yù)案
- 新人教版五年級(jí)上冊(cè)數(shù)學(xué)應(yīng)用題大全doc
- 商業(yè)綜合體市場(chǎng)調(diào)研報(bào)告
- GB/T 42096-2022飛機(jī)耐火電纜性能要求
- 2022年版義務(wù)教育勞動(dòng)課程標(biāo)準(zhǔn)學(xué)習(xí)培訓(xùn)解讀課件筆記
- 2022年中國(guó)止血材料行業(yè)概覽:發(fā)展現(xiàn)狀對(duì)比分析研究報(bào)告(摘要版) -頭豹
- 一起重新構(gòu)想我們的未來(lái):為教育打造新的社會(huì)契約
- GB/T 4214.2-2020家用和類(lèi)似用途電器噪聲測(cè)試方法真空吸塵器的特殊要求
- GB/T 22482-2008水文情報(bào)預(yù)報(bào)規(guī)范
- 蔬菜采購(gòu)項(xiàng)目投標(biāo)書(shū)
評(píng)論
0/150
提交評(píng)論