




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
首頁學到現(xiàn)在,有什么體會?教學主題字符串處理函數(shù)教學目標通過本次課的學習,使學生掌握常用的字符串處理函數(shù)、求子串和串匹配算法。教學重點各種常用的字符串處理函數(shù)。教學難點
1、求子串的算法。
2、串的匹配算法。教案主要內(nèi)容
常用的字符串處理函數(shù)
求子串的運算
串的匹配算法字符串處理函數(shù)C語言提供了豐富的字符串處理函數(shù),大致可分為字符串的輸入、輸出、合并、修改、比較、轉(zhuǎn)換、復(fù)制、搜索幾類。用于輸入輸出的字符串函數(shù),在使用前應(yīng)包含頭文件stdio.h。使用其它字符串函數(shù),則應(yīng)包含頭文件string.h。返回單個字符的輸入/出函數(shù)單個字符的輸出函數(shù)
putchar(字符變量或字符常量);例如:
①
putchar(‘A’);
②charch=‘\n’;
putchar(ch);
單個字符的輸入函數(shù)字符變量=getchar();例如:
charch;
ch=getchar();返回字符串輸出函數(shù)(puts)格式:
puts(字符數(shù)組名);功能:把字符數(shù)組中的字符串輸出到顯示器,即在屏幕上顯示該字符串。說明:
在輸出時將字符串的結(jié)束標志‘\0’轉(zhuǎn)換成‘\n’,即輸出完字符串后換行。字符串輸出函數(shù)舉例源程序#include"stdio.h"voidmain(){charstr1[]="BASIC";charstr2[]="Program";puts(str1);puts(str2);}程序運行結(jié)果BASICProgramprintf(“%s\n”,str1);為什么會換行?運行程序(11_1)【問題1】寫出下面程序的運行結(jié)果。字符串輸入函數(shù)(gets)格式:
gets(字符數(shù)組名);功能:從標準輸入設(shè)備(鍵盤)上輸入一個字符串(一行)到字符數(shù)組,并且得到一個函數(shù)值。該函數(shù)值是字符數(shù)組的起始地址。說明:①一次調(diào)用只能輸入一個字符串。②gets函數(shù)不以空格作為字符串輸入結(jié)束的標志,而是以回車作為輸入結(jié)束。這是與scanf函數(shù)不同的。字符串輸入函數(shù)舉例#include"stdio.h"voidmain(){charst[15];
printf(“輸入一行字符:");
gets(st);
puts(st);}源程序【問題2】寫出下面程序的運行情況。程序運行情況①輸入thisisabook↙時,輸出結(jié)果是什么?thisisabook輸出結(jié)果運行程序(11_2)②把gets(st)改為scanf(“%s”,st),結(jié)果又如何?this輸出結(jié)果字符串連接函數(shù)(strcat)格式:
strcat(字符數(shù)組名1,字符數(shù)組名2);功能:把字符數(shù)組2中的字符串(連同尾部的’\0’)連接到字符數(shù)組1中字符串的后面,并刪去字符串1后的串結(jié)束標志’\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↙時,輸出結(jié)果是什么?MynameisZhangyi輸出結(jié)果運行程序(11_3)字符串拷貝函數(shù)(strcpy)格式:
strcpy(字符數(shù)組名1,字符數(shù)組名2);功能:把字符數(shù)組2中的字符串拷貝到字符數(shù)組1中。串結(jié)束標志“\0”也一同拷貝。說明:①字符數(shù)組1必須寫成數(shù)組名形式,字符數(shù)組2可以是數(shù)組名形式也可以是字符串常量。
②不能用賦值語句將一個字符串常量或字符數(shù)組直接賦給一個字符數(shù)組。例如:charstr1[20],str2[]=“program”;
str1=“program”;str1=str2;錯誤的用法字符串拷貝函數(shù)舉例源程序【問題4】寫出下面程序的運行情況。程序運行情況CLanguage輸出結(jié)果運行程序(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ù)返回值返回比較結(jié)果。
字符串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ù)組名)
功能:測字符串的實際長度(不含字符串結(jié)束標志‘\0’),并作為函數(shù)返回值。
測字符串長度函數(shù)舉例源程序【問題6】寫出下面程序的運行情況。程序運行情況運行程序(11_6)#include"string.h"voidmain(){
intk;charst[]="CLanguage";k=strlen(st);
printf(“字符串(%s)的長度為%d。\n",st,k);}字符串(CLanguage)的長度為10。輸出結(jié)果大小寫字母轉(zhuǎn)換函數(shù)將大寫字母轉(zhuǎn)換成小寫字母函數(shù)(strlwr)格式:
strlwr(字符數(shù)組名)
功能:將字符串的大寫字母轉(zhuǎn)換成小寫字母。
將小寫字母轉(zhuǎn)換成大寫字母函數(shù)(strupr)格式:
strupr(字符數(shù)組名)
功能:將字符串的小寫字母轉(zhuǎn)換成大寫字母。
大小寫字母轉(zhuǎn)換函數(shù)舉例源程序【問題7】寫出下面程序的運行情況。程序運行情況運行程序(11_7)轉(zhuǎn)換后的字符串為clanguage。再次轉(zhuǎn)換后的字符串為CLANGUAGE。輸出結(jié)果#include"string.h"voidmain(){charst[]="CLanguage";
strlwr(st);
printf("轉(zhuǎn)換后的字符串為%s。\n",st);
strupr(st);
printf("再次轉(zhuǎn)換后的字符串為%s。\n",st);}求子串的運算在字符串的運算中,有時需要從一個字符串中取出該串第i個字符開始、到第j個字符截止的連續(xù)子序列(其中0<i≤j≤串長),這就是取子串操作。求子串運算的實現(xiàn)分析假設(shè)從字符串sor中取出任一子串,放入字符串des中。子串在主串sor中的起始位置為start,結(jié)束位置為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)源程序返回串的匹配運算假設(shè)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次。匹配步驟如下:①設(shè)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,整個算法結(jié)束。④如果存在某個整數(shù)k(0≤k≤m-1),使得p[k]≠t[i+k],則立即中止后面的比較。⑤令i增加1。如果i等于n-m+1,則匹配失敗,整個算法結(jié)束;否則回到②進行下一輪的匹配。串匹配運算的實現(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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年韓語翻譯考試試題及答案
- 重慶2025自考行政管理社會學概論模擬題及答案
- 12.4日本明治維新說課稿-2024-2025學年統(tǒng)編版九年級歷史下冊
- 科學應(yīng)對自然災(zāi)害教學設(shè)計小學綜合實踐活動安徽大學版六年級上冊-安徽大學版
- 景觀生態(tài)濕地設(shè)計技術(shù)
- 2025年江蘇對口升學試卷及答案
- 2025年急救醫(yī)生考試試題及答案
- 景觀施工材料管理方法
- 計劃的實現(xiàn)教學設(shè)計初中心理健康龍教版九年級上冊-龍教版
- 高速公路擴容改造項目社會穩(wěn)定風險評估報告
- 2025年度國家電投校園招聘模擬試卷及答案詳解(歷年真題)
- 鋼廠吊裝安全培訓課件
- 德育教育 課題申報書
- 維生素D佝僂病課件
- 液壓實訓安全培訓課件
- 義齒行業(yè)安全教育培訓課件
- T-CALC 007-2025 重癥監(jiān)護病房成人患者人文關(guān)懷規(guī)范
- 政策議程多源流模型分析
- GB/T 17980.37-2000農(nóng)藥田間藥效試驗準則(一)殺線蟲劑防治胞囊線蟲病
- 血管活性藥物(ICU)課件
- “手電筒”模型-高考數(shù)學解題方法
評論
0/150
提交評論