版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
《面向?qū)ο蟪绦蛟O計課程設計》指導書(2周)合用專業(yè):蘇州理工學院計算機科學與技術專業(yè) 江蘇科技大學蘇州理工學院2023年8月?課程設計目的《面向?qū)ο蟪绦蛟O計課程設計》的目的是通過綜合性程序設計訓練,使學生進一步鞏固對計算機程序設計語言(C++)基本語法、基本算法的理解,加深對面向?qū)ο蟪绦蛟O計的理解,并將課本上的理論知識的實際應用有機的結合起來,鍛煉學生的分析問題、解決問題的能力,為學習后續(xù)課程和實際編程打下良好的基礎。課程設計規(guī)定運用所學的面向?qū)ο蟪绦蛟O計的編程知識和技巧,獨立完畢具有一定難度的程序設計題,養(yǎng)成良好的編程習慣,掌握基本程序設計的理念、方法,純熟運用程序調(diào)試的技巧,提高基本的程序開發(fā)能力。學生必須獨立完畢本指導書中附錄一中的所有編程題。遵守機房管理制度和實驗操作規(guī)則上機者在上機規(guī)定的時間內(nèi),不得從事與本課程設計無關的內(nèi)容獨立完畢課題,嚴禁抄襲別人成果準時提交報告時間安排2023年9月2日~2023年9月13日。實驗設備和開發(fā)工具計算機計算機應具有較好的性能和穩(wěn)定性。操作系統(tǒng)操作系統(tǒng)采用Windows2023、WindowsXP、Windows2023server等。開發(fā)工具VC考核規(guī)定上機考核:在規(guī)定的時間內(nèi)完畢1~2題進行編程,占總成績的60%。課程設計報告:選附錄中的一半題寫成報告,格式規(guī)定見附錄二,占總成績的20%。平時表現(xiàn):占總成績的20。附錄一:課程設計內(nèi)容【排序、數(shù)組操作】[題目]對一個5位數(shù)的任意整數(shù),求出其降序數(shù)。例如:整數(shù)是82319,則其降序數(shù)是98321。算法提醒:將整數(shù)的各位數(shù)分解到一維整型數(shù)組a中,再將a數(shù)組中的元素按降序排序,最后輸出a數(shù)組元素值。試建立一個類NUM,用于完畢該功能。具體規(guī)定如下:(1)私有數(shù)據(jù)成員intn;存放5位數(shù)的整數(shù)。inta[5];存放其元素的降序排列值。(2)公有成員函數(shù)NUM(intx=0):構造函數(shù),用參數(shù)x初始化數(shù)據(jù)成員n。voiddecrease():將n的各位數(shù)值分解到a數(shù)組中,并將a數(shù)組排成降序。voidshow():屏幕顯示原數(shù)及其降序數(shù)。(3)在主程序中輸入一個5位數(shù)的任意整數(shù),然后定義一個NUM類對象num,用上述輸入的數(shù)初始化num,然后完畢對該類的測試。運營結果:輸入一個五位的正整數(shù):82319n=8231998321[題目]設有一個包含size個數(shù)的數(shù)列,規(guī)定可以把從指定位置m開始的n個數(shù)排成降序,并輸出新的完整的數(shù)列??蓪?shù)列存放在一維數(shù)組中。例如,原數(shù)列有10個數(shù),值為{1,8,3,0,5,9,7,6,9,8},若規(guī)定把從第4個數(shù)開始的5個數(shù)排成降序,則得到的新數(shù)列為{1,8,3,9,7,6,5,0,9,8}。試建立一個類LIST,完畢上述功能。具體規(guī)定如下:(1)私有數(shù)據(jù)成員intsize;數(shù)列元素個數(shù)。int*arr;數(shù)列數(shù)組的起始指針。(2)公有成員函數(shù)LIST(inta[],intlen):構造函數(shù),用len初始化size,根據(jù)size動態(tài)分派數(shù)組存儲空間,arr指向該存儲空間。voidsortpart(intm,intn):將數(shù)列從第m個元素開始的n個數(shù)排成降序。注意:數(shù)列中數(shù)的序號與其元素的下標不一致。voidoutput():輸出新的完整的數(shù)列。~LIST():析構函數(shù),釋放arr指向的存儲空間。(3)在主程序中定義數(shù)組inta[10]用于存放原始數(shù)列,其值為{1,8,3,0,5,9,7,6,9,8}。定義一個LIST類對象tt,用a數(shù)組及數(shù)組實際元素的個數(shù)初始化該對象,然后把從第4個數(shù)開始的5個數(shù)按逆序排列,完畢該類的測試?!绢}目】求整數(shù)x,使y=x2的各位數(shù)字為嚴格遞增序列。如:372=1369中,1、3、6、9是嚴格遞增序列;又如,1、3、6、6、9就不是一個嚴格遞增序列。試建立一個類RISE,完畢求出某范圍內(nèi),滿足條件的所有x及其平方數(shù)和x的個數(shù)。具體規(guī)定如下:(1)私有數(shù)據(jù)成員intlow,high:x的取值范圍的下限和上限。inta[100][2]:每行存放滿足條件的x及其平方數(shù)。intcount:滿足條件的x的個數(shù)。(2)公有成員函數(shù)RISE(intlw,inthi):構造函數(shù),用參數(shù)lw和hi分別初始化low和high。缺省的取值范圍為[10,1000]。將count初始化為0。intisrise(inty):判斷y的各位數(shù)字是否嚴格遞增,若是則返回1,否則返回0。voidprocess():求出滿足條件的所有x及其平方,并將結果存入數(shù)組a,同時記錄滿足條件的x的個數(shù)。voidshow():輸出數(shù)組a及count。(3)在主函數(shù)中完畢對該類的測試。定義一個RISE類的對象v,使用缺省方式初始化該對象,按上述規(guī)定解決并輸出結果。程序運營結果應為:1316916256172893713691161345611713689367134689count=7【題目】若數(shù)組a中的n個元素已按升序排列,現(xiàn)將一個新數(shù)x插入到數(shù)組a中,插入后數(shù)組a的元素仍然保持升序。使用的插入排序算法是:從數(shù)組a的最后一個元素開始,依次向前掃描數(shù)組元素,若a[i]大于x,則將a[i]放入a[i+1](后移一個位置),并繼續(xù)向前掃描,直到找到某個a[i]小于或等于x,將x賦值到a[i+1]元素中,此時完畢插入排序工作。編寫程序時要考慮初始時,數(shù)組是空數(shù)組(即數(shù)組中沒有元素),插入第一個元素時,要做特殊解決。試建立一個類InsSort,完畢插入排序工作。具體規(guī)定如下:(1)私有數(shù)據(jù)成員inta[100]:存放排好序的整數(shù)序列。intn:數(shù)組實際元素個數(shù)。(2)公有成員函數(shù)InsSort(intb[],intsize):構造函數(shù),用參數(shù)b初始化a數(shù)組,用參數(shù)size初始化n,size的缺省值是0。voidinsert(intx):將x插入到數(shù)組a中。voidshow():輸出數(shù)組元素個數(shù)及數(shù)組各元素值。(3)在主函數(shù)中完畢對該類的測試。定義數(shù)組intb[100],其初值是:{1,3,5}。定義一個InsSort類的對象arr,用數(shù)組b及其元素的個數(shù)初始化該對象。定義數(shù)組intc[100],其初值是:{0,1,2,3,5,8,10}。然后循環(huán)將數(shù)組c中的所有元素依次插入到對象arr的成員數(shù)組a中。最后輸出對象arr中的全體數(shù)據(jù)成員。程序?qū)Φ倪\營后,應輸出:number=100,1,1,2,3,3,5,5,8,10【題目】將兩個分別從小到大排列的有序數(shù)組a和b復制合并到第3個有序數(shù)組c中。m和n分別是數(shù)組a和b的元素個數(shù),結果c的元素個數(shù)為k。例如a和b數(shù)組元素分別為{1,2,2,3,8}和{3,4,7,8},則結果數(shù)組c的值是:{1,2,2,3,3,4,7,8,8}。算法是:將a、b兩個數(shù)組當作兩個隊列,比較隊首的兩個元素,將較小者放入c隊列尾部,假如隊首的兩個元素相等,則先選擇a隊列首部元素加入c隊列尾部。循環(huán)執(zhí)行以上過程,直到a或b隊列之一為空,然后將另一個非空隊列拷貝到c隊列尾部。注意:不允許使用其它算法(如排序算法)。試建立一個類Com,完畢合并工作。具體規(guī)定如下:(1)私有數(shù)據(jù)成員intm,n,k:分別是a,b,c三個數(shù)組的元素個數(shù)。inta[100],b[100],c[100]:存放a,b,c三個數(shù)組的值。(2)公有成員函數(shù)Com(intaa[],intm1,intbb[],intn1):構造函數(shù),用參數(shù)初始化a,b數(shù)組及其元素個數(shù)。將k初始化為0。voidcombine():完畢合并工作。voidshow():將a,b,c三個數(shù)組輸出,每行輸出一個數(shù)組。(3)在主函數(shù)中完畢對該類的測試。定義兩個數(shù)組intx[100],y[100],其初值如上。定義一個Com類的對象c,用x、y數(shù)組及其元素的個數(shù)初始化該對象,然后調(diào)用成員函數(shù)進行合并及輸出工作。程序?qū)Φ牡倪\營結果如下:a:1,2,2,3,8b:3,4,7,8c:1,2,2,3,3,4,7,8,8[題目]建立一個array類。規(guī)定如下:?(1)私有數(shù)據(jù)成員·intn:存儲數(shù)組元素個數(shù)?!ぃ閚ta[100]:存放數(shù)組元素。(2)公有成員函數(shù)·構造函數(shù)array(intm,intb[]):初始化數(shù)據(jù)成員n,a?!oiddelsame():完畢將數(shù)組a中相同元素刪除工作?!oidprint():將數(shù)組以每行5個元素的形式輸出到屏幕。?(3)編寫一個程序測試該類。在主函數(shù)中定義一個數(shù)組intb[16],其初值是{1,2,1,5,3,4,6,3,4,2,7,6,9,8,6,10}。定義一個array類的對象,用b及數(shù)組元素個數(shù)初始化該對象,則經(jīng)刪除后a數(shù)組的內(nèi)容為{1,2,5,3,4,6,7,9,8,10}?!绢}目】設Δ是集合A上的二元運算,假如對于集合A中的任意元素a和b,都有aΔb=c,且c∈A,則稱二元運算Δ對于集合A是封閉的?,F(xiàn)有一數(shù)組a,假定其數(shù)組元素構成集合A。試建立一個類DATA,判斷求余運算“%”對集合A是否封閉。即判斷數(shù)組中的任意兩個元素a[i]和a[j],當a[j]不等于0時,a[i]除以a[j]所得余數(shù)仍然屬于集合A。具體規(guī)定如下:(1)私有數(shù)據(jù)成員int*a;整數(shù)指針,指向動態(tài)分派的數(shù)組空間intn;數(shù)組中元素個數(shù)(2)公有成員函數(shù)DATA(intt[],intn1);構造函數(shù),用n1初始化n,并根據(jù)n動態(tài)生成數(shù)組a,用t數(shù)組對a數(shù)組初始化。intbelong(inta[],intn,intx);判斷x的值是否在數(shù)組a中,假如在返回1,否則返回0。voidfun();判斷求余運算%對本對象是否封閉,假如封閉,輸出“封閉”。假如不封閉,則輸出“不封閉”,同時輸出第一個不滿足條件的a[i]和a[j]。voidprint();輸出成員數(shù)據(jù)的值。~DATA();析構函數(shù),完畢必要的功能。(3)在主函數(shù)中對該類進行測試。先定義兩個整型數(shù)組d1和d2,分別具有9個元素和8個元素,兩個數(shù)組的值分別是{1,3,22,4,15,2,7,5,0}和{1,3,8,4,6,7,5,0}。然后用這兩個數(shù)組初始化兩個DATA類的對象test1和test2,測試并輸出結果。對的的運營結果如下:集合:13224152750封閉集合:13846750不封閉:83【題目】編寫程序?qū)τ脩魯?shù)據(jù)進行簡樸的管理,規(guī)定按姓名的字典順序?qū)τ脩粜畔⑦M行排序。試定義表達用戶信息的類person和用戶信息解決的類compute實現(xiàn)上述功能。具體規(guī)定如下:定義類person,其成員如下:(1)私有成員charname[10],num[10]:分別表達用戶的姓名和電話號碼。定義類compute,將類compute聲明為類person的友元類,其成員如下:(1)私有成員personpn[3]:表達3個用戶。(2)公有成員函數(shù)voidsetdata():通過鍵盤輸入3個用戶的數(shù)據(jù)。voidsort():將數(shù)組pn表達的用戶信息按姓名的字典順序進行排序。voidprint():按照指定格式輸出用戶信息。在主函數(shù)中定義一個compute對象,再通過鍵盤輸入每個用戶的基本信息,調(diào)用相關成員函數(shù)完畢對類compute和person的測試。輸入/輸出示例(下劃線部分為鍵盤輸入):輸入姓名和電話號碼:Jeorge?2121212Mike 34545454Adam?34676767排序后用戶信息為:姓名電話號碼Adam 34676767Jeorge 32121212Mike34545454【題目】編程將一個二維數(shù)組元素變換為逆向存放。即按元素在內(nèi)存中的物理排列位置,最前面的元素變成最后面的元素,前面第二個元素變成最后倒數(shù)第二個元素,依此類推。如:原始二維數(shù)組為:,逆向存放后變?yōu)?。算法提醒:對二維數(shù)組進行變換解決時,可以將二維數(shù)組當作一維數(shù)組來解決。試建立一個類REVARR,完畢上述工作。具體規(guī)定如下:(1)私有數(shù)據(jù)成員inta[M][N]:初始化時,存放原始二維數(shù)組。最終,存放逆向存放后的二維數(shù)組。(2)公有成員函數(shù)REVARR(intx[M][N]):構造函數(shù),用形參x初始化數(shù)據(jù)成員a。voidreverse():按題目規(guī)定解決二維數(shù)組。voidshow():按二維方式輸出a數(shù)組值。(3)在主函數(shù)中完畢對該類的測試。在程序的開頭,定義符號常數(shù)M和N的值分別為3和4,表達數(shù)組的行數(shù)和列數(shù)。在主函數(shù)中定義數(shù)組intdata[M][N],其初值如上。定義一個REVARR類的對象arr,并用數(shù)組dat(yī)a初始化該對象的成員a,輸出原數(shù)組值;然后調(diào)用成員函數(shù)逆序存放二維數(shù)組,最后輸出逆序后的二維數(shù)組?!绢}目】試定義一個類Array,實現(xiàn)由一個二維數(shù)組派生出另一個新二維數(shù)組的操作。新數(shù)組的行數(shù)和列數(shù)分別為原數(shù)組的列數(shù)和行數(shù),且其元素值為原數(shù)組中與該元素同序的元素所在行和列的所有元素的平均值。所謂同序元素,是指兩個數(shù)組中存儲順序相同的兩個元素。例如,假設定義兩個數(shù)組a[4][5],b[5][4];數(shù)組元素b[1][2]為數(shù)組b的第6個元素,則b[1][2]在數(shù)組a中的同序元素為a的第6個元素,即a[1][0]。因此,b[1][2]的值為a的第一行第0列所有元素的平均值,即(a[0][0]+a[1][0]+a[2][0]+a[3][0]+a[1][1]+a[1][2]+a[1][3]+a[1][4])/8(其中a[1][0]不反復使用,見輸入/輸出示例)。具體規(guī)定如下:(1)私有成員floata[4][5],b[5][4];原數(shù)組a和派生數(shù)組b。(2)公有成員Array(intt[4][5]):構造函數(shù),用數(shù)組t初始化數(shù)組a,并將數(shù)組b的各元素值置為0。voidfun():按題目中的規(guī)定計算數(shù)組b的各個元素值。voidprint():按矩陣形式輸出數(shù)組a和數(shù)組b。(3)在主函數(shù)中定義一個4行5列的二維數(shù)組,再運用它初始化一個Array對象,調(diào)用相關成員函數(shù)完畢對類Array的測試。輸入/輸出示例(不涉及橢圓部分):數(shù)組a:1234567891011121314151617181920數(shù)組b:66.3756.757.1257.58.58.8759.259.625101111.37511.7512.12512.513.513.87514.2514.62515【題目】試定義一個學生成績類Score,實現(xiàn)對學生成績操作。具體規(guī)定如下:(1)私有成員No、Name、Math、Phi、Data、ave;分別表達學號、姓名、數(shù)學、物理、數(shù)據(jù)結構、平均分,數(shù)據(jù)類型根據(jù)數(shù)據(jù)的性質(zhì)自定。(2)公有成員Average():計算學生平均分。Write():輸入學生信息。Display():顯示學生信息。(3)在主函數(shù)中用Score類定義學生成績對象數(shù)組s[3]。用Write()輸入學生成績,用Average()計算每個學生的平均分,最后用Display()顯示每個學生的成績。實驗數(shù)據(jù):NoNameMathPhiDataAve1001??Zhou80 ?70601002 Chen 90?80851003??Wang?707589【字符串操作】[題目]定義字符串(string)類,完畢對字符串的操作。具體規(guī)定如下:(1)私有數(shù)據(jù)成員charstr[80];存放字符串intc;字符串中字符的個數(shù)。(2)公有成員函數(shù)構造函數(shù)WORD(char*s):初始化成員字符串數(shù)據(jù)str。voidcatstr(stringst):實現(xiàn)將str與st的str內(nèi)容連接。voidcpystr(stringst):實現(xiàn)將st的str內(nèi)容復制到str中。voidchgstr(stringst):實現(xiàn)將str的內(nèi)容與st的str內(nèi)容互換。voidprint():屏幕輸出字符串。(3)在主程序中實現(xiàn)以下功能:1、設計菜單實現(xiàn)功能選擇;2、字符串的輸入與賦值;3、字符串的運算,涉及:1)連接2)復制3)互換4、字符串的輸出[題目]建立一個類WORD,記錄一個英文字符串中的英文單詞個數(shù)。字符串中的各英文單詞以一個空格符分隔。如字符串“Iamastudent"中的英文單詞個數(shù)為4。具體規(guī)定如下:(1)私有數(shù)據(jù)成員charstr[80]intc;存放字符串str中的英文單詞的個數(shù)。(2)公有成員函數(shù)構造函數(shù)WORD(char*s):初始化成員字符串數(shù)據(jù)str。voidprocess():記錄字符串中的英文單詞的個數(shù)。voidprint():屏幕輸出字符串及其英文單詞數(shù)。(3)在主程序中對該類進行測試。使用測試字符串"Ithinkitisgoingtobeanicedaytomorrow"運營結果:IthinkitisgoingtobeanicedaytomorrowNumber:11【題目】將字符串中指定的英語單詞(字母子串)進行單數(shù)變復數(shù)的解決,單詞之間用非字母分隔。為了簡化編程,將單詞的單數(shù)變復數(shù)的規(guī)則是:直接在單詞后加s。例如單詞student的復數(shù)為students。例如,有下列字符串:Wearestudent,youarestudent,too.指定單詞student,將字符串中所有的student修改為students。解決后的字符串為:Wearestudents,youarestudents,too.試建立一個類Modistr,完畢以上工作。具體規(guī)定如下:(1)私有數(shù)據(jù)成員char*str;存放指定的字符串;(2)公有成員函數(shù)Modistr(char*s);構造函數(shù),動態(tài)申請字符串空間,用s所指向的串初始化str;voidprint();輸出字符串str;voidmodify(char*wordp);將wordp所指向的單詞轉(zhuǎn)換為復數(shù)。~Modistr();析構函數(shù)(3)在主函數(shù)中完畢對該類的測試。定義類Modistr的對象mys,用字符串“Wearestudent,youarestudent,too.”初始化mys,調(diào)用函數(shù)modify(char*)完畢將單詞"student"單數(shù)變復數(shù)的解決。輸出變換前和變換后的字符串。[題目]建立一個類STRING,將一個字符串交叉插入到另一字符串中(假定兩字符串等長)。如將字符串“abcde”交叉插入字符串“ABCDE”的結果為“aAbBcCdDeE”或“AaBbCcDdEe”具體規(guī)定如下:(1)私有數(shù)據(jù)成員charstr1[80];被插入的字符串。charstr2[40];字符串str2將被插入到字符串str1中。(2)公有成員函數(shù)構造函數(shù)STRING(char*s1,char*s2):初始化成員數(shù)據(jù)。voidprocess():將字符串str2插入到字符串str1中。voidprint():屏幕輸出被插入后的字符串str1。(3)在主程序中對該類進行測試。使用測試字符串“”和“abcdefghij”。運營結果:str1=a0b1c2d3e4f5g6h7i8j9str2=abcdefghij【題目】任意輸入一個字符串,串中連續(xù)出現(xiàn)的相同元素構成的子序列稱為平臺,試建立一個類Str,完畢求出串中最長平臺的長度。例如:若字符串為"jkkkaabbbbaaa",則最長平臺為"bbbb",其長度為4。具體規(guī)定如下:(1)私有數(shù)據(jù)成員char*str:指向動態(tài)申請的字符串空間。intmaxlen:str所指向的字符串中最長平臺的長度。(2)公有成員函數(shù)Str(char*p):構造函數(shù),動態(tài)申請成員str指向的內(nèi)存空間,用p指向的字符串初始化成員str指向的字符串;置maxlen初始值為0。p缺省為空指針(缺省值為0)。~Str():釋放str所指向的動態(tài)內(nèi)存空間。voidprocess():求str所指向的字符串中最長平臺的長度。voidshow():輸出字符串及最長平臺的長度。(3)在主函數(shù)中完畢對該類的測試。輸入一個字符串到字符數(shù)組text中,定義一個Str類的對象s,用text初始化對象s,調(diào)用成員函數(shù)求str所指向字符串中最長平臺的長度,輸出字符串及其最長平臺的長度??捎妙}例數(shù)據(jù)作為測試數(shù)據(jù)。[題目]將一個字符串中的所有與指定字符串相同的子串用另一個字符串替換(查找與替換)。規(guī)定:(1)函數(shù)intfind(char*s1,char*s2)的功能是判斷字符串s1(子串)是否在字符串s2(主串)中出現(xiàn),若出現(xiàn),返回出現(xiàn)的起始位置,若未出現(xiàn),則返回-1。(2)函數(shù)voidreplace(char*s1,char*s2,intn1,intn2)的功能是將字符串s1中第n1個字符起的n2個字符用字符串s2替換。(3)在主函數(shù)中實現(xiàn)查找與替換工作,并給出替換的次數(shù)。例如:主串為“Thisbookisaverygoodbook.”,假如待替換的子串為“book”且要替換成“cat”時,替換后的字符串為“Thiscat(yī)isaverygoodcat.”,替換次數(shù)為2;假如待替換的子串為“bok”時,因“bok”未在主串中出現(xiàn),所以,主串不變,替換次數(shù)為0?!绢}目】試定義一個類Parity,實現(xiàn)字符串的奇偶校驗。假設a是由'0'和'1'組成的字符串,為了檢測傳輸過程中也許出現(xiàn)的錯誤,可以在a中加入奇偶校驗碼,其方法是把字符串a(chǎn)從左到右按每7個字符一組提成若干組。例如,假設a是由18個字符組成的字符串:010100通過度組之后,將a提成以下3(18/7+1)組:?001100100010010100在每一組字符的后面加入一個奇偶校驗碼,即假如某一組中字符'1'的個數(shù)為奇數(shù),則加入'1',反之則加入'0',上述字符串a(chǎn)加入奇偶校驗碼后變?yōu)椋?001100110001001001001其中下劃線部分為新加入的奇偶校驗碼。具體規(guī)定如下:(1)私有成員char*a,*b:分別存儲原始的字符串以及增長校驗碼后的字符串。intn:存儲原始字符串的長度。(2)公有成員Parity(char*aa,intnn):構造函數(shù),用aa和nn分別初始化數(shù)據(jù)成員a和n,并為指針b動態(tài)分派n+n/7+2個字節(jié)數(shù)的內(nèi)存空間。voidfun():為字符串a(chǎn)增長校驗碼,并將結果存入字符串b中。voidprint():輸出字符串a(chǎn)和b?!玃arity():釋放動態(tài)分派的內(nèi)存空間。(3)在主函數(shù)中定義一個由'0'和'1'組成的字符串,并用其初始化Parity對象,調(diào)用相關成員函數(shù)完畢對類Parity的測試。輸入/輸出示例(輸出不含下劃線): 原字符串為:010100加入校驗碼后的字符串為:[題目]建立一個類STR,連接兩個字符串后,將結果字符串中的字符排成升序。例如,字符串s1的值為“pear”,字符串s2的值為“apple”,將s1與s2連接后得到字符串“pearapple”,存入字符數(shù)組s3,排序后得“aaeelpppr”。具體規(guī)定如下:(1)私有數(shù)據(jù)成員chars1[40],s2[40];存放兩個原始字符串。chars3[80];存放結果字符串。(2)公有成員函數(shù)STR(chara[],charb[]):構造函數(shù),用字符串參數(shù)a和b初始化數(shù)據(jù)成員字符串s1和s2。voidconsort():合并字符串后,再對其中的字符排序。voidshow():輸出兩個原始字符串和結果字符串。(3)在主程序中定義兩個字符數(shù)組chara[80],b[80],任意輸入兩個字符串,再定義一個STR類對象str,用字符串a(chǎn)和b初始化該對象,然后按上述規(guī)定測試該類??勺孕休斎肴我鈨蓚€字符串做測試數(shù)據(jù)?!菊麛?shù)與字符串互相轉(zhuǎn)換】[題目]定義一個字符串類STR,實現(xiàn)依次提取指定字符串中所有連續(xù)數(shù)字組成的數(shù)值。具體規(guī)定如下:(1)私有數(shù)據(jù)成員·char*st;采用動態(tài)存儲方式存放字符串?!ぃ閚ta[20],n;a的元素是st中相鄰數(shù)字組成的數(shù)值,n為a數(shù)組的元素個數(shù)。(2)公有成員函數(shù)·STR(char*s):構造函數(shù),初始化私有數(shù)據(jù)成員?!ぃ鰋idfun():功能函數(shù),完畢數(shù)值提取工作?!oidprint():功能函數(shù),輸出字符串st及提取出的數(shù)據(jù)?!STR();析構函數(shù),釋放動態(tài)內(nèi)存。(3)編寫一個程序測試該類。測試字符串為”103anbb18cfg7d3456hiy78j”。運營結果:str=103anbb18cfg7d3456hiy78ja[5]={103,18,7,3456,78}【進制轉(zhuǎn)換】[題目]建立一個類Pl(wèi)us,實現(xiàn)兩個不同進制的正整數(shù)相加,參與計算的兩個正整數(shù)均用字符串表達,若字符串第一個字符為“0”,但第二個字符不為“x”或“X”,則表達八進制數(shù);若前兩個字符為“0x”或“0X”,則表達十六進制數(shù),其他情況為十進制數(shù)。計算結果用十進制整數(shù)表達。具體規(guī)定如下:(1)私有數(shù)據(jù)成員·char*p1,*p2;p1,p2指向以字符串形式表達的參與加法運算的兩個正整數(shù)?!nts;存儲兩個正整數(shù)相加的結果。(2)公有成員函數(shù)·Pl(wèi)us(char*st1,char*st2):構造函數(shù),初始化數(shù)據(jù)成員p1和p2。·intdec(char*t,intn):將字符串t表達的n進制數(shù)轉(zhuǎn)換為十進制整數(shù),并將結果返回?!ntnum(char*t):擬定字符串t表達的進制后,調(diào)用函數(shù)dec()將該字符串轉(zhuǎn)換為十進制整數(shù),并將結果返回?!oidpocess():運用函數(shù)num()實現(xiàn)數(shù)據(jù)成員指向的兩個整數(shù)的加法運算,結果存入數(shù)據(jù)成員s中?!oidprint():按一定格式輸出計算結果?!Plus():析構函數(shù),釋放動態(tài)分派的存儲空間。(3)在主程序中輸入兩個字符串(八進制、十進制或十六進制形式),運用其初始化一個Plus對象。調(diào)用相關成員函數(shù)完畢對類Plus的測試。輸入/輸出示例(下劃線部分為鍵盤輸入):輸入兩個整數(shù):0340xA3c計算結果為:034+0xA3c=28+2620=2648【運算符重載】[題目]建一個類Set,重載運算符*,實現(xiàn)集合(用數(shù)組表達)的交(∩)運算。集合中的元素不能相同。兩個集合的交僅包含兩個集合中共同存在的。如:集合 s1={1,2,3,4,5,6),s2={3,5,7,9,11),則:s1∩s2={3,5}。具體規(guī)定如下:(1)私有數(shù)據(jù)成員·doubleelems[20];存放集合中的元素?!ntlens;集合中的元素個數(shù),且lens<=20;空集時值為0。(2)公有成員函數(shù)·Set(doublea[],intn);定義構造函數(shù),給私有數(shù)據(jù)成員初始化?!ぃ閚tInset(doublee);判斷e是否在集合elems中,若在,返回1;否則返回0?!ぃ觘toperat(yī)or*(Set);重載運算符*·Setoperator=(Set&);重載運算符=·voidprint();//輸出向量的各元素值(3)在主程序中定義一個類Set的對象a,b,c。調(diào)用相應函數(shù)進行測試。[題目]定義一個描述矩陣的類Array,重載“+”運算符完畢二個矩陣的加法。具體規(guī)定如下:(1)私有數(shù)據(jù)成員·doubleelems[3][3];存放3×3實數(shù)矩陣。(2)公有成員函數(shù)·Array(doublea[3][3]);定義構造函數(shù),給私有數(shù)據(jù)成員初始化?!ぃ羠rayoperat(yī)or+(Array);重載運算符+,實現(xiàn)矩陣的加法運算?!rrayoperat(yī)or=(Array&);重載運算符=,實現(xiàn)矩陣的賦值?!oidprint();輸出3×3實數(shù)矩陣。(3)在主函數(shù)中定義矩陣對象a1、a2、a3(測試數(shù)據(jù)自定),進行矩陣加法a3=a1+a2運算,并輸出矩陣a1、a2、a3的所有元素值。[題目]設計一個日期型數(shù)據(jù)類型Date,實現(xiàn)日期的相關運算。具體規(guī)定如下:(1)私有數(shù)據(jù)成員·charday[11];存放日期,格式為:yyyy-mm-dd。(2)公有成員函數(shù)·Date(char*);定義構造函數(shù),給私有數(shù)據(jù)成員初始化?!ntweek();計算出該日是星期幾?!ateoperator+(int);重載運算符+,實現(xiàn)一個日期與天數(shù)相加。·intoperator-(Date);重載運算符-,兩個日期對象相減,返回相隔的天數(shù)?!ateoperator=(Date&);重載運算符=,實現(xiàn)日期賦值?!ntoperator==(Date);重載運算符==,判斷兩日期對象是否相等,相等返回1,否則返回0。·voidprint();輸出日期。(3)在主函數(shù)中定義日期對象d1、d2、d3,完畢對Date類的測試。提醒:星期的計算公式為W=(((C/4)-2*C+y+(y/4)+(13*(month+1)/5)+day-1)+700)%7,其中:C為年份的前兩位數(shù);y即為年份的后兩位數(shù);month為輸入日期的月份,day為輸入日期的天數(shù)。W為0時,是星期天,為1時是星期一......為6是則為星期六。[題目]設計多項式類Polynomial,實現(xiàn)兩多項式相加。具體規(guī)定如下:(1)私有數(shù)據(jù)成員·doublea[10][2];存放多項式,包含一個系數(shù)和一個指數(shù)。例如:2X4的系數(shù)為2,指數(shù)為4?!ntn;存放多項式的項數(shù)(2)公有成員函數(shù)·Polynomial(doubleb[][2],intx);定義構造函數(shù),給私有數(shù)據(jù)成員初始化?!olynomialoperat(yī)or+(Polynomial);重載運算符+,實現(xiàn)兩個多項式相加?!olynomialoperator+=(Polynomial&);重載運算符+=,實現(xiàn)兩個多項式相加賦值?!olynomialoperator=(Polynomial&);重載運算符=,實現(xiàn)多項式賦值?!oidprint();輸出多項式。(3)在主函數(shù)中完畢對Polynomial類的測試?!緮?shù)的因子計算】【題目】試定義一個類Test,對給定的正整數(shù)n,找出所有分母為n,且大小介于1/4和1/3之間的最簡分數(shù)(即分子和分母除1外無公因子)。具體規(guī)定如下:(1)私有成員intn:存放指定滿足條件的最簡分數(shù)的分母。intdata[20]:存放所有滿足條件的分子。intnum:存放滿足條件的最簡分數(shù)的個數(shù)。(2)公有成員Test(intx):構造函數(shù),運用x初始化n,將num置為0。intjudge(intk):判斷分子k與分母n能否構成最簡分數(shù),若是最簡分數(shù)返回1,否則返回0。voidprocess():求滿足條件的分子,并依次存入數(shù)組dat(yī)a。將分數(shù)個數(shù)存入num。voidprint():輸出滿足條件的分數(shù)。(3)在主函數(shù)中定義Test類的對象t,調(diào)用相關成員函數(shù)完畢對類Test的測試。輸入/輸出示例(假設n的值為100):分母為100,且介于1/4和1/3之間的最簡分數(shù)為:27/100 29/100 31/100?33/100[題目]分數(shù)相加,兩個分數(shù)分別是1/5和7/20,它們相加后得11/20。方法是先求出兩個分數(shù)分母的最小公倍數(shù),通分后,再求兩個分子的和,最后約簡結果分數(shù)的分子和分母(假如兩個分數(shù)相加的結果是4/8,則必須將其約簡成最簡分數(shù)的形式1/2),即用分子分母的最大公約數(shù)分別除分子和分母。求m、n最大公約數(shù)的一種方法為:將m、n較小的一個數(shù)賦給變量k,然后分別用{k,k-1,k-2,…,1}中的數(shù)(遞減)去除m和n,第一個能把m和n同時除盡的數(shù)就是m和n的最大公約數(shù)。假定m、n的最大公約數(shù)是v,則它們的最小公倍數(shù)是m*n/v。試建立一個分數(shù)類Fract,完畢兩個分數(shù)相加的功能。具體規(guī)定如下:(1)私有數(shù)據(jù)成員intnum,den;num為分子,den為分母。(2)公有成員函數(shù)Fract(inta=0,intb=1):構造函數(shù),用a和b初始化分子num、分母den。intgcd(intm,intn):求m、n的最大公約數(shù)。此函數(shù)供add()成員函數(shù)調(diào)用。Fractadd(Fractf):將參數(shù)分數(shù)f與對象自身相加,返回約簡后的分數(shù)對象。voidshow():按照num/den的形式在屏幕上顯示分數(shù)。(3)在主程序中定義兩個分數(shù)對象f1和f2,其初值分別是1/5和7/20,通過f1調(diào)用成員函數(shù)add完畢f1和f2的相加,將得到的分數(shù)賦給分數(shù)對象f3,顯示分數(shù)對象f3。建立一個類NUM,求指定范圍內(nèi)的所有素數(shù)(質(zhì)數(shù))。具體規(guī)定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安罐體機房保溫施工方案
- 二零二五年度個人與個人間家政服務合同范本3篇
- 太原瀝青路面施工方案
- 2025版消防電梯安全設施安裝與維護承包合同范本3篇
- 二零二五年度高品質(zhì)貼鋁箔巖棉板采購與節(jié)能檢測服務合同3篇
- 酒泉消防電氣檢測施工方案
- 二零二五年度個人與個人間藝術品購買借款合同
- 二零二五年度金融糾紛訴訟保全擔保合同大全3篇
- 2025版選礦廠承包合同及礦山安全生產(chǎn)技術服務協(xié)議3篇
- 預制塑料梯形槽施工方案
- 中醫(yī)門診病歷
- 廣西華銀鋁業(yè)財務分析報告
- 無違法犯罪記錄證明申請表(個人)
- 電捕焦油器火災爆炸事故分析
- 大學生勞動教育PPT完整全套教學課件
- 繼電保護原理應用及配置課件
- 《殺死一只知更鳥》讀書分享PPT
- 蓋洛普Q12解讀和實施完整版
- 2023年Web前端技術試題
- 品牌策劃與推廣-項目5-品牌推廣課件
- DB31T 685-2019 養(yǎng)老機構設施與服務要求
評論
0/150
提交評論