數據結構-實驗5-字符串分割處理_第1頁
數據結構-實驗5-字符串分割處理_第2頁
數據結構-實驗5-字符串分割處理_第3頁
數據結構-實驗5-字符串分割處理_第4頁
數據結構-實驗5-字符串分割處理_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上1、 實驗目的(1) 掌握字符串的存儲方法;(2) 掌握英文句子按單詞和標點符號分割的方法;(3) 掌握算術表達式按運算對象和運算符(只涉及+、-、*、/)分割的方法。2、 實驗內容(1) 輸入英文句子,如This is a string 存入數組:0123Thisisastring0則運行程序后分割如下: 0This01is02a03string0(2) 輸入算術表達式,如:2*3+6/3. 存入數組。則運行程序后分割如下: 0201*02303+04605/06307.03、 實驗要求(1) 用C(C+)語言完成算法設計和程序設計。(2) 上機調試通過實驗程序。(

2、3) 分別輸入英語句子和算術表達式記錄程序運行的結果。(4) 給出具體的算法分析,包括時間復雜度和空間復雜度等。(5) 撰寫實驗報告(把輸入實驗數據及運行結果用抓圖的形式粘貼到實驗報告上)。4、 實驗步驟與源程序 實驗步驟先從具體的問題中抽象出適當的數學模型,然后設計出相應的算法,其中,需要設計一個主函數來實現菜單的輸出,設計另外幾個函數來求分別實現空格分割字符串,判斷+、-、*、/、.,分割字符串直到結束,列菜單等,最后,串接函數,并調試程序,在調試的時候,我先進行英文句子的輸入,實現單詞和標點符號的分割,再進行算術表達式的輸入,實現實現運算對象和運算符的分割,多次調試后,發現沒有問題,得出

3、實驗結果,并截圖。 源代碼#include <stdio.h>#include <stdlib.h>#include <string.h>void split1() / 空格分割法 char s1000;char line255255;printf(" 請輸入一組字符串:"); gets(s); int i=0,n=0,k;dok=0;while(sn=' ') n+;for(;sn!='0'&&sn!=' '&&sn!='n'n+,k+) l

4、ineik=sn; lineik='0' i+;while(sn!='0');printf(" 分割后的字符串數組:n");int j;for(j=0;j<i;j+) / 輸出字符串數組 puts(linej);system("pause");int operators(char op) switch(op) case '+': case '-': case '*': case '/': case '=': case '.'

5、;: return 1; / 是運算符 default: return 0; / 不是運算符int token(char *str1,char *str2,int pos) int i,j; i=pos; / 從分割位置開始 while(str1i=' ') / 跳過空字符 i+; if(str1i!='0') / 不是字符串結束 j=0; / 找下一個空格符 while(str1i!='0' && str1i!=' ') str2j=str1i; / 拷貝非空格符 if(operators(str1i) / 是不

6、是運算符if(j>0) / 不是返回之前的字符串 str2j='0' return i;else / 是返回運算符 str2j+1='0' return i+1; i+; j+; str2j='0' / 分割字符串結束字符 return i; / 返回目前位置elsereturn -1; / 分割結束void split2() / 多分隔符分割法char string255; / 字符串數組聲明char token_string255; / 分割字符串聲明int pos; / 分割位置printf("請輸入一組字符串或算術表達式:

7、");gets(string); / 讀取字符串pos=0; / 設置分割位置初值printf("經過字符串分割后:n");while(pos=token(string,token_string,pos)!=-1) / 分割字符串直到字符串結束printf("%sn",token_string); / 輸出各分割字符串system("pause");int sel;void select() / 菜單 system("cls"); / 清屏 printf("n"); printf(&q

8、uot;t 字 符 串 分 割 程 序 n"); printf("t*n"); printf("t* 1.分割字符串分割 *n"); printf("t* 2.算術表達式分割 *n"); printf("t* 3.退 出 *n"); printf("t*n"); printf("t 請選擇(1-3):"); scanf("%d",&sel); getchar();void main() for(;) select(); switch(se

9、l) case 1:split1();break;case 2:split2();break;case 3:exit(0);break;default:printf(" 選項不存在,請重新選擇!n");system("pause"); 5、 測試數據與實驗結果(可以抓圖粘貼)(1)菜單顯示:專心-專注-專業(2)字符串分割:(3)算術表達式分割:6、 結果分析與實驗體會本次實驗是參考了范例程序,經過自己的改寫,從而實現要求。先做簡單的輸出,一步步的再做其它格式的設置。其中,范例程序中用到了“system("pause");”和“system("cls");”語句,實現提示繼續操作與清屏,尤其是在清屏的時候,我覺得非常好用,往常稍大的程序需要反復循環操作和調試,界面看起來就非常的繁瑣,有了這條語句,就可以輕松實現操作界面的整潔化了。還有,字符串的輸入,注意gets和scanf的區別,在實驗的過程中,我加深了對字符串各種操作的理解,覺得串這種數據結構

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論