版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上課程設(shè)計(jì)說明書程序設(shè)計(jì)的主要思路:首先構(gòu)思所寫程序的框架,我在主函數(shù)中輸入字符串,并調(diào)用函數(shù)傳給定義的順序串,主函數(shù)中運(yùn)用了do-while語(yǔ)句和switch語(yǔ)句,以此來(lái)供使用者選擇他所需做的操作。選擇所需操作時(shí),調(diào)用相應(yīng)的函數(shù)實(shí)現(xiàn)功能的應(yīng)用,輸出所需結(jié)果。同時(shí)為了操作系統(tǒng)的好看,我運(yùn)用了system()等改變了運(yùn)行界面的顏色。1、 需求分析實(shí)現(xiàn)串的基本操作,如:(1) 輸入兩個(gè)串,并賦值給順序串s,t(2) 實(shí)現(xiàn)將串t復(fù)制給串s(3) 判斷兩串的大小(4) 求兩串的長(zhǎng)度(5) 實(shí)現(xiàn)兩串的連接(6) 求子串(7) 插入(8) 刪除(9) 替換(10) 輸出串(11)
2、實(shí)現(xiàn)串的匹配,如:非模式匹配、簡(jiǎn)單模式匹配、KMP匹配(12) 實(shí)現(xiàn)串的逆置(13) 查找(14) 轉(zhuǎn)換(將大寫字母轉(zhuǎn)換為小寫字母,小寫字母轉(zhuǎn)換為大寫字母)2、 概要設(shè)計(jì)2.1 主界面設(shè)計(jì)先設(shè)置了一個(gè)檢測(cè)運(yùn)行環(huán)境系統(tǒng) 。如圖:為了實(shí)現(xiàn)串的各項(xiàng)基本操作,設(shè)計(jì)了一個(gè)含有多個(gè)菜單項(xiàng)的主控菜單模式以連接各種基本操作,以方便使用系統(tǒng)。如圖:在選項(xiàng)9中我又設(shè)計(jì)了一個(gè)含三個(gè)菜單項(xiàng)的小主菜單以連接三個(gè)不同的匹配算法。如圖: 2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 系統(tǒng)采用線性表的順序存儲(chǔ)結(jié)構(gòu)表示,其中存放串字符和串長(zhǎng)。此外定義了一個(gè)常量max,表示字符串的最大長(zhǎng)度。 2.3 系統(tǒng)功能設(shè)計(jì) 此系統(tǒng)中設(shè)置了14個(gè)子功能模塊,并在第
3、9個(gè)功能中又設(shè)置了3個(gè)子功能模塊。 (1)將串t復(fù)制給串s模塊,由strcopy()函數(shù)實(shí)現(xiàn)。 (2)比較兩串的大小模塊。由strcmp()函數(shù)實(shí)現(xiàn)。 (3)求串的長(zhǎng)度模塊。由strlength()函數(shù)實(shí)現(xiàn)。 (4)串的查找模塊。由chaz()函數(shù)實(shí)現(xiàn)。 (5)求子串模塊。由substr()函數(shù)實(shí)現(xiàn)。 (6)串的連接模塊。由concat()函數(shù)實(shí)現(xiàn)。 (7)輸出串模塊。由dis()函數(shù)實(shí)現(xiàn)。 (8)將串s2插入到s1的第i個(gè)字符中模塊。 (9)串的模式匹配模塊??梢杂腥齻€(gè)函數(shù)實(shí)現(xiàn):index1()函數(shù)、index()函數(shù)、kmpindex()函數(shù)。 (10)從串s中刪除第i個(gè)字符開始的長(zhǎng)度為j
4、的子串模塊。由delstr()函數(shù)實(shí)現(xiàn)。 (11)在s串中將第i個(gè)字符開始的j個(gè)字符構(gòu)成的子串用串t替換模塊。由repstr()函數(shù)實(shí)現(xiàn)。 (12)串的逆序模塊。由ReverseSq()函數(shù)實(shí)現(xiàn)。 (13)串的轉(zhuǎn)換模塊。由zhuanh()函數(shù)實(shí)現(xiàn)。 (14)串的修改模塊。由change()函數(shù)實(shí)現(xiàn)。3.模塊設(shè)計(jì) 整個(gè)程序的流程圖。如圖: 開始輸入串cstr,Str并賦值給串s,t1串t復(fù)制給s2判斷串的大小3求串長(zhǎng)4串的連接5求子串6插入7刪除8替換9匹配10輸出串11串的逆序12串的查找13串的轉(zhuǎn)換14串的修改根據(jù)選擇輸出相應(yīng)的運(yùn)行結(jié)果結(jié)束stra()函數(shù)strcmp()函數(shù)strlegth
5、()函數(shù)Concat()函數(shù)substr()函數(shù)insstr()函數(shù)delstr()函數(shù)repstrt()函數(shù)pipei()函數(shù)dis()函數(shù)ReverseSq()函數(shù)chaz()函數(shù)zhuanh()函數(shù)change()函數(shù)選擇(n!=0)而選擇9中還有一個(gè)流程,如圖:選擇9選擇(n!=0)1非模式匹配2 BF模式匹配3 KMP模式匹配index1()函數(shù)index()函數(shù)kmpindex()函數(shù)getnext()函數(shù)輸出相應(yīng)的結(jié)果4.詳細(xì)設(shè)計(jì) 4.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 系統(tǒng)采用串的順序存儲(chǔ)結(jié)構(gòu)(順序串)存儲(chǔ)串的基本內(nèi)容。類型定義如下: typedef struct char datamax; in
6、t length; sqstring; 4.2系統(tǒng)主要模塊設(shè)計(jì) (1)將字符常量cstr,Str賦值給串s,t模塊,由stra()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:用for循環(huán)將cstri賦值給si;并s.length=i。 該模塊的算法描述如下: void stra(sqstring &s,char cstr)/將字符串常量賦給串s,s為引用型參數(shù) int i; for(i=0;cstri!=0;i+) s.datai=cstri; s.length=i; (2)將串t復(fù)制給串s模塊,由strcopy()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:用for循環(huán)將順序串t的內(nèi)容復(fù)制給順序串s,并順序串s的長(zhǎng)度為
7、順序串t的長(zhǎng)度。 該模塊的算法描述如下: sqstring strcopy(sqstring s,sqstring t)/將串t復(fù)制給串s int i;for(i=0;it.length;i+)s.datai=t.datai;s.length=t.length;return s; (3)比較兩串的大小模塊。由strcmp()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:首先比較s和t兩串共同長(zhǎng)度范圍內(nèi)的對(duì)應(yīng)字符;若st,返回1;s=t,按上述規(guī)則繼續(xù)比較。然后當(dāng)s和t對(duì)應(yīng)字符均相同時(shí),比較s和t的長(zhǎng)度;若st,返回1;s=t,返回0。 該模塊的算法描述如下: int strcmp(sqstring s,sqs
8、tring t)/比較兩串的大小int i,com;if(s.lengtht.length)com=s.length;/求串s、t的共同長(zhǎng)度elsecom=t.length;for(i=0;icom;i+)/在共同長(zhǎng)度內(nèi)逐個(gè)字符比較if(s.datait.datai)return 1;if(s.length=t.length)/s=treturn 0;else if(s.datait.datai)/st (4)求串的長(zhǎng)度模塊。由strlength()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:返回串s、t中的字符個(gè)數(shù)。 該模塊的算法描述如下:int strlength(sqstring s)/求串的長(zhǎng)度re
9、turn s.length; (5)串的連接模塊。由concat()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:先定義一個(gè)順序空串str存儲(chǔ)連接后的新串,其長(zhǎng)度為串s和t的長(zhǎng)度之和。先將s的內(nèi)容賦值給串str,在接著其后將t的內(nèi)容賦值給它。 該模塊的算法描述如下: sqstring concat(sqstring s,sqstring t)/串的連接sqstring str;int i;str.length=s.length+t.length;for(i=0;is.length;i+)/將s.data0.s.length-1復(fù)制到strstr.datai=s.datai;for(i=0;it.length;
10、i+)/將t.data0.t.length-1復(fù)制到strstr.datas.length+i=t.datai;return str; (6)求子串模塊。由substr()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:先定義一空串str存儲(chǔ)求的子串,找到所求子串的位置,利用for循環(huán)將長(zhǎng)度為子串長(zhǎng)度的串賦值給串str。若參數(shù)不對(duì),返回空串。 該模塊的算法描述如下: sqstring substr(sqstring s,int i,int j)/求子串sqstring str;int k;str.length=0;if(is.length|js.length)return str;/參數(shù)不正確時(shí)返回空串for(
11、k=i-1;ki+j-1;k+)/將s.datai.i+j復(fù)制到strstr.datak-i+1=s.datak;str.length=j;return str; (7)將串s2插入到s1的第i個(gè)字符中模塊。該模塊的算法思想是:先定義一個(gè)空串str,用for循環(huán)將s1的前i-1個(gè)字符賦值給str,在接著將串s2的字符賦值給str,最后將s1的i后的字符賦值給str。若參數(shù)不對(duì),返回一個(gè)空串。 該模塊的算法描述如下: sqstring instr(sqstring s1,int i,sqstring s2)/將串s2插入到串s1的第i個(gè)字符中int j;sqstring str;str.leng
12、th=0;if(is1.length+1)return str;/參數(shù)不正確時(shí)返回空串for(j=0;ji-1;j+)/將s1.data0.i-2復(fù)制到strstr.dataj=s1.dataj;for(j=0;js2.length;j+)/將s2.data0.s2.length-1復(fù)制到strstr.datai+j-1=s2.dataj;for(j=i-1;js1.length;j+)/將s1.datai-1.s1.length-1復(fù)制到strstr.datas2.length+j=s1.dataj;str.length=s1.length+s2.length;return str;(8)從
13、串s中刪除第i個(gè)字符開始的長(zhǎng)度為j的子串模塊。由delstr()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:先定義一個(gè)空串str,將s中前i-1個(gè)字符賦值給str,再將從i+j-1到s.length-1的字符賦值給str。 該模塊的算法描述如下: sqstring delstr(sqstring s,int i,int j)/從串s中刪除第i個(gè)字符開始的長(zhǎng)度為j的子串int k;sqstring str;str.length=0;if(is.length|i+js.length+1)return str;/參數(shù)不正確時(shí)返回空串for(k=0;ki-1;k+)/將s.data0.i-2復(fù)制到strstr.da
14、tak=s.datak;for(k=i+j-1;ks.length;k+)/將s.datai+j-1.s.length-1復(fù)制到strstr.datak-j=s.datak;str.length=s.length-j;return str;(9)在s串中將第i個(gè)字符開始的j個(gè)字符構(gòu)成的子串用串t替換模塊。由repstr()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:先定義一個(gè)空串str,將s中前i-1個(gè)字符賦值給str,再將串t的字符串賦值給str,最后將從i+j-1到s.length-1的字符賦值給str。 該模塊的算法描述如下: sqstring repstr(sqstring s,int i,int
15、j,sqstring t)/在串s中將第i個(gè)字符開始的j個(gè)字符構(gòu)成的子串用串t替換int k;sqstring str;str.length=0;if(is.length|i+js.length+1)return str;/參數(shù)不正確時(shí)返回空串for(k=0;ki-1;k+)/將s.data0.i-2復(fù)制到strstr.datak=s.datak;for(k=0;kt.length;k+)/將t.data0.t.length-1復(fù)制到strstr.datai+k-1=t.datak;for(k=i+j-1;ks.length;k+)/將s.datai+j-1.s.length-1復(fù)制到strs
16、tr.datat.length+k-j=s.datak;str.length=s.length-j+t.length;return str;(10)串的模式匹配模塊??梢杂腥齻€(gè)函數(shù)實(shí)現(xiàn):index1()函數(shù)、index()函數(shù)、kmpindex()函數(shù)。該模塊的算法思想是:index()函數(shù):從目標(biāo)串s的第一個(gè)字符開始和模式串t中的第一個(gè)比較,若相等,則繼續(xù)逐個(gè)比較后續(xù)字符;否則從目標(biāo)串s的第二個(gè)字符開始重新與模式串t的第一個(gè)字符比較。以此類推,若從模式串s的第i個(gè)字符開始,每個(gè)字符依次和目標(biāo)串t中的對(duì)應(yīng)字符相等,則匹配成功,并返回位置i;否則,匹配失敗,返回-1。 kmpindex()函數(shù):
17、設(shè)s為目標(biāo)串,t為模式串,i指針和j指針分別指示目標(biāo)串和模式串中正待比較的字符,令i和j的初值為0.若有si=tj,則i和j分別自增1;否則i不變,j退回到j(luò)=nextj的位置(即模式串右滑),比較si和tj,若相等則指針個(gè)自增1,否則j再退回到下一個(gè)j=nextj位置(即模式串繼續(xù)右滑),再比較si和tj。以此類推,直到出現(xiàn)下列兩種情況之一:1、j退回到某個(gè)j=nextj位置時(shí)有si=tj,則指針各自增1后繼續(xù)匹配;2、j退回到j(luò)=-1時(shí),此時(shí)令i、j指針各自增1,即下一次比較si+1和t0。 該模塊的算法描述如下: int index(sqstring s,sqstring t)/BF模式
18、匹配int i=0,j=0,k;while(is.length&j=t.length) k=i-t.length; /返回匹配的第一個(gè)字符的下標(biāo)elsek=-1;return k; /模式匹配不成功int index1(sqstring s,sqstring t)/非模式匹配int i,j,k;for(i=0;is.length;i+)for(j=i,k=0;s.dataj=t.datak;j+,k+);if(k=t.length)return i;/返回匹配的第一個(gè)字符的下標(biāo)return -1;/模式匹配不成功void getnext(sqstring t,int next)/由模式串t求出
19、next的值int j,k;j=0;k=-1;next0=-1;while(jt.length-1)if(k=-1|t.dataj=t.datak)/k為-1或比較的字符相等j+;k+;nextj=k;elsek=nextk;int kmpindex(sqstring s,sqstring t)/KMP模式匹配int nextmax,i=0,j=0;getnext(t,next);while(is.length&j=t.length)return(i-t.length); /返回匹配模式串的首字符下標(biāo)elsereturn(-1); /返回不匹配標(biāo)志(11)串的逆序模塊。由ReverseSq()
20、函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:定義兩自變量i,j,i=0,j=s.length-1,將其前后對(duì)調(diào)后,i自增1,j自減1。直至i=j為止。并輸出其對(duì)調(diào)后的字符串。 該模塊的算法描述如下: void ReverseSq(sqstring s)int c,i,j;char T;i=0;j=s.length-1;while(ij) T=s.datai;s.datai=s.dataj;s.dataj=T;i+;j-;for(c=0;c=0;i-)if(s.datai=m)c+;printf(character出現(xiàn)在串s中對(duì)應(yīng)的最大下標(biāo):%dn,i);flag=1;break;if(flag=0)prin
21、tf(串s中無(wú)這個(gè)字符!n);printf(該字符在串中出現(xiàn)的次數(shù):%dn,c);(13)串的轉(zhuǎn)換模塊。由zhuanh()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:若字符在az之間,則將字符減去32后輸出。若字符在AZ之間,則將字符加上32后輸出。 該模塊的算法描述如下: void zhuanh(sqstring s)int i;for(i=0;is.length;i+)if(s.datai=a)printf(%c ,s.datai-32);if(s.datai=A)printf(%c ,s.datai+32);(14)串的修改模塊。由change()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:定義兩串cstr,Str
22、,輸入其內(nèi)容,調(diào)用函數(shù)stra()(將輸入串賦值給順序串)。 該模塊的算法描述如下: void change(sqstring &s,sqstring &t)char cstrmax,Strmax;int i;printf(輸入串cstr:);i=0;getchar();while(cstri=getchar()!=n)i+;cstri=0;printf(輸入串Str:);i=0;while(Stri=getchar()!=n)i+;Stri=0;printf(把串cstr賦值給串s:);stra(s,cstr);dis(s); printf(把串Str賦值給串t:);stra(t,Str);
23、dis(t);(15) 串的輸出模塊。由dis()函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:用for循環(huán)在其長(zhǎng)度范圍內(nèi)依次輸出各字符。 該模塊的算法描述如下: void dis(sqstring s)/顯示串s中的所有元素int i;if(s.length0)for(i=0;is.length;i+)printf(%c,s.datai);printf(n);5.調(diào)試分析 6.用戶使用說明 用戶使用時(shí)。先輸入你所需用的兩串。在根據(jù)你所需操作的內(nèi)容選擇其選項(xiàng),注意輸入的是數(shù)字,不要輸入除數(shù)字以外的內(nèi)容。若想結(jié)束程序,只需輸入0即可。7.對(duì)所設(shè)計(jì)的軟件進(jìn)行自我評(píng)價(jià) 我覺得我這次所寫的程序很簡(jiǎn)單,除去模式匹配函數(shù)
24、以外其它的所需調(diào)用的函數(shù)基本可以由大一所學(xué)寫出來(lái)。所以這個(gè)程序我用了這學(xué)期所學(xué)的順序串來(lái)實(shí)現(xiàn)這些功能。其中定義了存放串字符和串長(zhǎng)度。在順序串中,串中的字符被依次存放在一組連續(xù)的存儲(chǔ)單元里。而串的順序存儲(chǔ)有兩種方法:非緊縮格式和緊縮格式。非緊縮格式:一個(gè)內(nèi)存單元存儲(chǔ)一個(gè)字符。緊縮格式:一個(gè)內(nèi)存單元可以存儲(chǔ)多個(gè)字符。我所寫的程序用地是非緊縮格式存儲(chǔ)方法。這個(gè)軟件的功能多,充分應(yīng)用了do-while語(yǔ)句和switch語(yǔ)句,這樣可讓使用者隨意選擇所需操作的功能。其中字符串的匹配更是運(yùn)用了三個(gè)匹配:非模式匹配、BF模式匹配、KMP模式匹配。但是有一個(gè)問題尚未得到解決,那就是輸入選擇時(shí),若不小心輸入一個(gè)字
25、符,運(yùn)行時(shí)它會(huì)無(wú)限循環(huán)。所以使用時(shí)輸入數(shù)字,輸入0時(shí)將結(jié)束程序。9.程序源代碼#include#include#include#define max 100typedef structchar datamax;int length;sqstring;void stra(sqstring &s,char cstr)/將字符串常量賦給串s,s為引用型參數(shù)int i;for(i=0;cstri!=0;i+)s.datai=cstri;s.length=i;void dis(sqstring s)/顯示串s中的所有元素int i;if(s.length0)for(i=0;is.length;i+)pr
26、intf(%c,s.datai);printf(n);sqstring strcopy(sqstring s,sqstring t)/將串t復(fù)制給串s int i;for(i=0;it.length;i+)s.datai=t.datai;s.length=t.length;return s;int strcmp(sqstring s,sqstring t)/比較兩串的大小int i,com;if(s.lengtht.length)com=s.length;/求串s、t的共同長(zhǎng)度elsecom=t.length;for(i=0;icom;i+)/在共同長(zhǎng)度內(nèi)逐個(gè)字符比較if(s.datait.d
27、atai)return 1;if(s.length=t.length)/s=treturn 0;else if(s.datait.datai)/stint strlength(sqstring s)/求串的長(zhǎng)度return s.length;sqstring concat(sqstring s,sqstring t)/串的連接sqstring str;int i;str.length=s.length+t.length;for(i=0;is.length;i+)/將s.data0.s.length-1復(fù)制到strstr.datai=s.datai;for(i=0;it.length;i+)/將
28、t.data0.t.length-1復(fù)制到strstr.datas.length+i=t.datai;return str;sqstring substr(sqstring s,int i,int j)/求子串sqstring str;int k;str.length=0;if(is.length|js.length)return str;/參數(shù)不正確時(shí)返回空串for(k=i-1;ki+j-1;k+)/將s.datai.i+j復(fù)制到strstr.datak-i+1=s.datak;str.length=j;return str;sqstring instr(sqstring s1,int i,
29、sqstring s2)/將串s2插入到串s1的第i個(gè)字符中int j;sqstring str;str.length=0;if(is1.length+1)return str;/參數(shù)不正確時(shí)返回空串for(j=0;ji-1;j+)/將s1.data0.i-2復(fù)制到strstr.dataj=s1.dataj;for(j=0;js2.length;j+)/將s2.data0.s2.length-1復(fù)制到strstr.datai+j-1=s2.dataj;for(j=i-1;js1.length;j+)/將s1.datai-1.s1.length-1復(fù)制到strstr.datas2.length+
30、j=s1.dataj;str.length=s1.length+s2.length;return str;sqstring delstr(sqstring s,int i,int j)/從串s中刪除第i個(gè)字符開始的長(zhǎng)度為j的子串int k;sqstring str;str.length=0;if(is.length|i+js.length+1)return str;/參數(shù)不正確時(shí)返回空串for(k=0;ki-1;k+)/將s.data0.i-2復(fù)制到strstr.datak=s.datak;for(k=i+j-1;ks.length;k+)/將s.datai+j-1.s.length-1復(fù)制到
31、strstr.datak-j=s.datak;str.length=s.length-j;return str;sqstring repstr(sqstring s,int i,int j,sqstring t)/在串s中將第i個(gè)字符開始的j個(gè)字符構(gòu)成的子串用串t替換int k;sqstring str;str.length=0;if(is.length|i+js.length+1)return str;/參數(shù)不正確時(shí)返回空串for(k=0;ki-1;k+)/將s.data0.i-2復(fù)制到strstr.datak=s.datak;for(k=0;kt.length;k+)/將t.data0.t
32、.length-1復(fù)制到strstr.datai+k-1=t.datak;for(k=i+j-1;ks.length;k+)/將s.datai+j-1.s.length-1復(fù)制到strstr.datat.length+k-j=s.datak;str.length=s.length-j+t.length;return str;int index(sqstring s,sqstring t)/BF模式匹配int i=0,j=0,k;while(is.length&j=t.length) k=i-t.length; /返回匹配的第一個(gè)字符的下標(biāo)elsek=-1;return k; /模式匹配不成功i
33、nt index1(sqstring s,sqstring t)/非模式匹配int i,j,k;for(i=0;is.length;i+)for(j=i,k=0;s.dataj=t.datak;j+,k+);if(k=t.length)return i;/返回匹配的第一個(gè)字符的下標(biāo)return -1;/模式匹配不成功void getnext(sqstring t,int next)/由模式串t求出next的值int j,k;j=0;k=-1;next0=-1;while(jt.length-1)if(k=-1|t.dataj=t.datak)/k為-1或比較的字符相等j+;k+;nextj=k
34、;elsek=nextk;int kmpindex(sqstring s,sqstring t)/KMP模式匹配int nextmax,i=0,j=0;getnext(t,next);while(is.length&j=t.length)return(i-t.length); /返回匹配模式串的首字符下標(biāo)elsereturn(-1); /返回不匹配標(biāo)志void pipei(sqstring s,sqstring t)int n;doprintf( * n);printf( 1 非模式匹配 2 BF模式匹配 3 KMP模式匹配 n);printf( * n);scanf(%d,&n);switc
35、h(n)case 1:if(index1(s,t)=-1) printf(該順序串不匹配!n); else printf(該順序串匹配,第一匹配位置是:%dn,index1(s,t);break;case 2:if(index(s,t)=-1) printf(該順序串不匹配!n); else printf(該順序串匹配,第一匹配位置是:%dn,index(s,t);break;case 3:if(kmpindex(s,t)=-1) printf(該順序串不匹配!n); else printf(該順序串匹配,第一匹配位置是:%dn,kmpindex(s,t);break;default:brea
36、k;while(n!=0);void ReverseSq(sqstring s)int c,i,j;char T;i=0;j=s.length-1;while(ij) T=s.datai;s.datai=s.dataj;s.dataj=T;i+;j-;for(c=0;c=0;i-)if(s.datai=m)c+;printf(character出現(xiàn)在串s中對(duì)應(yīng)的最大下標(biāo):%dn,i);flag=1;break;if(flag=0)printf(串s中無(wú)這個(gè)字符!n);printf(該字符在串中出現(xiàn)的次數(shù):%dn,c);void zhuanh(sqstring s)int i;for(i=0;i
37、s.length;i+)if(s.datai=a)printf(%c ,s.datai-32);if(s.datai=A)printf(%c ,s.datai+32);void change(sqstring &s,sqstring &t)char cstrmax,Strmax;int i;printf(輸入串cstr:);i=0;getchar();while(cstri=getchar()!=n)i+;cstri=0;printf(輸入串Str:);i=0;while(Stri=getchar()!=n)i+;Stri=0;printf(把串cstr賦值給串s:);stra(s,cstr)
38、;dis(s); printf(把串Str賦值給串t:);stra(t,Str);dis(t);int main()system(color b0);sqstring s,t,s0,s1,s2,s3,s4,s5;int i,j,n,l,k;char m,cstrmax,Strmax;printf(ttt請(qǐng)稍后,正在檢測(cè)運(yùn)行環(huán)境.n);for(l=0;l80;l+)for(k=0;k;k+)if(k);printf (ttt檢測(cè)完成按回車鍵進(jìn)入系統(tǒng));getchar();system(cls);printf(輸入串cstr:);i=0;while(cstri=getchar()!=n)i+;cs
39、tri=0;printf(輸入串Str:);i=0;while(Stri=getchar()!=n)i+;Stri=0;printf(把串cstr賦值給串s:);stra(s,cstr);dis(s); printf(把串Str賦值給串t:);stra(t,Str);dis(t);doprintf(*n);printf( 1:串t復(fù)制給串s 2:判斷串大小 3:求串長(zhǎng) 4:串連接 5:求子串 6:插入n );printf( 7:刪除 8:替換 9:匹配 10:輸出串 11:逆序 12:查找 13:轉(zhuǎn)換 14:修改n );printf(*n);scanf(%d,&n);switch(n)case 1:print
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《信息產(chǎn)業(yè)》課件
- 證券結(jié)構(gòu)化產(chǎn)品協(xié)議三篇
- 《球墨鑄鐵直埋熱水管道技術(shù)規(guī)程》公示稿
- 校園美術(shù)作品長(zhǎng)廊建設(shè)規(guī)劃計(jì)劃
- 典當(dāng)服務(wù)相關(guān)行業(yè)投資規(guī)劃報(bào)告范本
- 工具臺(tái)車相關(guān)項(xiàng)目投資計(jì)劃書
- 情感教育與道德認(rèn)知的結(jié)合計(jì)劃
- 增強(qiáng)幼兒園團(tuán)隊(duì)建設(shè)的策略計(jì)劃
- 青少年犯罪預(yù)防的保安策略計(jì)劃
- 理財(cái)規(guī)劃師課件(綜合案例分析)
- 充電樁競(jìng)爭(zhēng)格局分析
- 線性規(guī)劃課后題答案
- 壓裂作業(yè)質(zhì)量、安全、環(huán)保管理體系與措施
- JGJ120-2012建筑基坑支護(hù)技術(shù)規(guī)程
- 國(guó)防教育基地建設(shè)項(xiàng)目運(yùn)營(yíng)方案
- 維生素B市場(chǎng)研究報(bào)告
- 四川省廣安市2023年九年級(jí)上學(xué)期期末化學(xué)試題附答案
- 2022年云南省昆明市中考語(yǔ)文真題答案詳解
- 五年級(jí)信息技術(shù)上冊(cè)期末試卷及答案
- 成長(zhǎng)計(jì)劃300字初中綜合素質(zhì)評(píng)價(jià)初三
- 工廠空氣重度污染應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論