C與數(shù)據(jù)結構第11次課-字符串處理函數(shù)_第1頁
C與數(shù)據(jù)結構第11次課-字符串處理函數(shù)_第2頁
C與數(shù)據(jù)結構第11次課-字符串處理函數(shù)_第3頁
C與數(shù)據(jù)結構第11次課-字符串處理函數(shù)_第4頁
C與數(shù)據(jù)結構第11次課-字符串處理函數(shù)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

首頁學到現(xiàn)在,有什么體會?教學主題字符串處理函數(shù)教學目標通過本次課的學習,使學生掌握常用的字符串處理函數(shù)、求子串和串匹配算法。教學重點各種常用的字符串處理函數(shù)。教學難點

1、求子串的算法。

2、串的匹配算法。教案主要內(nèi)容

常用的字符串處理函數(shù)

求子串的運算

串的匹配算法字符串處理函數(shù)C語言提供了豐富的字符串處理函數(shù),大致可分為字符串的輸入、輸出、合并、修改、比較、轉換、復制、搜索幾類。用于輸入輸出的字符串函數(shù),在使用前應包含頭文件stdio.h。使用其它字符串函數(shù),則應包含頭文件string.h。返回單個字符的輸入/出函數(shù)單個字符的輸出函數(shù)

putchar(字符變量或字符常量);例如:

putchar(‘A’);

②charch=‘\n’;

putchar(ch);

單個字符的輸入函數(shù)字符變量=getchar();例如:

charch;

ch=getchar();返回字符串輸出函數(shù)(puts)格式:

puts(字符數(shù)組名);功能:把字符數(shù)組中的字符串輸出到顯示器,即在屏幕上顯示該字符串。說明:

在輸出時將字符串的結束標志‘\0’轉換成‘\n’,即輸出完字符串后換行。字符串輸出函數(shù)舉例源程序#include"stdio.h"voidmain(){charstr1[]="BASIC";charstr2[]="Program";puts(str1);puts(str2);}程序運行結果BASICProgramprintf(“%s\n”,str1);為什么會換行?運行程序(11_1)【問題1】寫出下面程序的運行結果。字符串輸入函數(shù)(gets)格式:

gets(字符數(shù)組名);功能:從標準輸入設備(鍵盤)上輸入一個字符串(一行)到字符數(shù)組,并且得到一個函數(shù)值。該函數(shù)值是字符數(shù)組的起始地址。說明:①一次調(diào)用只能輸入一個字符串。②gets函數(shù)不以空格作為字符串輸入結束的標志,而是以回車作為輸入結束。這是與scanf函數(shù)不同的。字符串輸入函數(shù)舉例#include"stdio.h"voidmain(){charst[15];

printf(“輸入一行字符:");

gets(st);

puts(st);}源程序【問題2】寫出下面程序的運行情況。程序運行情況①輸入thisisabook↙時,輸出結果是什么?thisisabook輸出結果運行程序(11_2)②把gets(st)改為scanf(“%s”,st),結果又如何?this輸出結果字符串連接函數(shù)(strcat)格式:

strcat(字符數(shù)組名1,字符數(shù)組名2);功能:把字符數(shù)組2中的字符串(連同尾部的’\0’)連接到字符數(shù)組1中字符串的后面,并刪去字符串1后的串結束標志’\0’

。本函數(shù)返回值是字符數(shù)組1的首地址。說明:①字符數(shù)組1必須足夠大。字符串連接函數(shù)舉例#include"string.h"voidmain(){charst1[30]="Mynameis";charst2[10];

printf("請輸入姓名:\n");gets(st2);strcat(st1,st2);puts(st1);}源程序【問題3】寫出下面程序的運行情況。程序運行情況輸入Zhangyi↙時,輸出結果是什么?MynameisZhangyi輸出結果運行程序(11_3)字符串拷貝函數(shù)(strcpy)格式:

strcpy(字符數(shù)組名1,字符數(shù)組名2);功能:把字符數(shù)組2中的字符串拷貝到字符數(shù)組1中。串結束標志“\0”也一同拷貝。說明:①字符數(shù)組1必須寫成數(shù)組名形式,字符數(shù)組2可以是數(shù)組名形式也可以是字符串常量。

②不能用賦值語句將一個字符串常量或字符數(shù)組直接賦給一個字符數(shù)組。例如:charstr1[20],str2[]=“program”;

str1=“program”;str1=str2;錯誤的用法字符串拷貝函數(shù)舉例源程序【問題4】寫出下面程序的運行情況。程序運行情況CLanguage輸出結果運行程序(11_4)#include"string.h"voidmain(){charst1[15],st2[]="CLanguage";strcpy(st1,st2);puts(st1);}字符串比較函數(shù)(strcmp)格式:

strcmp(字符數(shù)組名1,字符數(shù)組名2)

功能:按照ASCII碼順序(即字典順序)比較兩個數(shù)組中的字符串,并由函數(shù)返回值返回比較結果。

字符串1=字符串2,返回值=0;字符串1>字符串2,返回值>0;字符串1<字符串2,返回值<0。說明:①不能用比較運算符直接比較兩個字符串。例如:charstr1[]=“progress”,str2[]=“program”;

if(str1!=str2)……錯誤的用法字符串比較函數(shù)舉例源程序【問題5】寫出下面程序的運行情況。程序運行情況運行程序(11_5)#include"string.h"voidmain(){intk;charst1[15],st2[]="CLanguage";

printf("請輸入一個字符串:\n");gets(st1);k=strcmp(st1,st2);if(k==0)printf("%s與%s相等。\n",st1,st2);if(k>0)printf("%s大于%s。\n",st1,st2);if(k<0)printf("%s小于%s。\n",st1,st2);}測字符串長度函數(shù)(strlen)格式:

strlen(字符數(shù)組名)

功能:測字符串的實際長度(不含字符串結束標志‘\0’),并作為函數(shù)返回值。

測字符串長度函數(shù)舉例源程序【問題6】寫出下面程序的運行情況。程序運行情況運行程序(11_6)#include"string.h"voidmain(){

intk;charst[]="CLanguage";k=strlen(st);

printf(“字符串(%s)的長度為%d。\n",st,k);}字符串(CLanguage)的長度為10。輸出結果大小寫字母轉換函數(shù)將大寫字母轉換成小寫字母函數(shù)(strlwr)格式:

strlwr(字符數(shù)組名)

功能:將字符串的大寫字母轉換成小寫字母。

將小寫字母轉換成大寫字母函數(shù)(strupr)格式:

strupr(字符數(shù)組名)

功能:將字符串的小寫字母轉換成大寫字母。

大小寫字母轉換函數(shù)舉例源程序【問題7】寫出下面程序的運行情況。程序運行情況運行程序(11_7)轉換后的字符串為clanguage。再次轉換后的字符串為CLANGUAGE。輸出結果#include"string.h"voidmain(){charst[]="CLanguage";

strlwr(st);

printf("轉換后的字符串為%s。\n",st);

strupr(st);

printf("再次轉換后的字符串為%s。\n",st);}求子串的運算在字符串的運算中,有時需要從一個字符串中取出該串第i個字符開始、到第j個字符截止的連續(xù)子序列(其中0<i≤j≤串長),這就是取子串操作。求子串運算的實現(xiàn)分析假設從字符串sor中取出任一子串,放入字符串des中。子串在主串sor中的起始位置為start,結束位置為end,則取子串操作就是將

sor[start-1],sor[start],…,sor[end-1]依次賦給

des[0],des[1],…,des[end-start]【問題8】實現(xiàn)求子串運算。求子串運算的實現(xiàn)流程圖運行程序(11_8)看源程序(11_8)源程序返回串的匹配運算假設t和p是兩個給定的串,在t中尋找與p相同的子串的過程稱為模式匹配。一般t稱為正文串(text),p稱為模式串(pattern),t的長度大于p的長度。字串t為t[n],字串p為p[m],其中n、m分別為字串t和p的長度。串匹配運算的實現(xiàn)分析【問題9】實現(xiàn)串匹配運算。實現(xiàn)模式匹配的簡單算法:對于i=0,1,…,n-m

,依次進行下面的匹配步驟,最多進行n-m+1次。匹配步驟如下:①設i=0。②用p[0],p[1]…,p[m-1]依次與t[i],t[i+1],…,t[i+m-1]進行比較。③如果p[0]=t[i],p[1]=t[i+1],…,p[m-1]=t[i+m-1],那么匹配成功,返回模式串在正文串中的位置i,整個算法結束。④如果存在某個整數(shù)k(0≤k≤m-1),使得p[k]≠t[i+k],則立即中止后面的比較。⑤令i增加1。如果i等于n-m+1,則匹配失敗,整個算法結束;否則回到②進行下一輪的匹配。串匹配運算的實現(xiàn)子函數(shù)流程圖運行程序(11_9)看源程序(11_9)源程序串匹配運算的實現(xiàn)主函數(shù)流程圖源程序運行程序(11_9)看源程序(11_9)串匹配函數(shù)(strstr)格式:

strstr(字符數(shù)組名1,字符數(shù)組名2)

功能:在字符數(shù)組1中尋找與字符數(shù)組2相同的子串。如找到,則返回尋找到的位置;如找不到,則將NULL作為函數(shù)返回值。

串匹配函數(shù)舉例源程序【問題10】寫出下面程序的運行情況。運行情況運行程序(11_10)#include"string.h"voidmain(){chart[30],p[10];puts(“請輸入正文串:”);gets(t);puts(“請輸入模式串:”);gets(p);if(strstr(t,p)!=NULL)

printf(“

溫馨提示

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

評論

0/150

提交評論