vc_c_c語言_全國計(jì)算機(jī)二級(jí)試題及答案_課程設(shè)計(jì)實(shí)踐報(bào)告模板[1]_第1頁
vc_c_c語言_全國計(jì)算機(jī)二級(jí)試題及答案_課程設(shè)計(jì)實(shí)踐報(bào)告模板[1]_第2頁
vc_c_c語言_全國計(jì)算機(jī)二級(jí)試題及答案_課程設(shè)計(jì)實(shí)踐報(bào)告模板[1]_第3頁
vc_c_c語言_全國計(jì)算機(jī)二級(jí)試題及答案_課程設(shè)計(jì)實(shí)踐報(bào)告模板[1]_第4頁
vc_c_c語言_全國計(jì)算機(jī)二級(jí)試題及答案_課程設(shè)計(jì)實(shí)踐報(bào)告模板[1]_第5頁
已閱讀5頁,還剩126頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、江蘇科技大學(xué)課程實(shí)踐報(bào)告設(shè)計(jì)題目: 程序設(shè)計(jì)(VC+)實(shí)踐 設(shè)計(jì)時(shí)間 20011-2-21 至 2011-2-25 學(xué)院(系): 船舶與海洋工程 專業(yè)班級(jí): 船海2班 學(xué)生姓名: 彭鵬 學(xué)號(hào) 0941901220 指導(dǎo)老師: 鄒曉華 2011年02月 任務(wù)一一、實(shí)踐任務(wù)1試建立一個(gè)類PP,求出下列多項(xiàng)式的前n項(xiàng)的值。 二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l int n:前若干項(xiàng)的項(xiàng)數(shù)。l double x:存放x的值。l double *p:根據(jù)n的大小動(dòng)態(tài)申請(qǐng)存放Pn(x) 前n項(xiàng)的數(shù)組空間。(2)公有成員函數(shù)l PP(int num,double x1):構(gòu)造函數(shù),初始化數(shù)據(jù)成

2、員n和x,使p指向動(dòng)態(tài)申請(qǐng)的數(shù)組空間。l PP():析構(gòu)函數(shù),釋放p指向的動(dòng)態(tài)內(nèi)存空間。l double fun(int n1,double x):遞歸函數(shù),用于求多項(xiàng)式的第n1項(xiàng)。注意:將遞歸公式中的n用作函數(shù)參數(shù)。本函數(shù)供process函數(shù)調(diào)用。l void process( ):完成求前n項(xiàng)的工作,并將它們存放到p指向的動(dòng)態(tài)數(shù)組中。l void show( ):輸出n和x,并將前n項(xiàng)以每行4個(gè)數(shù)的形式輸出到屏幕上。2、主要函數(shù)設(shè)計(jì)在主函數(shù)中完成對(duì)該類的測(cè)試。先輸入num和x1,并定義一個(gè)PP類的對(duì)象items,用num和x1初始化items的成員n和x,調(diào)用items的成員函數(shù),求出并輸

3、出多項(xiàng)式前num項(xiàng)的值。三、源程序清單#includeclass PPprivate:int n;double x;double*p;public:PP(int num,double x1)n=num;x=x1;p=new doublen;PP()if(p) delete p;double fun(int n1,double x);void process();void show();double PP:fun(int n1,double x)if(n1=0) return 1;else if(n1=1) return x; else if(n11) return (2*n1-1)*x*fun

4、(n1-1,x)-(n1-1)*fun(n1-2,x)/n1;void PP:process()for(int i=0;in;i+)pi=fun(i,x);void PP:show()coutn=nendlx=xendl;for(int i=0;in;i+)coutpitt;if(i+1)%4=0) coutendl;void main()int num;double x1;coutnumx1;PP items(num,x1);cess();items.show();四、實(shí)踐小結(jié)應(yīng)熟練掌握遞歸函數(shù)的應(yīng)用,寫遞歸函數(shù)時(shí)應(yīng)先進(jìn)行遞歸結(jié)束條件的判定。五、運(yùn)行結(jié)果任務(wù)二一、實(shí)踐任務(wù)2

5、試建立一個(gè)類SP,求,另有輔助函數(shù)power(m,n)用于求。二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l int n,k:存放公式中n和k的值;(2)公有成員函數(shù)l SP(int n1,int k1):構(gòu)造函數(shù),初始化成員數(shù)據(jù)n和k。l int power(int m, int n):求mn。l int fun( ):求公式的累加和。l void show( ):輸出求得的結(jié)果。2、主要函數(shù)設(shè)計(jì)在主程序中定義對(duì)象s,對(duì)該類進(jìn)行測(cè)試。三、源程序清單#includeclass SPprivate:int n,k;public:SP(int n1,int k1)n=n1;k=k1;int p

6、ower(int m,int n);int fun();void show();int SP:power(int m,int n) int s=1;for(int i=0;in;i+) s*=m;return s;int SP:fun()int s=0;for(int i=1;i=n;i+)s+=power(i,k);return s;void SP:show()coutf(n,k)=fun()endl;void main()int n1,k1;coutn1k1;SP s(n1,k1);s.fun();s.show();四、實(shí)踐小結(jié)掌握用循環(huán)語句求mn,和m!,熟練掌握函數(shù)的調(diào)用。五、運(yùn)行結(jié)果

7、任務(wù)三一、實(shí)踐任務(wù)3建立一個(gè)類MOVE,不進(jìn)行排序,將數(shù)組中小于平均值的元素放到數(shù)組的左邊,大于平均值的元素放到數(shù)組的右邊。二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l float array20:一維整型數(shù)組。l int n:數(shù)組中元素的個(gè)數(shù)。(2)公有成員函數(shù)l MOVE(float b,int m):構(gòu)造函數(shù),初始化成員數(shù)據(jù)。l void average():輸出平均值,并將數(shù)組中的元素按要求重新放置。l void print():輸出一維數(shù)組。2、主要函數(shù)設(shè)計(jì)在主程序中用數(shù)據(jù)1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3對(duì)該類進(jìn)行測(cè)試。三、源程序清單#incl

8、udeclass MOVEprivate:float array20;int n;public:MOVE(float b,int m)for(int i=0;im;i+)arrayi=bi;n=m;void average();void print();MOVE();void MOVE:average()float ave=0;int i,j;for(i=0;in;i+)ave+=arrayi;ave/=n;coutaveendl;float turn20;j=0;for(i=0;in;i+)if(arrayi=ave)turnj=arrayi;j+;j=0;for(i=0;iave)turn

9、n-1-j=arrayi;j+;for(i=0;in;i+)arrayi=turni;void MOVE:print()for(int i=0;in;i+)coutarrayi ;void main()float b1=1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3;int num;num=sizeof(b1)/sizeof(float);MOVE s(b1,num);s.average();s.print();四、實(shí)踐小結(jié)應(yīng)熟練掌握數(shù)組與指針的應(yīng)用。五、運(yùn)行結(jié)果任務(wù)四一、實(shí)踐任務(wù)4建立一個(gè)類MOVE,將數(shù)組中最大元素的值與最小元素的值互換。二、詳細(xì)設(shè)計(jì)1、類的描述與定義(

10、1)私有數(shù)據(jù)成員l int *array:一維整型數(shù)組。l int n:數(shù)組中元素的個(gè)數(shù)。(2)公有成員函數(shù)l MOVE(int b,int m):構(gòu)造函數(shù),初始化成員數(shù)據(jù)。l void exchange():輸出平均值,并將數(shù)組中的元素按要求重新放置。l void print():輸出一維數(shù)組。l MOVE():析構(gòu)函數(shù)。2、主要函數(shù)設(shè)計(jì)在主程序中用數(shù)據(jù)21,65,43,87,12,84,44,97,32,55對(duì)該類進(jìn)行測(cè)試。三、源程序清單#includeclass MOVEprivate:int *array;int n;public:MOVE(int b,int m)array=new

11、intm;n=m;for(int i=0;im;i+)arrayi=bi;void exchange();void print();MOVE()if(array) delete array;void MOVE:exchange() float ave=0; for(int i=0;in;i+)ave+=arrayi;ave/=n;cout平均值為aveendl;int max,min;max=min=array0;int m;for(i=0,m=0;i=max) m=i,max=arrayi;int l;for(i=0,l=0;in;i+) if(arrayimax) l=i,max=arra

12、yi;i=arraym,arraym=arrayl,arrayl=i; void MOVE:print() for(int i=0;in;i+)coutarrayi ;void main() int text=21,65,43,87,12,84,44,97,32,55;int num;num=sizeof(text)/sizeof(int);MOVE s(text,num);s.print();coutendl;s.exchange();s.print();四、實(shí)踐小結(jié)學(xué)會(huì)求數(shù)組中最大元素與最小元素方法,并實(shí)現(xiàn)交換。五、運(yùn)行結(jié)果任務(wù)五一、實(shí)踐任務(wù)5定義一個(gè)類Palindrome,實(shí)現(xiàn)絕對(duì)回文數(shù)

13、。設(shè)計(jì)一個(gè)算法實(shí)現(xiàn)對(duì)任意整型數(shù)字判斷是否為絕對(duì)回文數(shù)。所謂絕對(duì)回文數(shù),是指十進(jìn)制數(shù)和二進(jìn)制數(shù)均對(duì)稱的數(shù)。二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l int n:整型數(shù)字。l int y: 標(biāo)記是否為回文數(shù)。(2)公有成員函數(shù)l Palindrome (int x) :構(gòu)造函數(shù),根據(jù)x參數(shù)初始化數(shù)據(jù)成員n,y初始化為0。l void huiwen () :判斷數(shù)n是否為絕對(duì)回文數(shù)。l void show( ) :若該數(shù)為回文數(shù),則在屏幕顯示。2、主要函數(shù)設(shè)計(jì)在主程序中定義int a,由鍵盤輸入數(shù)字。定義一個(gè)Palindrome類對(duì)象p,用a初始化p,完成對(duì)該類的測(cè)試。三、源程序清單#in

14、cludeclass Palindromeprivate:int n;int y;public:Palindrome(int x)n=x;y=0;void huiwen();void show();void Palindrome:huiwen()int i=0,j=0; int m; m=n;while(m)m/=10;i+;m=n; while(m)m/=2;j+;int*s10=new inti; int*s2=new intj; m=n; for(int k=0;ki;k+)s10i-1-k=m%10;m/=10;m=n; for(k=0;kj;k+)s2j-1-k=m%2;m/=2;i

15、nt num10=0; for(k=0;ki/2;k+)if(s10i-1-k=s10k) num10+;else break;int num2=0; for(k=0;kj/2;k+)if(s2j-1-k=s2k) num2+;else break;if(num10=(i/2)&num2=(j/2) y=1;void Palindrome:show()int i=0,j=0; int m; m=n;while(m)m/=10;i+;m=n; while(m)m/=2;j+;int*s10=new inti+1; int*s2=new intj+1; m=n; for(int k=0;ki;k+

16、)s10i-1-k=m%10;m/=10;m=n; for(k=0;kj;k+)s2j-1-k=m%2;m/=2;if(y) cout該數(shù)為絕對(duì)回文數(shù)?。篹ndl;cout十進(jìn)制表示為:;for(k=0;ki;k+)couts10k;cout二進(jìn)制表示為:;for(k=0;kj;k+)couts2k;elsecout該數(shù)不是絕對(duì)回文數(shù)!:endl;cout十進(jìn)制表示為:;for(k=0;ki;k+)couts10k;cout二進(jìn)制表示為:;for(k=0;kj;k+)couts2k;coutendl;void main()int a;couta;Palindrome p(a);p.huiwen

17、();p.show();四、實(shí)踐小結(jié)將整型轉(zhuǎn)換會(huì)整型數(shù)組類型,再進(jìn)行回文數(shù)判斷,從而實(shí)現(xiàn)回文數(shù)用數(shù)組判斷的通用性。五、運(yùn)行結(jié)果任務(wù)六一、實(shí)踐任務(wù)6定義一個(gè)字符串類String,實(shí)現(xiàn)判斷該字符串是否為回文字符串。所謂回文字符串,是指該字符串左右對(duì)稱。例如字符串“123321”是回文字符串。二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l char *str; l int y:標(biāo)記是否為回文字符串。(2)公有成員函數(shù)l String (char *s) :構(gòu)造函數(shù),用給定的參數(shù)s初始化數(shù)據(jù)成員str。y初始化為0。l void huiwen () :判斷str所指向的字符串是否為回文字符串。l

18、void show( ) :在屏幕上顯示字符串。2、主要函數(shù)設(shè)計(jì)在主程序中定義字符串char s=”ababcedbaba”作為原始字符串。定義一個(gè)String類對(duì)象test,用s初始化test,完成對(duì)該類的測(cè)試。三、源程序清單#include#includeclass Stringprivate:char*str;int y;public:String(char*s)int n=strlen(s);str=new charn+1;strcpy(str,s);y=0;void huiwen();void show();String()if(str) delete str;void String

19、:huiwen()/判斷str所指向的字符串是否為回文字符串;int n,judge=0;n=strlen(str);for(int i=0;i(n/2);i+)if(stri=strn-1-i) judge+;if(judge=i) y=1;void String:show()/輸出;if(y=1) couty=1,該字符串是回文數(shù)strendl;else couty=0,該字符串不是回文數(shù)strendl;void main()/測(cè)試;char s=ababcedbaba;String test(s);test.huiwen();test.show();四、實(shí)踐小結(jié)掌握判斷回文字符串的一般形

20、式。五、運(yùn)行結(jié)果任務(wù)七一、實(shí)踐任務(wù)7建立一個(gè)類PHALANX,生成并顯示一個(gè)折疊方陣。折疊方陣如下圖所示。折疊方陣的生成過程為:起始數(shù)置于方陣的左上角,然后從起始數(shù)開始遞增,依次折疊構(gòu)成方陣。1 2 5 104 3 6 119 8 7 1216 15 14 131 2 4 3 1二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l int (*p)20:指向按照折疊規(guī)律存放方陣的二維整型數(shù)組。l int startnum:折疊方陣的起始數(shù)。l int n:存放方針的層數(shù)。(2)公有成員函數(shù)l PHALANX (int s, int m ):構(gòu)造函數(shù),初始化成員數(shù)據(jù)。l void process(

21、):生成起始數(shù)為startnum的n行方陣。l void print():輸出折疊方陣。l PHALANX( ):析構(gòu)函數(shù)。2、主要函數(shù)設(shè)計(jì)在主程序中對(duì)該類進(jìn)行測(cè)試。三、源程序清單#includeclass PHALANXprivate:int(*p)20;int startnum;int n;public:PHALANX(int s,int m)startnum=s;n=m;p=new intm20;void process();void print();PHALANX()if(p) deletep;void PHALANX:process()/生成起始數(shù)為stratnum的n行螺旋方陣;i

22、nt turn;turn=p00=startnum;int i,j;for(int k=n-2;k=0;k-)/按照折疊方陣的生成過程進(jìn)行賦值;for(i=0,j=n-k-1;i=0;j-)pij=+turn;void PHALANX:print()for(int i=0;in;i+)for(int j=0;jn;j+)coutpijt;coutendl;void main()int s1,m1;couts1m1;PHALANX test(s1,m1);cess();test.print();四、實(shí)踐小結(jié)根據(jù)折疊方陣的產(chǎn)生方式進(jìn)行相應(yīng)的邏輯循環(huán)實(shí)現(xiàn)。五、運(yùn)行結(jié)果任務(wù)八一、實(shí)踐任

23、務(wù)8建立一個(gè)MATRIX,生成并顯示一個(gè)螺旋方陣。螺旋方陣如下圖所示,起始數(shù)置于方陣的左上角,然后從起始數(shù)開始依次遞增,按順時(shí)針方向從外向里旋轉(zhuǎn)填數(shù)而成。1 2 3 4 5 16 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l int a20 20:二維整型數(shù)組存放螺旋方陣。l int startnum:螺旋方陣的起始數(shù)。l int n:存放方針的層數(shù)。(2)公有成員函數(shù)l MATRIX (int s, int m ):構(gòu)造函數(shù),初始化成員數(shù)據(jù)startnum和n。l void process

24、():生成起始數(shù)為startnum的n行螺旋方陣。l void print():輸出螺旋方陣。2、主要函數(shù)設(shè)計(jì)在主程序中定義MATRIX類的對(duì)象t對(duì)該類進(jìn)行測(cè)試。三、源程序清單#includeclass MATRIXprivate:int a2020;int startnum;int n;public:MATRIX(int s,int m)startnum=s;n=m;void process();void print();void MATRIX:process()/生成起始數(shù)為startnum的n行螺旋方陣;int i,j;int k;int turn=startnum;for(k=1;k=

25、n/2;k+)/邏輯性:按照螺旋方陣的生成過程(按順時(shí)針方向從外向里旋轉(zhuǎn)填數(shù)),進(jìn)行賦值;for(i=k-1,j=k-1;jn-(k-1);j+)aij=turn+;j-;turn-;for(;i=k-1;j-)aij=turn+;j+;turn-;for(;i=k;i-)aij=turn+;an/2(n-1)/2=n*n-1+startnum;void MATRIX:print()/輸出螺旋方陣;int i,j;for(i=0;in;i+)for(j=0;jn;j+)coutaijt;coutendlendl;void main()/測(cè)試;int s,m;coutsm;MATRIX t(s,

26、m);cess();t.print();四、實(shí)踐小結(jié)發(fā)現(xiàn)本質(zhì)的邏輯關(guān)系,利用循環(huán)語句實(shí)現(xiàn)。五、運(yùn)行結(jié)果任務(wù)九一、實(shí)踐任務(wù)9定義一個(gè)字符串類CString,并設(shè)計(jì)一個(gè)算法對(duì)該串中各個(gè)不同字符出現(xiàn)的頻率進(jìn)行統(tǒng)計(jì)。二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l char *str:指向要統(tǒng)計(jì)的字符串。l char (*p)2:動(dòng)態(tài)分配二維空間,用以存放str所指字符串中出現(xiàn)的字符及其出現(xiàn)的次數(shù)(次數(shù)在存放時(shí),用該數(shù)字對(duì)應(yīng)的ASCII值存放;在輸出次數(shù)時(shí),輸出該ASCII字符對(duì)應(yīng)的ASCII值即可)。l int size:存放字符串中出現(xiàn)的所有不同的字符的個(gè)數(shù)。(2)公有成員函數(shù)l CS

27、tring (char *s) :根據(jù)s參數(shù)初始化數(shù)據(jù)成員str;p和size初始值為0。l void Count():p根據(jù)s所指字符串長(zhǎng)度分配空間。然后把str所指字符串中的每個(gè)字符放入p數(shù)組中,設(shè)置每個(gè)字符的出現(xiàn)次數(shù)為1。根據(jù)p數(shù)組統(tǒng)計(jì)不同字符出現(xiàn)的頻率,并求得size的實(shí)際大小。最后根據(jù)size的實(shí)際大小,重新分配p所指空間,并把不同字符及其出現(xiàn)次數(shù)重新放回p數(shù)組(提示:可以借助臨時(shí)數(shù)組或指針來實(shí)現(xiàn))。l void Show():屏幕顯示字符串、字符串的每個(gè)字符和與之對(duì)應(yīng)的次數(shù)。l CString():釋放動(dòng)態(tài)分配的空間。2、主要函數(shù)設(shè)計(jì)在主程序中定義字符串char s=”abdabc

28、desffffd”。定義一個(gè)CString類對(duì)象test,用s以初始化test,完成對(duì)該類的測(cè)試。三、源程序清單#include#includeclass CStringprivate:char*str;char (*p)2;int size;public:CString(char*s)str=new charstrlen(s)+1;strcpy(str,s);size=0;p=0;void Count();void Show();CString()if(str) delete str;void CString:Count()p=new charstrlen(str)2;int i,j,k;f

29、or(i=0,j=0;istrlen(str);i+)/每行第0列依次給予字符串中的一個(gè)字符,第1列設(shè)置每個(gè)字符出現(xiàn)的次數(shù)為初始值1;pij=stri;pij+1=1;char*part1=new charstrlen(str)+1;/定義臨時(shí)的字符數(shù)組,用于依次存放不同的字符int*part2=new intstrlen(str)+1;for(i=0;istrlen(str);i+)part1i=0;for(i=0;istrlen(str);i+)part2i=0;for(i=0;istrlen(str);i+)/abdabcdesffffd /abcfor(j=i;jstrlen(str)

30、;j+)int count;for(k=0,count=0;ksize;k+)if(part1k=pi0)count+;/如果臨時(shí)數(shù)組中的字符與原數(shù)組中相同,則count自增為1;if(count=1) break;/代表原字符串中的字符已與臨時(shí)數(shù)組中的字符相重復(fù),則跳出j控制的內(nèi)循環(huán);else /否則,將未重復(fù)的字符存入臨時(shí)數(shù)組1part1size=pi0;size+;for(k=0;ksize;k+)for(i=0;istrlen(str);i+)if(part1k=pi0)/實(shí)現(xiàn)對(duì)不同字符個(gè)數(shù)的計(jì)數(shù),將記的數(shù)存放在臨時(shí)數(shù)組2中。part2k+;delete p;p=new charsiz

31、e2;/根據(jù)size的實(shí)際大小,重新分配p所指空間,并借組臨時(shí)數(shù)組把不同字符及其出現(xiàn)次數(shù)重新放回p數(shù)組。for(i=0;isize;i+)pi0=part1i;pi1=part2i;delete part1;delete part2;void CString:Show()cout原字符串為:strendl;cout不同的字符數(shù):sizeendl;cout字符串中的每個(gè)字符為:endl;for(int i=0;isize;i+)coutpi0 次數(shù)(int)pi1endl;void main()char s=abdabcdesffffd;CString test(s);test.Count();

32、test.Show();四、實(shí)踐小結(jié)可建立臨時(shí)數(shù)組,幫助判斷。五、運(yùn)行結(jié)果任務(wù)十一、實(shí)踐任務(wù)10定義一個(gè)字符串類CString,并設(shè)計(jì)一個(gè)算法實(shí)現(xiàn),給定關(guān)鍵字str1在字符串str中出現(xiàn)時(shí)用關(guān)鍵字str2進(jìn)行替換的功能。二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l char *str; 原始字符串。l char *str1; 目標(biāo)關(guān)鍵字。l char *str2; 替換關(guān)鍵字。l int flag; 標(biāo)記替換是否完成替換。 (2)公有成員函數(shù)l CString (char *s,char s1 ,char *s2) :用給定的參數(shù)s、s1和s2相對(duì)應(yīng)的初始化數(shù)據(jù)成員str、str1和st

33、r2。flag設(shè)置缺省0。l void Replace () :判斷str字符串中是否出現(xiàn)str1,若出現(xiàn)就用str2替換,否則什么都不做。若替換成功了標(biāo)記flag為1,若替換不成功則標(biāo)記flag為0。l void Show( ) :若替換成功,則在屏幕上顯示目標(biāo)關(guān)鍵字、替換關(guān)鍵字和替換后的原始字符串;若不成功則顯示原始字符串。l CString() :釋放動(dòng)態(tài)分配的空間。2、主要函數(shù)設(shè)計(jì)在主程序中定義字符串char s=”I am student, you are student too, we are all student.”作為原始字符串,定義char s1=” student”作為目

34、標(biāo)關(guān)鍵字,定義char s2=”teacher”作為替換關(guān)鍵字。定義一個(gè)CString類對(duì)象test,用s,s1和s2初始化test,完成對(duì)該類的測(cè)試。三、源程序清單#include#includeclass CStringprivate:char*str;/原始字符串char*str1;/目標(biāo)字符串char*str2;/替換關(guān)鍵字int flag;public:CString(char*s,char s1,char*s2)str=new charstrlen(s)+strlen(s2)+strlen(s1)+1;str1=new charstrlen(s1)+1;str2=new chars

35、trlen(s2)+1;strcpy(str,s);strcpy(str1,s1);strcpy(str2,s2);flag=0;void Replace();void Show();CString()if(str) delete str;if(str1) delete str1;if(str2) delete str2;void CString:Replace()int i=0;/i記錄原始字符串str中第i位開始出現(xiàn)與目標(biāo)關(guān)鍵字重合;int k=0,count=0;while(stri)while(stri!=str10&stri) i+;if(istrlen(str)/當(dāng)?shù)趇位沒有超出原

36、始字符串str的范圍時(shí),判斷目標(biāo)字符串是否出/現(xiàn)于原始字符串;if(strncmp(str+i,str1,strlen(str1)=0)k=1;/利用strncmp(,)函數(shù)判斷目標(biāo)字符串是否出現(xiàn)于原始字符串,出現(xiàn)則k=1;if(k)/若目標(biāo)字符串出現(xiàn),則進(jìn)行替換;char*turn=new charstrlen(str)+strlen(str1)+strlen(str2)+1;/臨時(shí)數(shù)組指針,用于存放替換的字符串;strncpy(turn,str,i);turni=0;strcat(turn,str2);strcat(turn,str+i+strlen(str1);strcpy(str,tu

37、rn);delete turn;i=i+strlen(str2);k=0;count+;if(count) flag=1;void CString:Show()if(flag) cout目標(biāo)關(guān)鍵字:str1n替換關(guān)鍵字:str2n替換后的原始字符串:strendl;else cout原始字符串:strendl;void main()char s=I am student,you are student too,we are all student.;char s1=student;char s2=teacher;CString test(s,s1,s2);test.Replace();test

38、.Show();四、實(shí)踐小結(jié)利用臨時(shí)字符數(shù)組,進(jìn)行字符替代。五、運(yùn)行結(jié)果任務(wù)十一一、實(shí)踐任務(wù)11建立一個(gè)STRING,將一個(gè)字符串交叉插入到另一個(gè)字符串中(假定兩字符串等長(zhǎng))。例如將字符串“abcde” 交叉插入字符串“ABCDE”的結(jié)果為“aAbBcCdDeE”或“AaBbCcDdEe”。二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l char str180 :存放被插入的字符串。l char str240 :存放待插入的字符串。(2)公有成員函數(shù)l STRING (char *s1, char *s2 ):構(gòu)造函數(shù),用s1和s2初始化str1和str2。l void process()

39、:將str2中的字符串插入到str1中。l void print():輸出插入后的字符串。2、主要函數(shù)設(shè)計(jì)在主程序中定義STRING類的對(duì)象test對(duì)該類進(jìn)行測(cè)試。三、源程序清單#include#includeclass STRINGprivate:char str180;/存放被插入的字符串;char str240;/存放待插入的字符串;public:STRING(char*s1,char*s2)strcpy(str1,s1);strcpy(str2,s2);void process();void print();void STRING:process()int i,j;int n=strl

40、en(str1);if(strlen(str2)strlen(str1)/當(dāng)待插入的字符串ABCDEFG比被插入的字符串a(chǎn)bcde長(zhǎng)或相等時(shí),邏輯算法:abcde-a b c d e-空格處依次插入ABCDEFG-aAbBcCdDeEFG;for(i=n-1;i0;i-)str1i+i=str1i;/被插入的字符串由最后一位開始各位向后移動(dòng)i位;for(i=1,j=0;i2*n;i+=2,j+)str1i=str2j;/在空出的位置處依次插入字符串;i-;for(;jA B C D E FG-空格處插入abcde-AaBbCcDdEeFG;for(i=n;istrlen(str2)-1;i-)

41、str1i+strlen(str2)=str1i;/比待插入的字符串長(zhǎng)的部分均向后移strlen(str2)位;for(i=strlen(str2)-1;i0;i-)str1i+i=str1i;/之前的部分均向后移i位;for(i=1,j=0;i2*strlen(str2);i+=2,j+)str1i=str2j;/將待插入的字符串插入空格處,完成插入;void STRING:print()/輸出插入后的字符串cout插入后的字符串為:str1endl;void main()/測(cè)試STRING test(ABCDE,abcde);cess();test.print();四、實(shí)踐

42、小結(jié)發(fā)現(xiàn)字符插入的規(guī)律,再依次放入相應(yīng)字符位置。五、運(yùn)行結(jié)果任務(wù)十二一、實(shí)踐任務(wù)12建立一個(gè)STRING,將一個(gè)字符串交叉插入到另一個(gè)字符串中(假定兩字符串不等長(zhǎng))。例如將字符串“abcde” 交叉插入字符串“ABCDEFG”的結(jié)果為“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。二、詳細(xì)設(shè)計(jì)1、類的描述與定義(1)私有數(shù)據(jù)成員l char str160 :存放被插入的字符串。l char str240 :存放待插入的字符串。l char str3100 :存放插入后的字符串。(2)公有成員函數(shù)l STRING (char *s1, char *s2 ):構(gòu)造函數(shù),用s1和s2初始

43、化str1和str2。l void process():將str2中的字符串插入到str1中,存放到str3中。l void print():輸出插入后的字符串。2、主要函數(shù)設(shè)計(jì)在主程序中定義STRING類的對(duì)象test對(duì)該類進(jìn)行測(cè)試。三、源程序清單#include#includeclass STRINGprivate:char str160;char str240;char str3100;public:STRING(char*s1,char*s2)strcpy(str1,s1);strcpy(str2,s2);void process();void print();void STRING:process()int i,j;int n=strlen(str1);if(strlen(str2)strlen(str1)/當(dāng)待插入的字符串ABCDEFG比被插入的字符串a(chǎn)bcde長(zhǎng)或相等時(shí),邏輯算法:abcde-a b c d e-空格處依次插入ABCDEFG-aAbBcCdDeEFG;for(i=n-1;i0;i-)str1i+i=str1i;/被插入的字符串由最后一位開始各位向后移動(dòng)i位;for(i=1,j=0;i2*n;i+=2,j+)str1i=str2j;/在空出的位置處依次插

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論