版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
精品文檔-下載后可編輯實(shí)驗(yàn)5_模板與異常處理1、C+面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)序號(hào):5實(shí)驗(yàn)項(xiàng)目名稱:模板與異常處理學(xué)號(hào)姓名專業(yè)計(jì)算機(jī)類實(shí)驗(yàn)地點(diǎn)指導(dǎo)教師實(shí)驗(yàn)時(shí)間27一、實(shí)驗(yàn)?zāi)康募耙笏惴ǎ绕涫峭ㄓ玫乃惴ㄊ浅绦蛟O(shè)計(jì)的重點(diǎn),模板是建立通用的與數(shù)據(jù)類型無關(guān)的算法的重要手段。
2、通過實(shí)驗(yàn)要求:正確理解模板的概念;掌握函數(shù)模板和類模板的聲明和使用方法;學(xué)習(xí)簡單的異常處理方法;(選修)二、實(shí)驗(yàn)內(nèi)容與步驟調(diào)試下列程序,寫出程序的輸出結(jié)果并分析原因。
3、(#includeusingnamespacestd;templateTmax(Tx,Ty)returnxy?x:y;intmax(inta,intb)returnab?a:b;doublemax(doublea,doubleb)returnab?a:b;intmain()coutmax(3,ismax(3,endl;return0;【運(yùn)行結(jié)果截圖】:【運(yùn)行結(jié)果分析】函數(shù)模板與同名的非模板函數(shù)可以重載,首先尋找一個(gè)參數(shù)完全匹配的非模板函數(shù),如果找到了就調(diào)用它;如果沒有找到,則尋找函數(shù)模板,將其實(shí)例化,產(chǎn)生一個(gè)與之相匹配的模板函數(shù),若找到,就調(diào)用它。
本體函數(shù)調(diào)用的實(shí)參是字符型,只能找到模板函數(shù)。
4、(#includeusingnamespacestd;intmax(inta,intb)returnab?a:b;doublemax(doublea,doubleb)returnab?a:b;intmain()coutmax(3,ismax(3,endl;return0;【運(yùn)行結(jié)果截圖】:【運(yùn)行結(jié)果分析】:函數(shù)調(diào)用的實(shí)參為字符型,定義的函數(shù)中的形參沒有字符型,所以被轉(zhuǎn)化成整型的實(shí)參與intmax(inta,intb)匹配,調(diào)用該函數(shù)。
5、編寫一個(gè)求任意類型數(shù)組中最大元素和最小元素的程序,要求將求最大元素和最小元素的函數(shù)設(shè)計(jì)成函數(shù)模板。
6、【運(yùn)行結(jié)果截圖】:編寫一個(gè)程序,使用類模板對數(shù)組元素進(jìn)行排序、倒置、查找和求和。
【提示】:設(shè)計(jì)一個(gè)類模板。
7、TemplateClassArray具有對數(shù)組元素進(jìn)行排序、倒置、查找和求和功能,然后產(chǎn)生類型實(shí)參分別為int型和double類型的兩個(gè)模板類,分別對整型數(shù)組和雙精度數(shù)組完成所要求的操作【運(yùn)行結(jié)果截圖】:編寫程序,求輸入數(shù)的平方根。
設(shè)置異常處理,對輸入負(fù)數(shù)的情況給出提示。
8、(選修)【運(yùn)行結(jié)果截圖】:結(jié)合數(shù)據(jù)結(jié)構(gòu)“線性表”的知識(shí),采用C+面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)現(xiàn)“線性表”。
(選修)三、思考題無四、代碼四、分析與討論(記錄實(shí)驗(yàn)過程中出現(xiàn)的主要問題和心得體會(huì))#includetemplateTmax(Tx,Ty)returnxy?x:y;intmax(inta,intb)returnab?a:b;doublemax(doublea,doubleb)returnab?a:b;intmain()std:coutmax(3,ismax(3,std:endl;return0;#includeusingnamespacestd;templateTmax1(Ta,Tb)returnab?a:b;templateTmin1(Tc,Td)returncd?c:d;intmain()inta10;inti,d;cout輸入10個(gè)元素endl;for(i=0;iai;d=a0;for(i=0;i9;i+)d=max1(d,ai+;cout最大元素是:dendl;d=a0;for(i=0;i9;i+)d=min1(d,ai+;cout最小元素是:dendl;return0;#includeusingnamespacestd;templateclassarrayprivate:intlength,z;Ta100;public:array(T*b,intn)inti;length=n;for(i=0;ilength;i+)ai=bi;voidsort();voidinversion();intsearch(T);voidsum();templatevoidarray:sort()inti,j,k;Tc100;for(i=0;ilength;i+)ci=ai;for(i=0;ilength-1;i+)for(j=0;jcj+k=cj;cj=cj+1;cj+1=k;cout排序后的元素:;for(i=0;ilength;i+)coutci;coutendl;templatevoidarray:inversion()inti,j;Td100;for(i=0,j=length-1;ilength;i+,j-)dj=ai;cout倒序后的數(shù)組:;for(i=0;ilength;i+)coutdi;coutendl;templatevoidarray:sum()inti;Tsum=0;for(i=0;ilength;i+)sum=sum+ai;cout數(shù)組的和為:sumendl;templateintarray:search(Tt)intf=0;inti;for(i=0;ilength;i+)if(ai=t)f=1;cout找尋目標(biāo)是第i+1個(gè)元素endl;break;returnf;intmain()inti,x,y,find1,g;doublefind2;coutx;couty;int*a;double*b;a=newintx;b=newdoubley;cout輸入int類型的元素:;for(i=0;iai;cout輸入double類型的元素:;for(i=0;ibi;coutn;coutint類型:endl;arraya1(a,x);arraya2(b,y);asort();ainversion();asum();coutfind1;g=asearch(find;if(g=cout未找到該元素;coutdouble類型:endl;asort();ainversion();asum();coutfind2;g=asearch(find;if(g=cout未找到該元素;deletea;deleteb;return0;#include#includeusingnamespacestd;doublepfg(doublea)doublex;x=sqrt(a);returnx;intmain()doublea;couta;trywhile(a=cout平方根為:pfg(a)endl;couta;if(athrowa;catch(double)cout所輸入的a不符合輸入要求!endl;cout結(jié)束endl;#include#include#defineList_Init_Size50#defineerror-1#defineright1usingnamespacestd;structSqlistlong*elem;intLength;intlistsize;voidexit(strings)coutsendl;voidInitlist(SqlistL)/初始化L.elem=newlongList_Init_Size;if(!L.elem)exit(Overflow!);L.Length=0;L.listsize=List_Init_Size;voidCreate(SqlistL)/創(chuàng)建順序表inti,num;coutnum;for(i=0;iL.elemi;L.Length+;cout創(chuàng)建順序表成功!endl;voidClearList(SqlistL)/清空順序表L.Length=0;cout已清空線性表endl;voidEmptyList(SqlistL)/判斷表是否為空if(L.Length=cout線性表為空endl;elsecout線性表非空endl;intLengthList(SqlistL)/求表長returnL.Length;voidTraverList(SqlistL)/遍歷for(inti=0;iL.Length;i+)if(i=L.Length-coutL.elemiendl;elsecoutL.elemi,;voidGetElem(SqlistL,inti)/取元素if(iL.Length)cout位置不合法,請重新輸入!i;GetElem(L,i);elsecoutL.elemi-1endl;intLocateElem(SqlistL,longe)/定位intj=1;for(inti=0;iL.Length;i+)if(e=L.elemi)returni+1;break;/返回從開始遍歷到的第一個(gè)該元素位置elsej+;if(j=L.Length)returnerror;/不存在則返回-1intPriorElem(SqlistL,longpur_e,longpre_e)/求前驅(qū)long*p,*q;intj=1;for(inti=1;iL.Length;i+)if(pur_e=L.elemi)p=L.elemi;break;elsej+;if(j=L.Length)cout你輸入的元素不合法,請重新輸入!pur_e;PriorElem(L,pur_e,pre_e);elseif(L.Length=cout線性表中無數(shù)據(jù)!endl;elseq=p-1;pre_e=*q;returnpre_e;intNextElem(SqlistL,longpur_e,longnext_e)/求后繼long*p,*q;intj=1;for(inti=0;iL.Length-1;i+)if(pur_e=L.elemi)p=L.elemi;break;elsej+;if(j=L.Length)cout你輸入的元素不合法,請重新輸入!pur_e;NextElem(L,pur_e,next_e);elseif(L.Length=cout線性表中無數(shù)據(jù)!endl;elseq=p+1;next_e=*q;returnnext_e;intInsertElem(SqlistL,inti,longe)/插入if(iL.Length+returnerror;/位置不合法返回-1if(L.Length=L.listsize)returnerror;/超出表長返回-1for(intj=L.Length-1;j=i-1;j-)L.elemj+1=L.elemj;L.elemi-1=e;+L.Length;returnright;/成功插入返回1intDeleteElem(SqlistL,inti)/刪除if(!L.elem)returnerror;/未分配好返回-1elseif(iL.Length)returnerror;/位置不合法返回-1elsefor(intj=i;j=L.Length-1;j+)L.elemj-1=L.elemj;-L.Length;returnright;/成功刪除返回1intmain()SqlistL;Initlist(L);/初始化線性表inti,n;boolb=true;longe1,e2;while(b)cout創(chuàng)建線性表endl;cout清空線性表endl;cout判斷線性表是否為空endl;cout求線性表長度endl;cout獲取線性表指定位置元素endl;cout求前驅(qū)endl;cout求后繼endl;cout在線性表指定位置插入元素endl;cout刪除線性表指定位置元素endl;cout顯示線性表endl;cout定位線性表中某元素位置endl;cout退出,輸入非上述數(shù)字!endl;coutn;switch(n)caseCreate(L);
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年古色古香游合同
- 2025年作品著作權(quán)使用許可協(xié)議
- 2025年度木工工藝研發(fā)與推廣分包合同4篇
- 二零二五版房屋裝修設(shè)計(jì)、施工及監(jiān)理合同2篇
- 2025年中國連鎖經(jīng)營行業(yè)市場深度調(diào)查評估及投資方向研究報(bào)告
- 二零二五版離婚協(xié)議書針對存款賬戶的專項(xiàng)管理協(xié)議3篇
- 2025年度私人借款與信用評估機(jī)構(gòu)合作協(xié)議
- 2025年度二零二五年度車牌借用與保險(xiǎn)理賠合作協(xié)議
- 2025年度航空行業(yè)競業(yè)協(xié)議敬業(yè)精神承諾合同
- 二零二五年度網(wǎng)約車平臺(tái)車主與駕駛員合作協(xié)議書
- 教師招聘(教育理論基礎(chǔ))考試題庫(含答案)
- 2024年秋季學(xué)期學(xué)校辦公室工作總結(jié)
- 鋪大棚膜合同模板
- 長亭送別完整版本
- 智能養(yǎng)老院視頻監(jiān)控技術(shù)方案
- 你比我猜題庫課件
- 無人駕駛航空器安全操作理論復(fù)習(xí)測試附答案
- 建筑工地春節(jié)留守人員安全技術(shù)交底
- 默納克-NICE1000技術(shù)交流-V1.0
- 蝴蝶蘭的簡介
- 老年人心理健康量表(含評分)
評論
0/150
提交評論