版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
首頁學(xué)到現(xiàn)在,有什么體會(huì)?教學(xué)主題字符串處理函數(shù)教學(xué)目標(biāo)通過本次課的學(xué)習(xí),使學(xué)生掌握常用的字符串處理函數(shù)、求子串和串匹配算法。教學(xué)重點(diǎn)各種常用的字符串處理函數(shù)。教學(xué)難點(diǎn)
1、求子串的算法。
2、串的匹配算法。教案主要內(nèi)容
常用的字符串處理函數(shù)
求子串的運(yùn)算
串的匹配算法字符串處理函數(shù)C語言提供了豐富的字符串處理函數(shù),大致可分為字符串的輸入、輸出、合并、修改、比較、轉(zhuǎn)換、復(fù)制、搜索幾類。用于輸入輸出的字符串函數(shù),在使用前應(yīng)包含頭文件stdio.h。使用其它字符串函數(shù),則應(yīng)包含頭文件string.h。返回單個(gè)字符的輸入/出函數(shù)單個(gè)字符的輸出函數(shù)
putchar(字符變量或字符常量);例如:
①
putchar(‘A’);
②charch=‘\n’;
putchar(ch);
單個(gè)字符的輸入函數(shù)字符變量=getchar();例如:
charch;
ch=getchar();返回字符串輸出函數(shù)(puts)格式:
puts(字符數(shù)組名);功能:把字符數(shù)組中的字符串輸出到顯示器,即在屏幕上顯示該字符串。說明:
在輸出時(shí)將字符串的結(jié)束標(biāo)志‘\0’轉(zhuǎn)換成‘\n’,即輸出完字符串后換行。字符串輸出函數(shù)舉例源程序#include"stdio.h"voidmain(){charstr1[]="BASIC";charstr2[]="Program";puts(str1);puts(str2);}程序運(yùn)行結(jié)果BASICProgramprintf(“%s\n”,str1);為什么會(huì)換行?運(yùn)行程序(11_1)【問題1】寫出下面程序的運(yùn)行結(jié)果。字符串輸入函數(shù)(gets)格式:
gets(字符數(shù)組名);功能:從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)上輸入一個(gè)字符串(一行)到字符數(shù)組,并且得到一個(gè)函數(shù)值。該函數(shù)值是字符數(shù)組的起始地址。說明:①一次調(diào)用只能輸入一個(gè)字符串。②gets函數(shù)不以空格作為字符串輸入結(jié)束的標(biāo)志,而是以回車作為輸入結(jié)束。這是與scanf函數(shù)不同的。字符串輸入函數(shù)舉例#include"stdio.h"voidmain(){charst[15];
printf(“輸入一行字符:");
gets(st);
puts(st);}源程序【問題2】寫出下面程序的運(yùn)行情況。程序運(yùn)行情況①輸入thisisabook↙時(shí),輸出結(jié)果是什么?thisisabook輸出結(jié)果運(yùn)行程序(11_2)②把gets(st)改為scanf(“%s”,st),結(jié)果又如何?this輸出結(jié)果字符串連接函數(shù)(strcat)格式:
strcat(字符數(shù)組名1,字符數(shù)組名2);功能:把字符數(shù)組2中的字符串(連同尾部的’\0’)連接到字符數(shù)組1中字符串的后面,并刪去字符串1后的串結(jié)束標(biāo)志’\0’
。本函數(shù)返回值是字符數(shù)組1的首地址。說明:①字符數(shù)組1必須足夠大。字符串連接函數(shù)舉例#include"string.h"voidmain(){charst1[30]="Mynameis";charst2[10];
printf("請(qǐng)輸入姓名:\n");gets(st2);strcat(st1,st2);puts(st1);}源程序【問題3】寫出下面程序的運(yùn)行情況。程序運(yùn)行情況輸入Zhangyi↙時(shí),輸出結(jié)果是什么?MynameisZhangyi輸出結(jié)果運(yùn)行程序(11_3)字符串拷貝函數(shù)(strcpy)格式:
strcpy(字符數(shù)組名1,字符數(shù)組名2);功能:把字符數(shù)組2中的字符串拷貝到字符數(shù)組1中。串結(jié)束標(biāo)志“\0”也一同拷貝。說明:①字符數(shù)組1必須寫成數(shù)組名形式,字符數(shù)組2可以是數(shù)組名形式也可以是字符串常量。
②不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接賦給一個(gè)字符數(shù)組。例如:charstr1[20],str2[]=“program”;
str1=“program”;str1=str2;錯(cuò)誤的用法字符串拷貝函數(shù)舉例源程序【問題4】寫出下面程序的運(yùn)行情況。程序運(yùn)行情況CLanguage輸出結(jié)果運(yùn)行程序(11_4)#include"string.h"voidmain(){charst1[15],st2[]="CLanguage";strcpy(st1,st2);puts(st1);}字符串比較函數(shù)(strcmp)格式:
strcmp(字符數(shù)組名1,字符數(shù)組名2)
功能:按照ASCII碼順序(即字典順序)比較兩個(gè)數(shù)組中的字符串,并由函數(shù)返回值返回比較結(jié)果。
字符串1=字符串2,返回值=0;字符串1>字符串2,返回值>0;字符串1<字符串2,返回值<0。說明:①不能用比較運(yùn)算符直接比較兩個(gè)字符串。例如:charstr1[]=“progress”,str2[]=“program”;
if(str1!=str2)……錯(cuò)誤的用法字符串比較函數(shù)舉例源程序【問題5】寫出下面程序的運(yùn)行情況。程序運(yùn)行情況運(yùn)行程序(11_5)#include"string.h"voidmain(){intk;charst1[15],st2[]="CLanguage";
printf("請(qǐng)輸入一個(gè)字符串:\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ù)組名)
功能:測字符串的實(shí)際長度(不含字符串結(jié)束標(biāo)志‘\0’),并作為函數(shù)返回值。
測字符串長度函數(shù)舉例源程序【問題6】寫出下面程序的運(yùn)行情況。程序運(yùn)行情況運(yùn)行程序(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】寫出下面程序的運(yùn)行情況。程序運(yùn)行情況運(yùn)行程序(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);}求子串的運(yùn)算在字符串的運(yùn)算中,有時(shí)需要從一個(gè)字符串中取出該串第i個(gè)字符開始、到第j個(gè)字符截止的連續(xù)子序列(其中0<i≤j≤串長),這就是取子串操作。求子串運(yùn)算的實(shí)現(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】實(shí)現(xiàn)求子串運(yùn)算。求子串運(yùn)算的實(shí)現(xiàn)流程圖運(yùn)行程序(11_8)看源程序(11_8)源程序返回串的匹配運(yùn)算假設(shè)t和p是兩個(gè)給定的串,在t中尋找與p相同的子串的過程稱為模式匹配。一般t稱為正文串(text),p稱為模式串(pattern),t的長度大于p的長度。字串t為t[n],字串p為p[m],其中n、m分別為字串t和p的長度。串匹配運(yùn)算的實(shí)現(xiàn)分析【問題9】實(shí)現(xiàn)串匹配運(yùn)算。實(shí)現(xiàn)模式匹配的簡單算法:對(duì)于i=0,1,…,n-m
,依次進(jìn)行下面的匹配步驟,最多進(jìn)行n-m+1次。匹配步驟如下:①設(shè)i=0。②用p[0],p[1]…,p[m-1]依次與t[i],t[i+1],…,t[i+m-1]進(jìn)行比較。③如果p[0]=t[i],p[1]=t[i+1],…,p[m-1]=t[i+m-1],那么匹配成功,返回模式串在正文串中的位置i,整個(gè)算法結(jié)束。④如果存在某個(gè)整數(shù)k(0≤k≤m-1),使得p[k]≠t[i+k],則立即中止后面的比較。⑤令i增加1。如果i等于n-m+1,則匹配失敗,整個(gè)算法結(jié)束;否則回到②進(jìn)行下一輪的匹配。串匹配運(yùn)算的實(shí)現(xiàn)子函數(shù)流程圖運(yùn)行程序(11_9)看源程序(11_9)源程序串匹配運(yùn)算的實(shí)現(xiàn)主函數(shù)流程圖源程序運(yùn)行程序(11_9)看源程序(11_9)串匹配函數(shù)(strstr)格式:
strstr(字符數(shù)組名1,字符數(shù)組名2)
功能:在字符數(shù)組1中尋找與字符數(shù)組2相同的子串。如找到,則返回尋找到的位置;如找不到,則將NULL作為函數(shù)返回值。
串匹配函數(shù)舉例源程序【問題10】寫出下面程序的運(yùn)行情況。運(yùn)行情況運(yùn)行程序(11_10)#include"string.h"voidmain(){chart[30],p[10];puts(“請(qǐng)輸入正文串:”);gets(t);puts(“請(qǐng)輸入模式串:”);gets(p);if(strstr(t,p)!=NULL)
printf(“
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編版五年級(jí)語文上冊教學(xué)計(jì)劃
- 做2022銷售的工作總結(jié)怎么寫10篇
- 《烈火英雄》觀后感
- 語文教師個(gè)人教學(xué)工作計(jì)劃
- 《簡愛》寒假讀書日記10篇
- 2022年的銷售工作計(jì)劃
- 學(xué)生會(huì)辭職報(bào)告模板合集七篇
- 普通高中化學(xué)教案教學(xué)范文
- 關(guān)于工作方案4篇
- 公司學(xué)習(xí)心得體會(huì)15篇
- 食用堿檢測報(bào)告
- 細(xì)胞核的結(jié)構(gòu)和功能說課稿
- 12CM27型連續(xù)采煤機(jī)電氣系統(tǒng)
- 招標(biāo)代理成果文件質(zhì)量保證措施
- 石油英語詞匯
- 《夜宿山寺》-完整版課件
- 滬教牛津版八年級(jí)上冊初二英語期末測試卷(5套)
- 北京市海淀區(qū)2020-2021學(xué)年度第一學(xué)期期末初三物理檢測試卷及答案
- 家庭室內(nèi)裝飾裝修工程保修單
- 小學(xué)語文課堂提問有效性策略研究方案
- 物業(yè)上門維修收費(fèi)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論