C語言基礎(chǔ) 模塊4 part2_第1頁
C語言基礎(chǔ) 模塊4 part2_第2頁
C語言基礎(chǔ) 模塊4 part2_第3頁
C語言基礎(chǔ) 模塊4 part2_第4頁
C語言基礎(chǔ) 模塊4 part2_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)組(二)模塊41 字符與字符串 2 字符數(shù)組 3 字符串處理函數(shù)4 二維字符數(shù)組5 應(yīng)用實(shí)例字符數(shù)據(jù)處理2符號常量:以指定符號代表其后的 “一串字符” 格式: #define 標(biāo)識符 常量1 字符與字符串一、字符型數(shù)據(jù)可以是任意類型常量字符常量:以 括起來的單個(gè)字符,開頭的字符序列。 例:a, A, n表示換行, r表示回車。字符串常量:用雙引號括起來的字符序列。 例:”Ch”,”123”等。長度不限,末尾加0字符變量:存放字符常量的變量,用char說明。31 字符與字符串(續(xù))二、字符串 串長:字符串中所包含的字符數(shù)。 串結(jié)束標(biāo)記:字符 0 稱為串結(jié)束標(biāo)記。C中的串以 0 結(jié)束。字符串在數(shù)

2、組中的存儲格式字符串可以存在一個(gè)一維數(shù)組中,字符串中的一個(gè)字符占用字符數(shù)組中一個(gè)字節(jié),具有數(shù)組特性。字符串實(shí)際占有單元的數(shù)量等于字符串長度+1。例如:要定義一個(gè)存放字符串“CHINA”的字符數(shù) 組c,應(yīng)定義為:char c6; 數(shù)組c在內(nèi)存中實(shí)際存放情況為:4CHINA0c0c1c2c3c4c5串長=5三、字符數(shù)據(jù)的輸入輸出 庫函數(shù): getchar( ),putchar(ch)從鍵盤上讀一個(gè)字符1 字符與字符串(續(xù)) 使用getchar( )時(shí),可以輸入任何字符,允許用戶根據(jù)自己的要求進(jìn)行控制與處理,串尾0要自己編程加入。其中ENTER接受為r(回車)。 格式化輸入輸出函數(shù): scanf(

3、);printf( );”%c” 5 格式: 數(shù)據(jù)類型 數(shù)組名維數(shù)說明;例:char a4,b10; char c34;表示a數(shù)組可以存放4個(gè)字符,c數(shù)組可以存放12個(gè)字符。 例:c34可存放三個(gè)字符串,每個(gè)字符串最多存放4個(gè)字符。 一維字符型數(shù)組作為一個(gè)字符串變量使用。 二維字符型數(shù)組相當(dāng)于一個(gè)字符串?dāng)?shù)組,每行存放 一個(gè)字符串。2 字符數(shù)組(續(xù)) 一、一維字符數(shù)組的定義二、字符數(shù)組的用途68-2 字符數(shù)組 三、一維字符數(shù)組的初始化用字符串對字符數(shù)組初始化,如:char ch6=CHINA;char ch6=CHINA; /* 省略 */char ch =CHINA; /* 省略長度值 */字

4、符數(shù)組初始化 用單個(gè)字符對字符數(shù)組初始化,如:char ch6=C,H,I,N,A,0;2 字符數(shù)組(續(xù))72 字符數(shù)組(續(xù)) 四、一維字符數(shù)組的引用如:char a10=CHINA2000”,b3=“123”;printf(“%cn”,a3);printf(“%sn”,a);對于字符數(shù)組,不僅可以引用它的數(shù)組元素,也可以引用整個(gè)數(shù)組。82 字符數(shù)組(續(xù)) static char a3; for (i=0;i3;i+) scanf( %c ,&ai); for (i=0;i3;i+) printf( %c ,ai); printf( n ); 輸入數(shù)據(jù)順序: d o s輸出數(shù)據(jù)順序: dos四

5、、字符數(shù)組的輸入與輸出單字符輸入輸出(用格式符c控制)9static char a7;scanf( %s ,a); 2 字符數(shù)組(續(xù)) 字符數(shù)組名指明數(shù)組首地址字符串輸入輸出(用格式符s控制)0不輸出只能輸入不包括空格、t和n的字符串自動在串尾加0printf( %sn ,a);10五、字符串在數(shù)組中的存儲格式 使用字符0作為字符串的結(jié)束標(biāo)記,就使得C語言對字符串的長度沒有具體的限制,但字符串的最大長度不能超過存儲它的字符數(shù)組的長度,否則會造成數(shù)組越界錯(cuò)誤。2 字符數(shù)組(完) 0是在字符串存入字符數(shù)組是由系統(tǒng)自動添加的,并不是字符串本身的一部分,在計(jì)算串長的時(shí)候并不包括 0。113 字符串處理

6、函數(shù)一、字符串輸入輸出函數(shù) gets (字符數(shù)組名); 由終端輸入字符串到字符數(shù)組,以換行結(jié)束 返回字符數(shù)組的首地址puts (字符數(shù)組名); 將以0結(jié)束的字符串輸出到終端 返回的函數(shù)值是字符數(shù)組的首地址123 字符串處理函數(shù)(續(xù))格式:strlen(x); 功能:返回x字符串中字符的個(gè)數(shù)(不包括字符串結(jié)束符)。x是字符串首地址,其形式可以是字符數(shù)組或字符指針,也可以是字符常量。二、求字符串長度的函數(shù)133 字符串處理函數(shù)(續(xù))格式:strcat(字符數(shù)組1,字符數(shù)組2); 功能:連接兩個(gè)字符數(shù)組中的字符串,將串2接在串1后,結(jié)果存放在字符數(shù)組1中,返回的函數(shù)值是字符數(shù)組1的首地址。字符數(shù)組1

7、的長度不可缺省,足夠大。三、字符串連接函數(shù)四、字符串復(fù)制函數(shù)格式:strcpy(字符數(shù)組1,字符數(shù)組2); 功能:將串2復(fù)制到串1數(shù)組中。140 xy.z程序#include void main( )char str1100,str2100;int i, j;printf (”Enter string 1:”);gets (str1);printf (”Enter string 2:”);gets (str2);for ( i=0; str1i!=0; i+ ) ; /* 確定0位置 */for ( j=0; (str1i=str2j) != 0; i+, j+ ) ;printf(”O(jiān)utp

8、ut string 1:%sn”, str1);例8 字符串連接。將串str2連接到串str1之后。根據(jù)字符串中 0 的位置進(jìn)行字符串連接。關(guān)鍵:要用str2的第1個(gè)字符覆蓋str1的串結(jié)束標(biāo)記0。aabcdefg0bcdefg0str2str1.算法:1、查找str1的串結(jié)束標(biāo)記02、從str1的0開始,將str2復(fù)制到str1。3 字符串處理函數(shù)(續(xù))15例9 字符串復(fù)制。將字符串 str1 拷貝到串 str2 中。沒有必要復(fù)制整個(gè)數(shù)組,根據(jù)字符串中 0 的位置,只對 0 前面的字符進(jìn)行復(fù)制。#include void main ( ) char str1100, str2100; int

9、 i; printf (Enter string 1:); gets (str1); /* 輸入字符串str1 */ for (i=0; (str2i=str1i)!=0; i+) ;/* 復(fù)制*/ printf(Output string 2:%sn, str2);ab.fg0ab.fg0str1str2.3 字符串處理函數(shù)(續(xù))163 字符串處理函數(shù)(續(xù))五、字符串比較函數(shù)格式:strcmp(字符數(shù)組1,字符數(shù)組2); 功能:比較串1和串2,返回結(jié)果為:0-相等,正數(shù)-串1大,負(fù)數(shù)-串2大”abc” 與 ”abc” ,相等”abcd” 與 ”abck”, ”abcd” 小”abc” 與 ”

10、ab”, ”abc” 大比較原則:按ASCII碼比較17例10 字符串比較。確定字符串大小的基本規(guī)則: 按照串中對應(yīng)位置字符的ASCII碼值的大小確定大小。例如:”abc” ”b” 因?yàn)樽址?a ”abadef” 因?yàn)樽址?c a #include ”stdio.h” void main( )char str1100, str2100; int i;printf (Enter string 1:); gets(str1);printf (Enter string 2:); gets(str2); for ( i=0; (str1i=str2i) & str1i!=0; i+);if ( str

11、1i=str2i ) printf (str1= =str2n);else if (str1istr2i) printf (str1str2n); elseprintf (str1str2n);3 字符串處理函數(shù)(續(xù))188-3 字符串處理函數(shù)六、大小寫字母的轉(zhuǎn)換 1 格式:strlwr(x) 功能:把地址為x的字符串中所有大寫字母轉(zhuǎn)換成小寫字母。x可以是字符數(shù)組或字符指針,也可以是字符串常量。調(diào)用形式: strlwr(x); 2 格式:strupr(x) 功能:把地址為x的字符串中所有小寫字母轉(zhuǎn)換成大寫字母。x可以是字符數(shù)組或字符指針,也可以是字符串常量。調(diào)用形式: strupr(x); 3

12、 字符串處理函數(shù)(完)198-2 字符數(shù)組 一、二維字符數(shù)組的定義如:char a25,b37;與二維數(shù)值數(shù)組定義相同,但數(shù)據(jù)類型為char4 二維字符數(shù)組208-2 字符數(shù)組 二、二維字符數(shù)組的初始化可以在定義的同時(shí)初始化,如: char a38=“str1“,”str2”,”string3”; char b 6=“s1“,”s2”,”str3”;二維字符數(shù)組初始化4 二維字符數(shù)組(續(xù))二維字符數(shù)組初始化在內(nèi)存的存儲str10000str20000string30a0a1a2a00218-2 字符數(shù)組 三、二維字符數(shù)組的引用如:(1) for (i=0;i3;i+) printf(“%sn”

13、,ai); (2) for (i=0;i3;i+) printf(“%cn”,aii); (3) for (i=0;i3;i+) printf(“%sn”,&aii+1);對于二維字符數(shù)組,每行可以看做一個(gè)字符數(shù)組。數(shù)組名ai??梢杂胊i引用i行的字符串,也可以用aij引用i行j列的字符。4 二維字符數(shù)組(完)輸出:(1) str1 (2) s (3) tr1 str2 t r2 strinf3 r ing322#include #include void main ( )char string 100, t;int i, j, n;gets ( string );n = strlen ( s

14、tring );for ( i=0; in-1; i+ ) /* 冒泡法排序 */for ( j=0; j stringj+1 ) t = stringj;stringj = stringj+1;stringj+1 = t;puts ( string );4 應(yīng)用實(shí)例例11 輸入一行字符,將其中的每個(gè)字符從小到大排列后輸出。23例12 輸入五個(gè)單詞,請將它們按從小到大的順序排列后輸出。 #include #include void main ( ) char str 520, t20; int i, j, n; printf (Enter string:n); for ( i=0; i5; i

15、+) /* 循環(huán)輸入5個(gè)字符串 */ gets ( stri ); for ( i=0; i4; i+ ) for (j=0; j 0 ) strcpy ( t, strj ); strcpy ( strj, strj+1); strcpy ( strj+1, t); printf(Result:n); for ( i=0; i5; i+ ) puts ( stri );4 應(yīng)用實(shí)例(續(xù))24例13 任意輸入一個(gè)3位整數(shù),取其各位數(shù)字的和,再取這個(gè)和被7除的余數(shù),輸出余數(shù)對應(yīng)的星期(英文單詞)。如:輸入123,(1+2+3)%7=6,則輸出saturday。 對3位整數(shù)n,拆分其百、十和個(gè)位的

16、方法: 百位:i=n/100; 十位:j=n/10%10; 個(gè)位:k=n%10;4 應(yīng)用實(shí)例(續(xù))25例13:#include “stdio.h”main( ) char week79 = Sunday, Monday,Tuesday, Wednesday,Thursday,Friday, Saturday ; int i,j,k,a,n; do printf(Please input a number:n); scanf(%d, &n); while(n999); i=n/100; j=n/10%10; k=n%10; a=(i+j+k)%7; printf(n%d %d+%d+%dweek

17、%d%sn,n,i,j,k,a,weeka);4 應(yīng)用實(shí)例(續(xù))26#include “stdio.h” #include “string.h” void main ( ) char str80, c; int i, j, n; printf (Enter string:); gets ( str ); n = strlen(str); for ( i=0, j=n-1; ij; i+, j- ) c = stri; stri = strj; strj = c; printf(Result:); puts ( str );4 應(yīng)用實(shí)例 例14 輸入一行字符串,將其反序后再輸出。27 #incl

18、ude “stdio.h” #include “string.h” void main ( ) char str180, str280, str80; int i, j, n; printf (Enter string1:); gets ( str1 ); printf (Enter string2:); gets ( str2); n = 0; for ( i=0,j=0; str1i!=0 & str2j!=0; ) if ( str1i str2j ) strn+ = str1i+; else strn+ = str2j+; while ( str1i!=0 ) strn+ = str1i+; while ( str2j!=0 ) strn+ = str2j+; strn=0; printf(Result:); puts ( str );4 應(yīng)用實(shí)例 例15 輸入兩個(gè)已經(jīng)按從小到大順序排列好的字符串,編

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論