




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1,第10章 字符串,內(nèi)容 一維字符數(shù)組 一維數(shù)組與指針 字符串的輸入與輸出 字符串?dāng)?shù)組的應(yīng)用,2,1 字符數(shù)組,一級(jí)字符數(shù)組的定義 char 數(shù)組名下標(biāo)表達(dá)式;,例: char a6 =“china“; char b6 = “china“; char c = “china“;,注: 以字符串方式賦值時(shí),必須保證數(shù)組元素個(gè)數(shù)大于字符數(shù) 數(shù)組元素個(gè)數(shù)字符個(gè)數(shù)+1,6,結(jié)束符,3,2 字符數(shù)組的引用,一維數(shù)組的引用:數(shù)組名下標(biāo)表達(dá)式 二維數(shù)組的引用:數(shù)組名行下標(biāo)表達(dá)式列下標(biāo)表達(dá)式,#include main() char c15; char c255; c10=a; c11=b; c201=A; c211=B; printf(“%c,%c,%c,%cn“,c10,c11, c201,c211); getch(); ,c20, c21); 行地址,4,2、使用字符串常量給字符數(shù)組賦初值,C語言將字符串作為字符數(shù)組來處理,即,用一個(gè)一維 數(shù)組來存放一個(gè)字符串。 如,用c100存放字符串“store“ 字符串長度用字符串結(jié)束標(biāo)志(即0)衡量。即遇到字 符0時(shí), 表示字符串結(jié)束,注意: static char c10; 則c0,c1,c9初值均為0 但若char c10; 則c0,c1,.,c9的值是未知的,char d33= ,*, ,*, ,*, , *, ;,5,例: 字符數(shù)組的輸入與輸出 #include int main ( ) char c6 ; for(int i=0;i6;i+) scanf(“%c”, ,6,4、字符數(shù)組的輸出,1、逐個(gè)字符形式輸出:,A)printf(“%c%c%c%c%c “,a0,a1,a2,a3,a4); B)for ( i = 0; ai!=0; i+) putchar ( ai );,2、以字符串形式輸出:,例:char a100 = “china“; printf (“%s”, a ); 對(duì)于%s,無論數(shù)組元素有多少只要遇到0便結(jié)束,數(shù)組名 (首地址),7,注:與%s對(duì)應(yīng)的是地址。對(duì)一維,數(shù)組名就是地址,對(duì)二維數(shù)組,只寫行下標(biāo)時(shí)是地址 如上例中的 star0,star1,,例2:char star34 = “*“, “*“, “*“; printf (“%sn%sn%sn“, star0, star1, star2 );,行首地址,例3:char a5 = c, h, i, n,a; printf (“%s“, a );,結(jié)果為: * * *,a0 不能輸出數(shù)組元素名,8,例:while (c=getchar()!=n) ai+ = c;,例:scanf (“%s“, a );,注:用%s輸入時(shí),遇空格便結(jié)束輸入,四、字符數(shù)組的輸入,1、以字符形式輸入:,2、以字符串形式輸入:,例:char str15, str25, str35; scanf ( “%s%s%s“, str1, str2, str3);,數(shù)組名 (地址),計(jì)劃: how are you?Hello word!Thank you!,str1 str2 str3,9,5、字符串處理函數(shù),1、gets (a) scanf ( “%sn”,a),從鍵盤讀入一個(gè)字符串(以回車結(jié)束)放到數(shù)組中,函數(shù)值是字符數(shù)組的起始地址,2、puts (字符數(shù)組名),將數(shù)組中的字符串輸出到終端上,并輸出一個(gè)換行符。,puts ( str ) 與 printf ( “%sn”, str) 等價(jià),允許輸入空白,#include #include ,必須是以0結(jié)束的字符序列,10,例:10-11b #include #include int main( ) char c; gets(c ); puts(c); return 0; ,/*例:*/ #include #include int main( ) char c=china; puts(c); return 0; ,11,3、strcmp(字符串1,字符串2),比較兩個(gè)字符串(ASCII碼)的大小, 結(jié)果: 字符串1 字符串2時(shí) 正數(shù) 字符串1 = 字符串2時(shí) 0 字符串1 字符串2時(shí) 負(fù)數(shù),例: x = strcmp (“abc“, “ABC“); y= strcmp (“AX“, “AX“); z= strcmp (“123“, “456“);,兩個(gè)字符串比較大小,不能用關(guān)系運(yùn)算,即對(duì)字符串的比較、拷貝、連接 都必須用函數(shù)!,例: str1= =str2 () strcmp(str1,str2)= =0 (),12,4、strcpy (字符數(shù)組1, 字符串常量/字符數(shù)組2),將字符串或字符數(shù)組2中的字符串拷貝到字 符數(shù)組1中。,注: (1) 字符數(shù)組1的長度字符串/字符數(shù)組2中字符串的長度+1。 (2) 拷貝時(shí)連同0一起拷貝,scanf (“%s“, s1); strcpy (s2, s1);,S1:,S2:,13,5、strcat (字符數(shù)組1, 字符串常量/字符數(shù)組2),將字符串或字符數(shù)組2連接到字符數(shù)組1的字符串的后面,并存放在字符數(shù)組1中,Str1:,Str1:,Str2:,strcat ( str1, str2);,14,其他函數(shù): strncpy(str1, str2, n) 最多復(fù)制n個(gè)字符 strncat(str1, str2, n) 最多將n個(gè)字符連接到str1中 strncmp(str1, str2, n) 只比較前n個(gè)字符 stricmp(str1, str2) 比較時(shí)忽略大小寫 strnicmp(str1, str2, n) 只比較前n個(gè)字符, 忽略大小寫 (見string.h),例: char c120,ch20; gets(ch); strcpy(c1,ch); puts(ch); puts(c1);,若輸入:I am a student. 則輸出:I am a student. I am a student.,strncpy(c1,ch,6);,I am a,15,6、strlen (字符數(shù)組名/字符串常量),返回字符串的長度(不包括結(jié)束符0),例 :strlen (“china“) 值為5,7、strlwr (字符串) 將字符串中大寫字母轉(zhuǎn)換成小寫字母,8、strupr (字符串) 將字符串中小寫字母轉(zhuǎn)換成大寫字母,自己練習(xí)這三個(gè)函數(shù)的用法,16,10.4.6 字符數(shù)組應(yīng)用舉例,例1字符串排序,要求輸入5個(gè)學(xué)生的名字,按字母升序輸出: int main() char name510,buff100; int i,j,k,n=0; for(i=0;i10) printf(“the length of the name is larger than 10n”); continue; strcpy(namei,buff); ,for (j=0;j0) k=I; if(k!=5-j) strcpy(buff,namek); strcpy(namek,name5-j); strcpy(name5-j,buff); for(i=0;i5;i+) printf(“%sn”,namei); return 0; ,17,補(bǔ)充例2:任輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞(以空格分隔)。,算法: 輸入字符串; 找第一個(gè)非空字符; 計(jì)數(shù); 跳過本單詞,即尋找空格或0; 未結(jié)束則轉(zhuǎn); 否則打印個(gè)數(shù)。,輸入: -We-are-students.,18,/*10-8 a 輸入一行字,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞間是空格分開*/,#include void main ( ) char c; int i = 0 ,num = 0 ,word=0; char str81; gets ( str ); for(i=0;(c=stri)!=0;i+) if ( c = ) word=0; else if(word=0) word=1; num+; printf (“共 %d 個(gè)單詞n“, num); ,書例P139 算法1: 1.空格決定單詞數(shù)目,空格不 是單詞word=0 2.如果字符為非空格,前面 是空格,則一個(gè)單詞出現(xiàn) word=1,num+ 3. 如果word=1,c!= ,說明還是 剛才單詞的字符,num不累加,19,/*10-8 算法2:輸入一行字,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞間是空格分開*/ #include void main (
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國自由飛行包行業(yè)市場占有率及投資前景評(píng)估規(guī)劃報(bào)告
- 2025至2030中國自動(dòng)水龍頭行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 美妝品牌趨勢引領(lǐng)者:探索零廢棄美妝品牌的行業(yè)未來
- 學(xué)校營養(yǎng)餐計(jì)劃的科學(xué)食譜教學(xué)手冊(cè)
- 2025至2030中國能源行業(yè)市場發(fā)展現(xiàn)狀及前景趨勢與行業(yè)深度研究及發(fā)展前景投資評(píng)估分析
- 2025至2030中國聚苯并咪唑(PBI)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國老年生活用品行業(yè)市場深度調(diào)研及發(fā)展趨勢與投資價(jià)值報(bào)告
- 2025至2030中國美容口服液行業(yè)市場占有率及投資前景評(píng)估規(guī)劃報(bào)告
- 北師大版六年級(jí)數(shù)學(xué)下冊(cè)線上復(fù)習(xí)計(jì)劃
- 2025至2030中國網(wǎng)站運(yùn)營行業(yè)市場深度研究與戰(zhàn)略咨詢分析報(bào)告
- 電梯日管控、周排查、月調(diào)度內(nèi)容表格
- 全過程造價(jià)咨詢項(xiàng)目保密及廉政執(zhí)業(yè)措施
- 游戲策劃師招聘筆試題與參考答案2025年
- 設(shè)計(jì)vi合同模板
- 馬工程《文學(xué)理論》
- 小學(xué)信息技術(shù)四年級(jí)下冊(cè)第7課《瀏覽網(wǎng)上信息》教案
- 2024年檔案知識(shí)競賽考試題庫300題(含答案)
- 鉆井及井下作業(yè)井噴事故典型案例
- 縣鄉(xiāng)教師選調(diào)進(jìn)城考試-教育法律法規(guī)題庫含答案(突破訓(xùn)練)
- 建筑工地安全事故報(bào)告
評(píng)論
0/150
提交評(píng)論