實(shí)驗(yàn)三串基本操作的編程實(shí)現(xiàn)_第1頁(yè)
實(shí)驗(yàn)三串基本操作的編程實(shí)現(xiàn)_第2頁(yè)
實(shí)驗(yàn)三串基本操作的編程實(shí)現(xiàn)_第3頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)三 串基本操作的編程實(shí)現(xiàn)【實(shí)驗(yàn)?zāi)康摹績(jī)?nèi)容:串基本操作的編程實(shí)現(xiàn)要求:串基本操作的編程實(shí)現(xiàn)( 2 學(xué)時(shí),驗(yàn)證型),掌握串的建立、遍歷、插入、刪除等基本 操作的編程實(shí)現(xiàn),也可以進(jìn)一步編程實(shí)現(xiàn)查找、合并、剪裁等操作,存儲(chǔ)結(jié)構(gòu)可以在順序結(jié) 構(gòu)或鏈接結(jié)構(gòu)、 索引結(jié)構(gòu)中任選, 也可以全部實(shí)現(xiàn)。 也鼓勵(lì)學(xué)生利用基本操作進(jìn)行一些應(yīng)用 的程序設(shè)計(jì)?!緦?shí)驗(yàn)性質(zhì)】驗(yàn)證性實(shí)驗(yàn)(學(xué)時(shí)數(shù): 2H )【實(shí)驗(yàn)內(nèi)容】字符串用常規(guī)的順序存儲(chǔ)法來存儲(chǔ),實(shí)現(xiàn)常用的功能。 自己編程模式:開發(fā)一個(gè)程序,用來統(tǒng)計(jì)文件中各種信息,如字符個(gè)數(shù),行數(shù)等。 修改程序模式:將下面程序空白的地方填空。程序檢查模式:將本文件夾中的程序運(yùn)行后總結(jié)相關(guān)

2、功能?!舅伎紗栴}】1. 字符串的順序存儲(chǔ)和鏈表存儲(chǔ)的差異?C語言中是如何實(shí)現(xiàn)字符串的?2. 在字符串處理方面主要有什么操作?3. 字符串的操作的主要特點(diǎn)是什么?4. 舉出幾個(gè)字符串的應(yīng)用范例?【參考代碼】/ 功能:順序串的基本基本功能#include <iostream.h>#include <conio.h>#include <windows.h>#include <iomanip.h>#define maxsize 30/順序串的總空間大小enum returninfosuccess,fail,overflow,underflow,range

3、_error,empty;/清單class stringpublic:string();/ 構(gòu)造函數(shù)string();/ 析構(gòu)函數(shù)returninfo strcreate(); /創(chuàng)建串returninfo strinsert(int position,char newstr,int str_length); /插入returninfo strdelete(int beginposition,int endposition); /刪除returninfo strmodify(int beginposition,int endposition,char newstr); /int strsear

4、ch(char newstr); / 查找void strtraverse(); / 遍歷定義返回信息修改private:char *str; / 串int length; / 長(zhǎng)度;string:string()str=new charmaxsize;/ 申請(qǐng)數(shù)組空間string:string()returninfo string:strcreate()int i=-1,ch;cout<<" 請(qǐng)輸入要?jiǎng)?chuàng)建的字符串 (ctrl+z 結(jié)束輸入 ):"<<endl;while(ch=getch()!=26)cout<<char(ch);i+;

5、if(ch!=13)stri=char(ch);else i=i-1;cout.flush();/ 為了每次輸入后可以立即顯示所輸入的字符,則先清除緩沖區(qū)length=i+1;cout<<endl;return success;returninfo string:strinsert(int position,char newstr,int str_length)/ 當(dāng)插入的字符串在原串末尾時(shí),就相當(dāng)于合并return success;returninfo string:strdelete(intbeginposition,int endposition)return success

6、;returninfo string:strmodify(int beginposition,int endposition,char newstr) return success;int i=0,str_length,position=0,count=0; / 是否相等標(biāo)志 ,count 用來確定比較時(shí)原串 的移動(dòng)if(length=0)return -1;str_length=strlen(newstr);for(;i<length&&count<str_length;i+)if(stri=newstrcount) position=i-str_length+2

7、;count+;continue; elseif(position=1)i=i-count;count=0;position=0;return position;void string:strtraverse()int i,j;if(length>0)cout<<" 位置 : "for(i=0;i<=length/10;i+)cout<<"|-"<<i<<"|"cout<<endl;cout<<" 位置 : " for(i=0;i&

8、lt;=length/10;i+)for(j=0;j<=9;j+)cout<<j;cout<<endl;cout<<" 當(dāng)前串 : "for(i=0;i<length;i+) cout<<stri;cout<<endl;elsecout<<" 字符串為空 !"<<endl;return length;void menu(void)cout<<" 順序串基本功能菜單 "<<endl;)"<<end

9、l;cout<<"="<<endl;cout<<"1. 建立順序串(僅限單行的字符串,建議不用漢字。cout<<"2. 顯示串 "<<endl;cout<<"3. 修改串 "<<endl;cout<<"4. 插入串 "<<endl;cout<<"5. 刪除串 "<<endl;cout<<"6. 查找串 "<<en

10、dl;cout<<"7. 求串長(zhǎng)度 "<<endl;cout<<"8. 結(jié)束程序 "<<endl;cout<<"="<<endl;int main()int flag=0,returnvalue,position,beginposition,endposition,length;char choice,choose,newstrmaxsize;string newstring;menu();while(1)cout<<" 請(qǐng)輸入選擇 :&qu

11、ot;cin>>choice;switch(choice)case '1':if(flag)cout<<" 數(shù)據(jù)已存在,是否覆蓋 ?(y/n)"cin>>choose;if(choose='N'|choose='n')cout<<" 數(shù)據(jù)沒有發(fā)生更改 !"<<endl;break;if(choose='Y'|choose='y')returnvalue=newstring.strcreate();if(returnv

12、alue=success)cout<<" 創(chuàng)建成功 !"<<endl;flag=1;elsecout<<" 輸入錯(cuò)誤 !"<<endl;elsereturnvalue=newstring.strcreate(); if(returnvalue=success)cout<<" 創(chuàng)建成功 !"<<endl;flag=1;break;case '2':if(flag=0)cout<<" 請(qǐng)先建立串 !"<<en

13、dl;elsenewstring.strtraverse();break;case '3':if(flag=0)cout<<" 請(qǐng)先建立串 !"<<endl;elsenewstring.strtraverse();cout<<" 請(qǐng)輸入要修改的初始位置 :"cin>>beginposition;cout<<" 請(qǐng)輸入要修改的終止位置 :" cin>>endposition;cout<<" 請(qǐng)輸入修改后的字符串 :"c

14、in>>newstr;returnvalue=newstring.strmodify(beginposition,endposition,newstr);if(returnvalue=success)cout<<" 修改成功 !"<<endl;newstring.strtraverse();if(returnvalue=overflow)cout<<"字符串的最大長(zhǎng)度為 "<<maxsize<<endl;cout<<"發(fā)生溢出,操作失敗 !"<&

15、lt;endl;if(returnvalue=range_error)cout<<" 位置錯(cuò)誤 ,操作失敗 !"<<endl;if(returnvalue=empty)cout<<" 字符串為空 ,操作失敗 !"<<endl;break;case '4':if(flag=0)cout<<" 請(qǐng)先建立串 !"<<endl;elsenewstring.strtraverse();cout<<" 請(qǐng)輸入要插入的位置 :"c

16、in>>position;cout<<" 請(qǐng)輸入要插入的字符串cin>>newstr;length=strlen(newstr);returnvalue=newstring.strinsert(position,newstr,length);if(returnvalue=success)cout<<" 插入成功 !"<<endl;newstring.strtraverse();if(returnvalue=overflow)cout<<" 字符串的最大長(zhǎng)度為 "<&l

17、t;maxsize<<endl;cout<<" 發(fā)生溢出,操作失敗 !"<<endl;if(returnvalue=range_error)cout<<" 位置錯(cuò)誤,操作失敗 !"<<endl;break;case '5':if(flag=0)cout<<" 請(qǐng)先建立串 !"<<endl;elsenewstring.strtraverse();cout<<" 請(qǐng)輸入要?jiǎng)h除的初始位置 :"cin>&g

18、t;beginposition;cout<<" 請(qǐng)輸入要?jiǎng)h除的終止位置 :"cin>>endposition;returnvalue=newstring.strdelete(beginposition,endposition);if(returnvalue=success)cout<<" 刪除成功 !"<<endl;newstring.strtraverse();if(returnvalue=range_error)cout<<" 位置錯(cuò)誤,操作失敗 !"<<en

19、dl;if(returnvalue=empty)cout<<" 字符串為空 ,操作失敗 !"<<endl;break;case '6':if(flag=0)cout<<" 請(qǐng)先建立串 !"<<endl;elsenewstring.strtraverse();cout<<" 請(qǐng)輸入要查找的字符串 :"cin>>newstr;position=newstring.strsearch(newstr);if(position>0)cout<<"已找到

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論