一維字符數(shù)組(精).ppt_第1頁
一維字符數(shù)組(精).ppt_第2頁
一維字符數(shù)組(精).ppt_第3頁
一維字符數(shù)組(精).ppt_第4頁
一維字符數(shù)組(精).ppt_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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“ 字符串長(zhǎng)度用字符串結(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的長(zhǎng)度字符串/字符數(shù)組2中字符串的長(zhǎng)度+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ù)組名/字符串常量),返回字符串的長(zhǎng)度(不包括結(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論