2023年面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)指導(dǎo)_第1頁(yè)
2023年面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)指導(dǎo)_第2頁(yè)
2023年面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)指導(dǎo)_第3頁(yè)
2023年面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)指導(dǎo)_第4頁(yè)
2023年面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)指導(dǎo)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》

指導(dǎo)書(shū)

(2周)

合用專(zhuān)業(yè):蘇州理工學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)

江蘇科技大學(xué)蘇州理工學(xué)院

2023年8月

一、4課程設(shè)計(jì)目的

《面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》的目的是通過(guò)綜合性程序設(shè)計(jì)訓(xùn)練,使學(xué)生進(jìn)一步鞏固

對(duì)計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言(C++)基本語(yǔ)法、基本算法的理解,加深對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的理解,

并將課本上的理論知識(shí)的實(shí)際應(yīng)用有機(jī)的結(jié)合起來(lái),鍛煉學(xué)生的分析問(wèn)題、解決問(wèn)題的能力,

為學(xué)習(xí)后續(xù)課程和實(shí)際編程打下良好的基礎(chǔ)。

二、課程設(shè)計(jì)規(guī)定

運(yùn)用所學(xué)的面向?qū)ο蟪绦蛟O(shè)計(jì)的編程知識(shí)和技巧,獨(dú)立完畢具有一定難度的程序設(shè)計(jì)題,

養(yǎng)成良好的編程習(xí)慣,掌握基本程序設(shè)計(jì)的理念、方法,純熟運(yùn)用程序調(diào)試的技巧,提高基

本的程序開(kāi)發(fā)能力。

1.學(xué)生必須獨(dú)立完畢本指導(dǎo)書(shū)中附錄一中的所有編程題。

2.遵守機(jī)房管理制度和實(shí)驗(yàn)操作規(guī)則

3.上機(jī)者在上機(jī)規(guī)定的時(shí)間內(nèi),不得從事與本課程設(shè)計(jì)無(wú)關(guān)的內(nèi)容

4.獨(dú)立完畢課題,嚴(yán)禁抄襲別人成果

5,準(zhǔn)時(shí)提交報(bào)告

三、時(shí)間安排

2023年9月2日~2023年9月13日。

四、實(shí)驗(yàn)設(shè)備和開(kāi)發(fā)工具

1.計(jì)算機(jī)

計(jì)算機(jī)應(yīng)具有較好的性能和穩(wěn)定性。

2.操作系統(tǒng)

操作系統(tǒng)采用Windows2023、WindowsXP^Windows2023server等。

3.開(kāi)發(fā)工具

VC

五、考核規(guī)定

1.上機(jī)考核:在規(guī)定的時(shí)間內(nèi)完畢1~2題進(jìn)行編程,占總成績(jī)的60%。

2.課程設(shè)計(jì)報(bào)告:選附錄中的一半題寫(xiě)成報(bào)告,格式規(guī)定見(jiàn)附錄二,占總成績(jī)的20%。

3.平時(shí)表現(xiàn):占總成績(jī)的20o

附錄一:課程設(shè)計(jì)內(nèi)容

【排序、數(shù)組操作】

1.[題目]對(duì)一個(gè)5位數(shù)的任意整數(shù),求出其降序數(shù)。例如:整數(shù)是82319,則其降序數(shù)

是98321。算法提醒:將整數(shù)的各位數(shù)分解到一維整型數(shù)組a中,再將a數(shù)組中的元素按降

序排序,最后輸出a數(shù)組元素值。試建立一個(gè)類(lèi)NUM,用于完畢該功能。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?intn;存放5位數(shù)的整數(shù)。

?inta[5];存放其元素的降序排列值。

(2)公有成員函數(shù)

?NUM(intx=0):構(gòu)造函數(shù),用參數(shù)x初始化數(shù)據(jù)成員n。

?voiddecrease():將n的各位數(shù)值分解到a數(shù)組中,并將a數(shù)組排成降序。

?voidshow():屏幕顯示原數(shù)及其降序數(shù)。

(3)在主程序中輸入一個(gè)5位數(shù)的任意整數(shù),然后定義一個(gè)NUM類(lèi)對(duì)象num,用上述

輸入的數(shù)初始化num,然后完畢對(duì)該類(lèi)的測(cè)試。

運(yùn)營(yíng)結(jié)果:

輸入一個(gè)五位的正整數(shù):82319

n=82319

98321

2.[題目]設(shè)有一個(gè)包含size個(gè)數(shù)的數(shù)列,規(guī)定可以把從指定位置m開(kāi)始的n個(gè)數(shù)排成降序,

并輸出新的完整的數(shù)列??蓪?shù)列存放在一維數(shù)組中。例如,原數(shù)列有10個(gè)數(shù),值為{1,8,

3,0,5,9,7,6,9,8},若規(guī)定把從第4個(gè)數(shù)開(kāi)始的5個(gè)數(shù)排成降序,則得到的新數(shù)列為{1,

8,3,9,7,6,5,0,9,8)。試建立一個(gè)類(lèi)LIST,完畢上述功能。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?intsize;數(shù)列元素個(gè)數(shù)。

?int*arr;數(shù)列數(shù)組的起始指針。

(2)公有成員函數(shù)

?LIST(intaf],intlen):構(gòu)造函數(shù),用1en初始化size,根據(jù)size動(dòng)態(tài)分派

數(shù)組存儲(chǔ)空間,arr指向該存儲(chǔ)空間。

?voidsortpart(intm,intn):將數(shù)列從第m個(gè)元素開(kāi)始的n個(gè)數(shù)排成降序。注

意:數(shù)列中數(shù)的序號(hào)與其元素的下標(biāo)不一致。

?voidoutput():輸出新的完整的數(shù)列。

?-LIST():析構(gòu)函數(shù),釋放arr指向的存儲(chǔ)空間。

(3)在主程序中定義數(shù)組intaE10]用于存放原始數(shù)列,其值為{1,8,3,0,5,9,7,6,9,

8}。定義一個(gè)LIST類(lèi)對(duì)象tt,用a數(shù)組及數(shù)組實(shí)際元素的個(gè)數(shù)初始化該對(duì)象,然后把從

第4個(gè)數(shù)開(kāi)始的5個(gè)數(shù)按逆序排列,完畢該類(lèi)的測(cè)試。

3.【題目】求整數(shù)x,使y=x2的各位數(shù)字為嚴(yán)格遞增序列。如:372=1369中,1、3、6、9

是嚴(yán)格遞增序列;又如,1、3、6、6、9就不是一個(gè)嚴(yán)格遞增序列。試建立一個(gè)類(lèi)RISE,

完畢求出某范圍內(nèi),滿足條件的所有x及其平方數(shù)和x的個(gè)數(shù)。

具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?intlow,high:x的取值范圍的下限和上限。

?intaL100][2]:每行存放滿足條件的x及其平方數(shù)。

?intcount:滿足條件的x的個(gè)數(shù)。

(2)公有成員函數(shù)

?RISE(intIw,inthi):構(gòu)造函數(shù),用參數(shù)1w和hi分別初始化low和high。

缺省的取值范圍為[10,1000J?將cOUnt初始化為0o

?intisrise(inty):判斷y的各位數(shù)字是否嚴(yán)格遞增,若是則返回1,否則返回

Oo

?voidprocess():求出滿足條件的所有x及其平方,并將結(jié)果存入數(shù)組a,

同時(shí)記錄滿足條件的x的個(gè)數(shù)。

?voidshow():輸出數(shù)組a及counto

(3)在主函數(shù)中完畢對(duì)該類(lèi)的測(cè)試。定義一個(gè)RISE類(lèi)的對(duì)象v,使用缺

省方式初始化該對(duì)象,按上述規(guī)定解決并輸出結(jié)果。

程序運(yùn)營(yíng)結(jié)果應(yīng)為:

13169

16256

17289

371369

11613456

11713689

367134689

count=7

4.【題目】若數(shù)組a中的n個(gè)元素已按升序排列,現(xiàn)將一個(gè)新數(shù)x插入到數(shù)組a中,插入

后數(shù)組a的元素仍然保持升序。使用的插入排序算法是:從數(shù)組a的最后一個(gè)元素開(kāi)始,依

次向前掃描數(shù)組元素,若a[i]大于x,則將a[i|放入a[i+l](后移一個(gè)位置),并繼續(xù)向

前掃描,直到找到某個(gè)a[i]小于或等于X,將x賦值到a[i+1]元素中,此時(shí)完畢插入排序工作。

編寫(xiě)程序時(shí)要考慮初始時(shí),數(shù)組是空數(shù)組(即數(shù)組中沒(méi)有元素),插入第一個(gè)元素時(shí),要做特殊

解決。試建立一個(gè)類(lèi)InsSort,完畢插入排序工作。

具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?inta[100]:存放排好序的整數(shù)序列。

intn:數(shù)組實(shí)際元素個(gè)數(shù)。

(2)公有成員函數(shù)

?InsSort(intb[],intsize):構(gòu)造函數(shù),用參數(shù)b初始化a數(shù)組,用參數(shù)size

初始化n,size的缺省值是0。

?voidinsert(intx):將x插入到數(shù)組a中。

?voidshow():輸出數(shù)組元素個(gè)數(shù)及數(shù)組各元素值。

(3)在主函數(shù)中完畢對(duì)該類(lèi)的測(cè)試。定義數(shù)組intb[100],其初值

是:{1,3,5}o定義一個(gè)InsSort類(lèi)的對(duì)象arr,用數(shù)組b及其元素的個(gè)數(shù)初

始化該對(duì)象。定義數(shù)組intc[100],其初值是:{0,1,2,3,5,8,10}。

然后循環(huán)將數(shù)組c中的所有元素依次插入到對(duì)象arr的成員數(shù)組a中。最后輸

出對(duì)象arr中的全體數(shù)據(jù)成員。程序?qū)Φ倪\(yùn)營(yíng)后,應(yīng)輸出:

number=10

0,1,1,2,3,3,5,5,8,10

5.【題目】將兩個(gè)分別從小到大排列的有序數(shù)組a和b復(fù)制合并到第3個(gè)有序數(shù)組c中。

m和n分別是數(shù)組a和b的元素個(gè)數(shù),結(jié)果c的元素個(gè)數(shù)為k。例如a和b數(shù)組元素分別為{1,2,

2,3,8}和{3,4,7,8},則結(jié)果數(shù)組c的值是:{1,2,2,3,3,4,7,8,8}。算法是:

將a、b兩個(gè)數(shù)組當(dāng)作兩個(gè)隊(duì)列,比較隊(duì)首的兩個(gè)元素,將較小者放入c隊(duì)列尾部,假如隊(duì)首

的兩個(gè)元素相等,則先選擇a隊(duì)列首部元素加入c隊(duì)列尾部。循環(huán)執(zhí)行以上過(guò)程,直到a或

b隊(duì)列之一為空,然后將另一個(gè)非空隊(duì)列拷貝到c隊(duì)列尾部。注意:不允許使用其它算法(如

排序算法)。試建立一個(gè)類(lèi)Com,完畢合并工作。

具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?intm,n,k:分別是a,b,c三個(gè)數(shù)組的元素個(gè)數(shù)。

?inta[100],b[100],c[100]:存放a,b,c三個(gè)數(shù)組的值。

(2)公有成員函數(shù)

Com(intaa[],intml,intbb[],intnl):構(gòu)造函數(shù),用參數(shù)初始化a,b

數(shù)組及其元素個(gè)數(shù)。將k初始化為Oo

?voidcombine():完畢合并工作。

?voidshow():將a,b,c三個(gè)數(shù)組輸出,每行輸出一個(gè)數(shù)組。

(3)在主函數(shù)中完畢對(duì)該類(lèi)的測(cè)試。定義兩個(gè)數(shù)組intx[100],

y[100],其初值如上。定義一個(gè)Com類(lèi)的對(duì)象c,用x、y數(shù)組及其元素的個(gè)數(shù)初

始化該對(duì)象,然后調(diào)用成員函數(shù)進(jìn)行合并及輸出工作。程序?qū)Φ牡倪\(yùn)營(yíng)結(jié)果如下:

a:1,2,2,3,8

b:3,4,7,8

c:1,2,2,3,3,4,7,8,8

6.[題目]建立一個(gè)array類(lèi)。規(guī)定如下:△(1)私有數(shù)據(jù)成員

?intn:存儲(chǔ)數(shù)組元素個(gè)數(shù)。

?inta[100]:存放數(shù)組元素。

(2)公有成員函數(shù)

?構(gòu)造函數(shù)array(intm,intb口):初始化數(shù)據(jù)成員n,a。

,voiddelsame:完畢將數(shù)組a中相同元素刪除工作。

?voidprint():將數(shù)組以每行5個(gè)元素的形式輸出到屏幕?!?3)編寫(xiě)一個(gè)程序測(cè)

試該類(lèi)。在主函數(shù)中定義一個(gè)數(shù)組intb[16],其初值是{1,2,1,5,3,4,6,3,

4,2,7,6,9,8,6,10}。定義一個(gè)array類(lèi)的對(duì)象,用b及數(shù)組元素個(gè)數(shù)初始化該對(duì)象,

則經(jīng)刪除后a數(shù)組的內(nèi)容為{1,2,5,3,4,6,7,9,8,10}。

7.【題目】設(shè)A是集合A上的二元運(yùn)算,假如對(duì)于集合A中的任意元素a和b,都有aAb=

c,且cdA,則稱(chēng)二元運(yùn)算△對(duì)于集合A是封閉的?,F(xiàn)有一數(shù)組a,假定其數(shù)組元素構(gòu)成集合

Ao試建立一個(gè)類(lèi)DATA,判斷求余運(yùn)算“%”對(duì)集合A是否封閉。即判斷數(shù)組中的任意兩

個(gè)元素a[i]和aLj],當(dāng)a[j]不等于0時(shí),a[i]除以a[j]所得余數(shù)仍然屬于集合A。具體

規(guī)定如下:

(1)私有數(shù)據(jù)成員

?int*a;整數(shù)指針,指向動(dòng)態(tài)分派的數(shù)組空間

?intn;數(shù)組中元素個(gè)數(shù)

(2)公有成員函數(shù)

?DATA(intt[],intnl);構(gòu)造函數(shù),用n1初始化n,并根據(jù)n動(dòng)態(tài)生成數(shù)組

a,用t數(shù)組對(duì)a數(shù)組初始化。

?intbelong(intal],intn,intx);判斷x的值是否在數(shù)組a中,假

如在返回1,否則返回0。

?voidfun();判斷求余運(yùn)算%對(duì)本對(duì)象是否封閉,假如封閉,輸出“封閉”。

假如不封閉,則輸出“不封閉”,同時(shí)輸出第一個(gè)不滿足條件的a[i]和a[j]。

?voidprint();輸出成員數(shù)據(jù)的值。

?-DATA();析構(gòu)函數(shù),完畢必要的功能。

(3)在主函數(shù)中對(duì)該類(lèi)進(jìn)行測(cè)試。先定義兩個(gè)整型數(shù)組di和d2,分別具有9個(gè)元素和8個(gè)元

素,兩個(gè)數(shù)組的值分別是{1,3,22,4,15,2,7,5,0}和{1,3,8,4,6,7,5,0}。

然后用這兩個(gè)數(shù)組初始化兩個(gè)DATA類(lèi)的對(duì)象test1和test2,測(cè)試并輸出結(jié)果。對(duì)的

的運(yùn)營(yíng)結(jié)果如下:

集合:1322415275

0

封閉

集合:1384675

0

不封閉:83

8.【題目】編寫(xiě)程序?qū)τ脩?hù)數(shù)據(jù)進(jìn)行簡(jiǎn)樸的管理,規(guī)定按姓名的字典順序?qū)τ脩?hù)信息進(jìn)行

排序。試定義表達(dá)用戶(hù)信息的類(lèi)person和用戶(hù)信息解決的類(lèi)compute實(shí)現(xiàn)上述功能。

具體規(guī)定如下:

定義類(lèi)person,其成員如下:

(1)私有成員

?charname[10],num[10]:分別表達(dá)用戶(hù)的姓名和電話號(hào)碼。

定義類(lèi)compute,將類(lèi)compute聲明為類(lèi)person的友元類(lèi),其成員如下:

(1)私有成員

?personpn[3]:表達(dá)3個(gè)用戶(hù)。

(2)公有成員函數(shù)

?voidsetdata():通過(guò)鍵盤(pán)輸入3個(gè)用戶(hù)的數(shù)據(jù)。

?voidsort():將數(shù)組pn表達(dá)的用戶(hù)信息按姓名的字典順序進(jìn)行排序。

?voidprint():按照指定格式輸出用戶(hù)信息。

在主函數(shù)中定義一個(gè)compute對(duì)象,再通過(guò)鍵盤(pán)輸入每個(gè)用戶(hù)的基本信息,調(diào)用相

關(guān)成員函數(shù)完畢對(duì)類(lèi)compute和person的測(cè)試。

輸入/輸出示例(下劃線部分為鍵盤(pán)輸入):

輸入姓名和電話號(hào)碼:

Jeorge2?121212

Mike34545454

Adam34?676767

排序后用戶(hù)信息為:

姓名電話號(hào)碼

Adam34676767

Jeorge32121212

Mike34545454

9.【題目】編程將一個(gè)二維數(shù)組元素變換為逆向存放。即按元素在內(nèi)存中的物理排列位置,

最前面的元素變成最后面的元素,前面第二個(gè)元素變成最后倒數(shù)第二個(gè)元素,依此類(lèi)推。

如:原始二維數(shù)組為:5687逆向存放后變?yōu)椋?865

91012114231

算法提醒:對(duì)二維數(shù)組進(jìn)行變換解決時(shí),可以將二維數(shù)組當(dāng)作一維數(shù)組來(lái)解決。試建立一個(gè)類(lèi)

REVARR,完畢上述工作。

具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?inta[M][N]:初始化時(shí),存放原始二維數(shù)組。最終,存放逆向存放后的二維數(shù)組。

(2)公有成員函數(shù)

?REVARR(intx[M][N]):構(gòu)造函數(shù),用形參x初始化數(shù)據(jù)成員a。

?voidreverse():按題目規(guī)定解決二維數(shù)組。

?voidshow():按二維方式輸出a數(shù)組值。

(3)在主函數(shù)中完畢對(duì)該類(lèi)的測(cè)試。在程序的開(kāi)頭,定義符號(hào)常數(shù)M和N的值分別為

3和4,表達(dá)數(shù)組的行數(shù)和列數(shù)。在主函數(shù)中定義數(shù)組intdata[M][N]淇初值如上。定

義一個(gè)REVARR類(lèi)的對(duì)象arr,并用數(shù)組data初始化該對(duì)象的成員a,輸出原數(shù)組值;然

后調(diào)用成員函數(shù)逆序存放二維數(shù)組,最后輸出逆序后的二維數(shù)組。

10.【題目】試定義一個(gè)類(lèi)Array,實(shí)現(xiàn)由一個(gè)二維數(shù)組派生出另一個(gè)新二維數(shù)組的操作。

新數(shù)組的行數(shù)和列數(shù)分別為原數(shù)組的列數(shù)和行數(shù),且其元素值為原數(shù)組中與該元素同序的元

素所在行和列的所有元素的平均值。所謂同序元素,是指兩個(gè)數(shù)組中存儲(chǔ)順序相同的兩個(gè)元

素。例如,假設(shè)定義兩個(gè)數(shù)組a[4][5],b[51[4];數(shù)組元素b[l]⑵為數(shù)組b的第6個(gè)元素,則

b[l]⑵在數(shù)組a中的同序元素為a的第6個(gè)元素,即a[l][0]o因此,b[l]⑵的值為a的第

一行第0列所有元素的平均值,即(a⑼⑼+a[1H。]+a[2][0]+a[3][0]+a[1][1]

+a[1][2J+a[1][3J+a4])/8(其中aE1J[O]不反復(fù)使用,見(jiàn)輸入/輸出示例)。

具體規(guī)定如下:

(1)私有成員

?floata[4][5],b[5][4];原數(shù)組a和派生數(shù)組b。

(2)公有成員

?Array(intt[4][5]):構(gòu)造函數(shù),用數(shù)組t初始化數(shù)組a,并將數(shù)組b的各元素值

置為0。

voidfun():按題目中的規(guī)定計(jì)算數(shù)組b的各個(gè)元素值。

?voidprint():按矩陣形式輸出數(shù)組a和數(shù)組b。

(3)在主函數(shù)中定義一個(gè)4行5列的二維數(shù)組,再運(yùn)用它初始化一個(gè)Array對(duì)象,

調(diào)用相關(guān)成員函數(shù)完畢對(duì)類(lèi)Array的測(cè)試。

輸入/輸出示例(不涉及橢圓部分):

數(shù)組a:

Q

2345

Q

o7O10

Q12131415

Q17181920

數(shù)組b:

66.3756.757.125

7.58.8759.25

9.625101111.375

11.7512.2512.513.5

13.87514.2514.62515

11.【題目】試定義一個(gè)學(xué)生成績(jī)類(lèi)Score,實(shí)現(xiàn)對(duì)學(xué)生成績(jī)操作。

具體規(guī)定如下:

(1)私有成員

No>Name、Math>Phi^Data、ave;分別表達(dá)學(xué)號(hào)、姓名、數(shù)學(xué)、物理、數(shù)

據(jù)結(jié)構(gòu)、平均分,數(shù)據(jù)類(lèi)型根據(jù)數(shù)據(jù)的性質(zhì)自定。

(2)公有成員

?Average():計(jì)算學(xué)生平均分。

?write():輸入學(xué)生信息。

Display():顯示學(xué)生信息。

(3)在主函數(shù)中用Score類(lèi)定義學(xué)生成績(jī)對(duì)象數(shù)組s[3]。用Write()輸入學(xué)生成

績(jī),用Average()計(jì)算每個(gè)學(xué)生的平均分,最后用Display()顯示每個(gè)學(xué)生的成績(jī)。

實(shí)驗(yàn)數(shù)據(jù):

NoNameMathPhiDataAve

1001“Zhou80。7060

1002Chen90。8085

1003。。Wang。707589

【字符串操作】

12.[題目]定義字符串(string)類(lèi),完畢對(duì)字符串的操作。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?charstr[80];存放字符串

?intc;字符串中字符的個(gè)數(shù)。

(2)公有成員函數(shù)

?構(gòu)造函數(shù)WORD(char*s):初始化成員字符串?dāng)?shù)據(jù)str。

?voidcatstr(stringst):實(shí)現(xiàn)將str與st的str內(nèi)容連接。

?voidcpystr(stringst):實(shí)現(xiàn)將st的str內(nèi)容復(fù)制到str中。

?voidchgstr(stringst):實(shí)現(xiàn)將str的內(nèi)容與st的str內(nèi)容互換。

?voidprint():屏幕輸出字符串。

(3)在主程序中實(shí)現(xiàn)以下功能:

1、設(shè)計(jì)菜單實(shí)現(xiàn)功能選擇;

2,字符串的輸入與賦值;

3、字符串的運(yùn)算,涉及:

1)連接2)復(fù)制3)互換

4、字符串的輸出

13.[題目]建立一個(gè)類(lèi)WORD,記錄一個(gè)英文字符串中的英文單詞個(gè)數(shù)。字符串中的各英

文單詞以一個(gè)空格符分隔。如字符串“Iamastudent”中的英文單詞個(gè)數(shù)為4。具體規(guī)

定如下:

(1)私有數(shù)據(jù)成員

?charstr[80]

?intc;存放字符串str中的英文單詞的個(gè)數(shù)。

(2)公有成員函數(shù)

?構(gòu)造函數(shù)WORD(char*s):初始化成員字符串?dāng)?shù)據(jù)str。

?voidprocess():記錄字符串中的英文單詞的個(gè)數(shù)。

?voidprint():屏幕輸出字符串及其英文單詞數(shù)。

(3)在主程序中對(duì)該類(lèi)進(jìn)行測(cè)試。

使用測(cè)試字符串"Ithinkitisgoingtobeanicedaytomorrow"

運(yùn)營(yíng)結(jié)果:

Ithinkitisgoingtobeanicedaytotnorrow

Number:11

14.【題目】將字符串中指定的英語(yǔ)單詞(字母子串)進(jìn)行單數(shù)變復(fù)數(shù)的解決,單詞之間用

非字母分隔。為了簡(jiǎn)化編程,將單詞的單數(shù)變復(fù)數(shù)的規(guī)則是:直接在單詞后加s。例如單詞s

tudent的復(fù)數(shù)為students。例如,有下列字符串:

Wearestudent,youarestudent,too.

指定單詞student,將字符串中所有的student修改為students。解決后的字符串為:

Wearestudents,youarestudents,too.

試建立一個(gè)類(lèi)Modistr,完畢以上工作。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?char*str;存放指定的字符串;

(2)公有成員函數(shù)

?Modistr(char*s);構(gòu)造函數(shù),動(dòng)態(tài)申請(qǐng)字符串空間,用s所指向的串初始

化str;

?voidprint();輸出字符串str;

?voidmodify(char*wordp);將wordp所指向的單詞轉(zhuǎn)換為復(fù)數(shù)。

?-Modistr();析構(gòu)函數(shù)

(3)在主函數(shù)中完畢對(duì)該類(lèi)的測(cè)試。定義類(lèi)Modistr的對(duì)象mys,用字符串“Wearestu

dent,youarestudent,too.“初始化mys,調(diào)用函數(shù)modify(char*)完畢將單詞"student"

單數(shù)變復(fù)數(shù)的解決。輸出變換前和變換后的字符串。

15.【題目]建立一個(gè)類(lèi)STRING,將一個(gè)字符串交叉插入到另一字符串中(假定兩字符串

等長(zhǎng))。如將字符串“abcde”交叉插入字符串“ABCDE”的結(jié)果為"aAbBcCdDeE”

或“AaBbCcDdEe”具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?charstrl[8O];被插入的字符串。

?charst⑵40];字符串str2將被插入到字符串str1中。

(2)公有成員函數(shù)

?構(gòu)造函數(shù)STRING(char*s1,char*s2):初始化成員數(shù)據(jù)。

?voidprocess():將字符串str2插入到字符串str1中。

?voidprint():屏幕輸出被插入后的字符串str1。

(3)在主程序中對(duì)該類(lèi)進(jìn)行測(cè)試。使用測(cè)試字符串""和“abcdefghi

運(yùn)營(yíng)結(jié)果:

str1=a0blc2d3e4f5g6h7i8j9

str2=abcdefghij

16.【題目】任意輸入一個(gè)字符串,串中連續(xù)出現(xiàn)的相同元素構(gòu)成的子序列稱(chēng)為平臺(tái),試建立

一個(gè)類(lèi)Str,完畢求出串中最長(zhǎng)平臺(tái)的長(zhǎng)度。例如:若字符串為"jkkkaabbbbaaa",則最長(zhǎng)平

臺(tái)為”bbbb",其長(zhǎng)度為4。

具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?char*str:指向動(dòng)態(tài)申請(qǐng)的字符串空間。

?intmaxlen:str所指向的字符串中最長(zhǎng)平臺(tái)的長(zhǎng)度。

(2)公有成員函數(shù)

?Str(char*p):構(gòu)造函數(shù),動(dòng)態(tài)申請(qǐng)成員str指向的內(nèi)存空間,用p指向的字

符串初始化成員str指向的字符串;置maxlen初始值為0。p缺省為空指針(缺

省值為0)。

?~Str():釋放str所指向的動(dòng)態(tài)內(nèi)存空間。

?voidprocess():求str所指向的字符串中最長(zhǎng)平臺(tái)的長(zhǎng)度。

?voidshow():輸出字符串及最長(zhǎng)平臺(tái)的長(zhǎng)度。

(3)在主函數(shù)中完畢對(duì)該類(lèi)的測(cè)試。輸入一個(gè)字符串到字符數(shù)組text中,定義一個(gè)Str

類(lèi)的對(duì)象s,用text初始化對(duì)象s,調(diào)用成員函數(shù)求str所指向字符串中最長(zhǎng)平臺(tái)的長(zhǎng)度,輸出

字符串及其最長(zhǎng)平臺(tái)的長(zhǎng)度。可用題例數(shù)據(jù)作為測(cè)試數(shù)據(jù)。

17.[題目]將一個(gè)字符串中的所有與指定字符串相同的子串用另一個(gè)字符串替換(查找與替

換)。

規(guī)定:(1)函數(shù)intfind(char*s1,char*s2)的功能是判斷字符串s1(子串)是否

在字符串s2(主串)中出現(xiàn),若出現(xiàn),返回出現(xiàn)的起始位置,若未出現(xiàn),則返回一1。

(2)函數(shù)voidreplace(char*sl,char*s2,intnl,intn2)的功能是

將字符串s1中第nl個(gè)字符起的n2個(gè)字符用字符串s2替換。

(3)在主函數(shù)中實(shí)現(xiàn)查找與替換工作,并給出替換的次數(shù)。例如:主串為"Thisb

ookisaverygoodbook.w,假如待替換的子串為"book"且要替換成"cat"

時(shí),替換后的字符串為"Thiscatisaverygoodcat.",替換次數(shù)為2:假如

待替換的子串為“bok”時(shí),因“bok”未在主串中出現(xiàn),所以,主串不變,替換次數(shù)為0。

18.【題目】試定義一個(gè)類(lèi)Parity,實(shí)現(xiàn)字符串的奇偶校驗(yàn)。假設(shè)a是由。和T組成的字

符串,為了檢測(cè)傳輸過(guò)程中也許出現(xiàn)的錯(cuò)誤,可以在a中加入奇偶校驗(yàn)碼,其方法是把字符

串a(chǎn)從左到右按每7個(gè)字符一組提成若干組。例如,假設(shè)a是由18個(gè)字符組成的字符串:

010100

通過(guò)度組之后,將a提成以下3(18/7+1)組:

?001100100010010100

在每一組字符的后面加入一個(gè)奇偶校驗(yàn)碼,即假如某一組中字符1的個(gè)數(shù)為奇數(shù),則加

入‘1',反之則加入'0',上述字符串a(chǎn)加入奇偶校驗(yàn)碼后變?yōu)椋?/p>

001100H0001001_0_01001

其中下劃線部分為新加入的奇偶校驗(yàn)碼。

具體規(guī)定如下:

(1)私有成員

?char*a,*b:分別存儲(chǔ)原始的字符串以及增長(zhǎng)校驗(yàn)碼后的字符串。

?intn:存儲(chǔ)原始字符串的長(zhǎng)度。

(2)公有成員

?Parity(char*aa,intnn):構(gòu)造函數(shù),用aa和nn分別初始化數(shù)據(jù)成員a

和n,并為指針b動(dòng)態(tài)分派n+n/7+2個(gè)字節(jié)數(shù)的內(nèi)存空間。

?voidfun():為字符串a(chǎn)增長(zhǎng)校驗(yàn)碼,并將結(jié)果存入字符串b中。

?voidprint():輸出字符串a(chǎn)和b。

?~Parity():釋放動(dòng)態(tài)分派的內(nèi)存空間。

(3)在主函數(shù)中定義一個(gè)由,(T和T組成的字符串,并用其初始化Parity對(duì)象,調(diào)用相關(guān)

成員函數(shù)完畢對(duì)類(lèi)Parity的測(cè)試。

輸入/輸出示例(輸出不含下劃線):

原字符串為:以Q.0.Q

加入校驗(yàn)碼后的字符串為:

19.[題目]建立一個(gè)類(lèi)STR,連接兩個(gè)字符串后,將結(jié)果字符串中的字符排成升序。例如,

字符串si的值為“pear",字符串s2的值為“apple”,將sI與s2連接后得到字符串“pea

rappie",存入字符數(shù)組s3,排序后得“aaeelPpPr”。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?charsl[40],s2[40];存放兩個(gè)原始字符串。

?chars3[80];存放結(jié)果字符串。

(2)公有成員函數(shù)

?STR(chara[],charb[]):構(gòu)造函數(shù),用字符串參數(shù)a和b初始化

數(shù)據(jù)成員字符串s1和s2o

?voidconsort():合并字符串后,再對(duì)其中的字符排序。

?voidshow():輸出兩個(gè)原始字符串和結(jié)果字符串。

(3)在主程序中定義兩個(gè)字符數(shù)組chara[80],b[80],任意輸入兩個(gè)字符

串,再定義一個(gè)STR類(lèi)對(duì)象str,用字符串a(chǎn)和b初始化該對(duì)象,然后按上述規(guī)

定測(cè)試該類(lèi)??勺孕休斎肴我鈨蓚€(gè)字符串做測(cè)試數(shù)據(jù)。

【整數(shù)與字符串互相轉(zhuǎn)換】

20.[題目]定義一個(gè)字符串類(lèi)STR,實(shí)現(xiàn)依次提取指定字符串中所有連續(xù)數(shù)字組成的數(shù)值。

具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?char*st;采用動(dòng)態(tài)存儲(chǔ)方式存放字符串。

?inia[20],n;a的元素是st中相鄰數(shù)字組成的數(shù)值,n為a數(shù)組的元素個(gè)數(shù)。

(2)公有成員函數(shù)

?STR(char*s):構(gòu)造函數(shù),初始化私有數(shù)據(jù)成員。

?voidfun():功能函數(shù),完畢數(shù)值提取工作。

?voidprint():功能函數(shù),輸出字符串st及提取出的數(shù)據(jù)。

,-STR();析構(gòu)函數(shù),釋放動(dòng)態(tài)內(nèi)存。

(3)編寫(xiě)一個(gè)程序測(cè)試該類(lèi)。測(cè)試字符串為"103anbbl8cfg7d3456hiy78jw?

運(yùn)營(yíng)結(jié)果:str=103anbb18cfg7d3456hiy78j

a[5]={103,18,7,3456,78)

【進(jìn)制轉(zhuǎn)換】

21.[題目]建立一個(gè)類(lèi)Plus,實(shí)現(xiàn)兩個(gè)不同進(jìn)制的正整數(shù)相加,參與計(jì)算的兩個(gè)正整數(shù)均用字

符串表達(dá),若字符串第一個(gè)字符為“0”,但第二個(gè)字符不為“x”或"X”,則表達(dá)八進(jìn)制

數(shù);若前兩個(gè)字符為“0x”或“OX”,則表達(dá)十六進(jìn)制數(shù),其他情況為十進(jìn)制數(shù)。計(jì)算結(jié)果

用十進(jìn)制整數(shù)表達(dá)。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?char*pl,*p2;pl,p2指向以字符串形式表達(dá)的參與加法運(yùn)算的兩個(gè)正整數(shù)。

?ints;存儲(chǔ)兩個(gè)正整數(shù)相加的結(jié)果。

(2)公有成員函數(shù)

?Plus(char*st1,char*st2):構(gòu)造函數(shù),初始化數(shù)據(jù)成員pl和p2。

?inldec(char*t,intn):將字符串t表達(dá)的n進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制整數(shù),并

將結(jié)果返回。

?intnum(char*t):擬定字符串t表達(dá)的進(jìn)制后,調(diào)用函數(shù)dec()將該字符串轉(zhuǎn)換為十

進(jìn)制整數(shù),并將結(jié)果返回。

?voidpocess():運(yùn)用函數(shù)num()實(shí)現(xiàn)數(shù)據(jù)成員指向的兩個(gè)整數(shù)的加法運(yùn)算,

結(jié)果存入數(shù)據(jù)成員s中。

,voidprint():按一定格式輸出計(jì)算結(jié)果。

--P1us():析構(gòu)函數(shù),釋放動(dòng)態(tài)分派的存儲(chǔ)空間。

(3)在主程序中輸入兩個(gè)字符串(八進(jìn)制、十進(jìn)制或十六進(jìn)制形式),運(yùn)用其初始化一個(gè)

PluS對(duì)象。調(diào)用相關(guān)成員函數(shù)完畢對(duì)類(lèi)PlUS的測(cè)試。

輸入/輸出示例(下劃線部分為鍵盤(pán)輸入):

輸入兩個(gè)整數(shù):034OxA3c

計(jì)算結(jié)果為:034+OxA3c=28+2620=2648

【運(yùn)算符重載】

22.【題目]建一個(gè)類(lèi)Set,重載運(yùn)算符*,實(shí)現(xiàn)集合(用數(shù)組表達(dá))的交(C)運(yùn)算。集合中的

元素不能相同。兩個(gè)集合的交僅包含兩個(gè)集合中共同存在的。如:集合sl={l,2,3,4,5,

6),s2={3,5,7,9,11),則:sins2={3,5}。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

,doublee1ems[20];存放集合中的元素。

,intlens;集合中的元素個(gè)數(shù),且1ens<=20;空集時(shí)值為0。

(2)公有成員函數(shù)

,Set(doub1ea[],intn);定義構(gòu)造函數(shù),給私有數(shù)據(jù)成員初始化。

,intInset(doublee);判斷e是否在集合elems中,若在,返回1;否則返回0。

,Setoperator*(Set);重載運(yùn)算符*

,Setoperator=(Set&);重載運(yùn)算符=

,voidprint();//輸出向量的各元素值

(3)在主程序中定義一個(gè)類(lèi)Set的對(duì)象a,b,c。調(diào)用相應(yīng)函數(shù)進(jìn)行測(cè)試。

23.[題目]定義一個(gè)描述矩陣的類(lèi)Array,重載“+”運(yùn)算符完畢二個(gè)矩陣的加法。

具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?doub1ee1ems[3][3];存放3x3實(shí)數(shù)矩陣。

(2)公有成員函數(shù)

,Array(doublea[3][3]);定義構(gòu)造函數(shù),給私有數(shù)據(jù)成員初始化。

,Arrayoperator+(Array);重載運(yùn)算符+,實(shí)現(xiàn)矩陣的加法運(yùn)算。

,Arrayoperator=(Array&);重載運(yùn)算符=,實(shí)現(xiàn)矩陣的賦值。

?voidprint();輸出3x3實(shí)數(shù)矩陣。

(3)在主函數(shù)中定義矩陣對(duì)象a1、a2、a3(測(cè)試數(shù)據(jù)自定),進(jìn)行矩陣加法a3=al+a2運(yùn)

算,并輸出矩陣al、a2、a3的所有元素值。

24.[題目]設(shè)計(jì)一個(gè)日期型數(shù)據(jù)類(lèi)型Date,實(shí)現(xiàn)日期的相關(guān)運(yùn)算。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

,charday[11];存放日期,格式為:yyyy-mm—dd?

(2)公有成員函數(shù)

,Date(char*);定義構(gòu)造函數(shù),給私有數(shù)據(jù)成員初始化。

?intweek();計(jì)算出該日是星期幾。

,Dateoperator+(int);重載運(yùn)算符+,實(shí)現(xiàn)一個(gè)日期與天數(shù)相加。

,intoperator-(Date);重載運(yùn)算符-,兩個(gè)日期對(duì)象相減,返回相隔的天數(shù)。

,Dateoperator=(Date&);重載運(yùn)算符=,實(shí)現(xiàn)日期賦值。

?intoperator^(Date);重載運(yùn)算符==,判斷兩日期對(duì)象是否相等,相等返回

1,否則返回Oo

?voidprint();輸出日期。

(3)在主函數(shù)中定義日期對(duì)象dl、d2、d3,完畢對(duì)Date類(lèi)的測(cè)試。

提醒:星期的計(jì)算公式為W=(((C/4)-2*C+y+(y/4)+(13*(month+l)/5)+day-1)+70

0)%7,其中:C為年份的前兩位數(shù);y即為年份的后兩位數(shù);month為輸入日期的月份,day

為輸入日期的天數(shù)。W為0時(shí),是星期天,為1時(shí)是星期一......為6是則為星期六。

25.[題目]設(shè)計(jì)多項(xiàng)式類(lèi)Polynomial,實(shí)現(xiàn)兩多項(xiàng)式相加。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?doublea[10][2];存放多項(xiàng)式,包含一個(gè)系數(shù)和一個(gè)指數(shù)。例如:2X,的系數(shù)為2,

指數(shù)為4。

,inin;存放多項(xiàng)式的項(xiàng)數(shù)

(2)公有成員函數(shù)

?Polynomial(doubleb[][2],intx);定義構(gòu)造函數(shù),給私有數(shù)據(jù)成員初始化。

,PolynomiaIoperator+(Polynomial);重載運(yùn)算符+,實(shí)現(xiàn)兩個(gè)多項(xiàng)式

相加。

,Polynomialoperator+=(Polynomia1&);重載運(yùn)算符+=,實(shí)現(xiàn)兩

個(gè)多項(xiàng)式相加賦值。

,Po1ynomialoperator=(Polynomial&);重載運(yùn)算符=,實(shí)現(xiàn)多項(xiàng)式

賦值。

,voidprint();輸出多項(xiàng)式。

(3)在主函數(shù)中完畢對(duì)Polynomia1類(lèi)的測(cè)試。

【數(shù)的因子計(jì)算】

26.【題目】試定義一個(gè)類(lèi)Test,對(duì)給定的正整數(shù)n,找出所有分母為n,且大小介于1/4

和1/3之間的最簡(jiǎn)分?jǐn)?shù)(即分子和分母除1外無(wú)公因子)。

具體規(guī)定如下:

(1)私有成員

?intn:存放指定滿足條件的最簡(jiǎn)分?jǐn)?shù)的分母。

?intdata[20]:存放所有滿足條件的分子。

?intnum:存放滿足條件的最簡(jiǎn)分?jǐn)?shù)的個(gè)數(shù)。

(2)公有成員

?Test(intx):構(gòu)造函數(shù),運(yùn)用x初始化n,將num置為0。

?intjudge(intk):判斷分子k與分母n能否構(gòu)成最簡(jiǎn)分?jǐn)?shù),若是最簡(jiǎn)分?jǐn)?shù)返回

I,否則返回0o

?voidprocess():求滿足條件的分子,并依次存入數(shù)組data。將分?jǐn)?shù)個(gè)數(shù)存入n

urrio

?voidprint():輸出滿足條件的分?jǐn)?shù)。

(3)在主函數(shù)中定義Test類(lèi)的對(duì)象t,調(diào)用相關(guān)成員函數(shù)完畢對(duì)類(lèi)Test的測(cè)試。

輸入/輸出示例(假設(shè)n的值為100):

分母為100,且介于1/4和1/3之間的最簡(jiǎn)分?jǐn)?shù)為:

27/10029/10031/100?33/100

27.[題目]分?jǐn)?shù)相加,兩個(gè)分?jǐn)?shù)分別是1/5和7/20,它們相加后得11/20。方法是先求出

兩個(gè)分?jǐn)?shù)分母的最小公倍數(shù),通分后,再求兩個(gè)分子的和,最后約簡(jiǎn)結(jié)果分?jǐn)?shù)的分子和分母

(假如兩個(gè)分?jǐn)?shù)相加的結(jié)果是4/8,則必須將其約簡(jiǎn)成最簡(jiǎn)分?jǐn)?shù)的形式1/2),即用分子分母

的最大公約數(shù)分別除分子和分母。求m、n最大公約數(shù)的一種方法為:將m、n較小的一個(gè)

數(shù)賦給變量k,然后分別用{k,k-l,k-2,...,1)中的數(shù)(遞減)去除m和n,第一個(gè)能把

m和n同時(shí)除盡的數(shù)就是m和n的最大公約數(shù)。假定m、n的最大公約數(shù)是v,則它們的最

小公倍數(shù)是m*n/v。試建立一個(gè)分?jǐn)?shù)類(lèi)Fract,完畢兩個(gè)分?jǐn)?shù)相加的功能。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?intnum,den;num為分子,den為分母。

(2)公有成員函數(shù)

?Fract(inta=0,intb=l):構(gòu)造函數(shù),用a和b初始化分子num、分母d

en。

?intgcd(intm,intn):求m、n的最大公約數(shù)。此函數(shù)供add()成員函數(shù)

調(diào)用。

?Fractadd(Fractf):將參數(shù)分?jǐn)?shù)f與對(duì)象自身相加,返回約簡(jiǎn)后的分?jǐn)?shù)對(duì)

象。

?voidshow():按照num/den的形式在屏幕上顯示分?jǐn)?shù)。

(3)在主程序中定義兩個(gè)分?jǐn)?shù)對(duì)象fl和⑵其初值分別是1/5和7/20,通過(guò)fl調(diào)用成

員函數(shù)add完畢f(xié)I和f2的相加,將得到的分?jǐn)?shù)賦給分?jǐn)?shù)對(duì)象風(fēng)顯示分?jǐn)?shù)對(duì)象f3。

28.建立一個(gè)類(lèi)NUM,求指定范圍內(nèi)的所有素?cái)?shù)(質(zhì)數(shù))。具體規(guī)定如下:

(1)私有數(shù)據(jù)成員

?intdata[25];依次存放指定范圍內(nèi)的所有素?cái)?shù)。

?intspanl,span2;存放規(guī)定計(jì)算的素?cái)?shù)的范圍。

?intnum;存放spanl與span2之間的素?cái)?shù)個(gè)數(shù)。

(2)公有成員函數(shù)

?構(gòu)造函數(shù)NUM(intn1,intn2):初始化所規(guī)定

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論