C語(yǔ)言chap多維數(shù)組_第1頁(yè)
C語(yǔ)言chap多維數(shù)組_第2頁(yè)
C語(yǔ)言chap多維數(shù)組_第3頁(yè)
C語(yǔ)言chap多維數(shù)組_第4頁(yè)
C語(yǔ)言chap多維數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言chap多維數(shù)組2一維數(shù)組元素的引用一維數(shù)組元素的引用 C不允許對(duì)數(shù)組進(jìn)行動(dòng)態(tài)定義。以下作法是錯(cuò)誤的。不允許對(duì)數(shù)組進(jìn)行動(dòng)態(tài)定義。以下作法是錯(cuò)誤的。 int n; scanf(“%d”,&n); int an; 數(shù)組必須先定義,然后再使用。數(shù)組必須先定義,然后再使用。C的數(shù)組元素只能逐個(gè)引用的數(shù)組元素只能逐個(gè)引用而不能一次引用整個(gè)數(shù)組。而不能一次引用整個(gè)數(shù)組。 一維數(shù)組元素的表示形式為:一維數(shù)組元素的表示形式為: 數(shù)組名數(shù)組名下標(biāo)下標(biāo)下標(biāo)可以是整型常量或整型表達(dá)式。下標(biāo)可以是整型常量或整型表達(dá)式。例例7.1 main( ) int i,a10; for (i=0; i=0; i-)

2、 printf(“%2d”,a i); 輸出結(jié)果:輸出結(jié)果:10 9 8 7 6 5 4 3 2 13一維數(shù)組的初始化一維數(shù)組的初始化賦值語(yǔ)句和輸入語(yǔ)句均可使數(shù)組中的元素賦初值,但占用運(yùn)賦值語(yǔ)句和輸入語(yǔ)句均可使數(shù)組中的元素賦初值,但占用運(yùn)行時(shí)間。簡(jiǎn)捷的方法是在程序運(yùn)行之前使數(shù)組初始化。行時(shí)間。簡(jiǎn)捷的方法是在程序運(yùn)行之前使數(shù)組初始化。對(duì)數(shù)組元素初始化的方法有:對(duì)數(shù)組元素初始化的方法有:1) 在定義數(shù)組時(shí)對(duì)數(shù)組元素賦以初值。如:在定義數(shù)組時(shí)對(duì)數(shù)組元素賦以初值。如: static int a10=0,1,2,3,4,5,6,7,8,9;說(shuō)明:說(shuō)明: 依次賦予數(shù)組元素的初值必須用依次賦予數(shù)組元素的初值

3、必須用 括起來(lái)。括起來(lái)。 “static”是是C的一個(gè)關(guān)鍵字,意為的一個(gè)關(guān)鍵字,意為“靜態(tài)存儲(chǔ)靜態(tài)存儲(chǔ)”。C規(guī)定只有靜態(tài)存規(guī)定只有靜態(tài)存儲(chǔ)儲(chǔ)(static)數(shù)組和外部存儲(chǔ)數(shù)組和外部存儲(chǔ)(extern)數(shù)組才能初始化。數(shù)組才能初始化。2) 可以只給一部分元素賦值。如:可以只給一部分元素賦值。如: static int a10=0,1,2,3,4;3) 在在C中系統(tǒng)會(huì)自動(dòng)對(duì)所定義的靜態(tài)數(shù)組的每個(gè)元素賦初值中系統(tǒng)會(huì)自動(dòng)對(duì)所定義的靜態(tài)數(shù)組的每個(gè)元素賦初值0。4) 對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。如:對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。如: static int a5=1,2,3,4

4、,5;可以寫(xiě)成:可以寫(xiě)成: static int a =1,2,3,4,5;例例7.2 將一個(gè)十進(jìn)制正整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)。將一個(gè)十進(jìn)制正整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)。main( ) int i, k, r, x, b16; printf(“Enter an integer x :”); scanf(“%d”,&x); printf(“%6d binary number is :n”,x); k = -1; do r =x%2; b+k= r ; x/=2; while (x != 0); for ( i=k; i=0; i-) printf(“%d”,bi); printf(“n”);例7.3

5、用冒泡法將用冒泡法將10個(gè)數(shù)按從小到大排序。個(gè)數(shù)按從小到大排序。當(dāng)有當(dāng)有n個(gè)數(shù)時(shí)需要作個(gè)數(shù)時(shí)需要作n1趟趟這樣的搜索,每趟搜索要這樣的搜索,每趟搜索要作作n1次比較。次比較。main( ) int i, j,t,a11; printf(“input 10 numbers :n”); for (i=1; i11; i+) scanf(“%d”,&ai); printf(“n”); for ( j=1; j=9; j+) for ( i=1; iai+1) t=ai; ai=ai+1; ai+1= t; printf(“the sorted numbers :n”); for (i=1;

6、i11; i+) printf(“%d ”,ai);7.2. 二維數(shù)組二維數(shù)組語(yǔ)句形式語(yǔ)句形式: 類(lèi)型說(shuō)明符類(lèi)型說(shuō)明符 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式1 常量表達(dá)式常量表達(dá)式2如:如:float a34;定義定義a是一個(gè)是一個(gè)3x4 (3行行4列列)的數(shù)組,即的數(shù)組,即a數(shù)組有數(shù)組有12個(gè)元素。個(gè)元素。但不得寫(xiě)成:但不得寫(xiě)成:float a3,4;注意:注意: 二維數(shù)組中元素的排列順序?yàn)榘葱邪戳?。即存放完第二維數(shù)組中元素的排列順序?yàn)榘葱邪戳?。即存放完? 行的行的元素后再接著存放第元素后再接著存放第 2 行的元素,依次類(lèi)推。行的元素,依次類(lèi)推。 C允許定義多維數(shù)組。如:允許定義多維數(shù)組。如:

7、 float a345;static int a34=1,5,9;static int a34=1,0,6,0,0,11;static int a34=1,5,6;static int a34=1, ,9;注意:所賦給的值是按行按列對(duì)號(hào)入座的。注意:所賦給的值是按行按列對(duì)號(hào)入座的。 對(duì)二維數(shù)組的全部元素賦初值時(shí),可以不指定第一維的長(zhǎng)度,對(duì)二維數(shù)組的全部元素賦初值時(shí),可以不指定第一維的長(zhǎng)度,但不得省去第二維的長(zhǎng)度。如:但不得省去第二維的長(zhǎng)度。如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;可以寫(xiě)成:可以寫(xiě)成:static int a 4=1,2,3,4,5

8、,6,7,8,9,10,11,12;同樣,同樣,static int a 4=0,0,3, ,0,10; 也是正確的。也是正確的。 可以對(duì)部分元素賦初值。如:可以對(duì)部分元素賦初值。如:例例7.4 將一個(gè)二維數(shù)組行和列的元素互換后存到另一個(gè)數(shù)組中。如:將一個(gè)二維數(shù)組行和列的元素互換后存到另一個(gè)數(shù)組中。如:main( ) static int a23=1,2,3,4,5,6; static int b32, i, j; printf(“array a:n”); for (i=0; i=1; i+) for ( j=0; j=2; j+) printf(“%5d”,ai j); b ji=ai j;

9、 / 元素互換元素互換 / printf(“n”); printf(“array b:n”); for (i=0; i=2; i+) for ( j=0; j=1; j+) printf(“%5d”,bi j); printf(“n”); 例例7.5 輸出一個(gè)輸出一個(gè)3 4數(shù)組中每行中的最大元素之值及其位置。數(shù)組中每行中的最大元素之值及其位置。main( ) int i, j, c, max ; static int a34=6,-5,11,3,8,9,4,7,2,13,1,-10; for (i=0; i=2; i+) max=a i0; c=0; for ( j=0; jmax) max=

10、ai j; c=j; printf(“max=%2d,row=%d,colum=%dn”,max,i+1,c+1); 輸出結(jié)果:輸出結(jié)果:max=11, row=1, colum=3max= 9, row=2, colum=2max=13, row=3, colum=27.3 多維數(shù)組多維數(shù)組與二維數(shù)組的定義類(lèi)似與二維數(shù)組的定義類(lèi)似例如例如: int a345, b2453;分別為定義的三維、四維數(shù)組。分別為定義的三維、四維數(shù)組。其中,其中,a有有60個(gè)元素,個(gè)元素,b有有120個(gè)元素。個(gè)元素。7.4字符數(shù)組與字符串字符數(shù)組與字符串7.4.1 字符數(shù)組的逐個(gè)字符操作例例7.6 從鍵盤(pán)輸入一個(gè)字

11、符串,回車(chē)鍵結(jié)束,并將字符串在屏幕上輸出。從鍵盤(pán)輸入一個(gè)字符串,回車(chē)鍵結(jié)束,并將字符串在屏幕上輸出。 main( ) int i; static char str80; clrscr(); for(i=0;i80;i+) stri=getch(); /*逐次給數(shù)組元素逐次給數(shù)組元素stri賦值,但不回顯在屏賦值,但不回顯在屏幕上幕上*/ printf(*); /*以星號(hào)代替輸入字符的個(gè)數(shù)以星號(hào)代替輸入字符的個(gè)數(shù)*/ if(stri=x0d) break;/*若輸入回車(chē)則終止循環(huán)若輸入回車(chē)則終止循環(huán)*/ i=0; while(stri!=x0d) printf(%c,stri+);/*逐次輸出字

12、符數(shù)組的各個(gè)元素逐次輸出字符數(shù)組的各個(gè)元素*/ printf(n); getch();/*程序暫停程序暫停*/ 1字符數(shù)組的定義字符數(shù)組的定義1維字符數(shù)組,用于存儲(chǔ)和處理維字符數(shù)組,用于存儲(chǔ)和處理1個(gè)字符串,其定義格個(gè)字符串,其定義格式與式與1維數(shù)值數(shù)組一樣。維數(shù)值數(shù)組一樣。2維字符數(shù)組,用于同時(shí)存儲(chǔ)和處理多個(gè)字符串,其維字符數(shù)組,用于同時(shí)存儲(chǔ)和處理多個(gè)字符串,其定義格式與定義格式與2維數(shù)值數(shù)組一樣。維數(shù)值數(shù)組一樣。2字符數(shù)組的初始化字符數(shù)組的初始化字符數(shù)組的初始化,可以通過(guò)為每個(gè)數(shù)組元素指定初值字字符數(shù)組的初始化,可以通過(guò)為每個(gè)數(shù)組元素指定初值字符來(lái)實(shí)現(xiàn)。符來(lái)實(shí)現(xiàn)。3字符數(shù)組的引用字符數(shù)組的

13、引用 字符數(shù)組的逐個(gè)字符引用,與引用數(shù)值數(shù)組元素字符數(shù)組的逐個(gè)字符引用,與引用數(shù)值數(shù)組元素類(lèi)似。類(lèi)似。 (1)字符數(shù)組的輸入)字符數(shù)組的輸入 除了可以通過(guò)初始化使字符數(shù)組各元素得到初除了可以通過(guò)初始化使字符數(shù)組各元素得到初值外,也可以使用值外,也可以使用getchar()或或scanf()函數(shù)輸入字符。函數(shù)輸入字符。 例如:例如: char str10;for(i=0; i10; i+) scanf(%c, &stri); fflush(stdin);/*清除鍵盤(pán)輸入緩沖區(qū)清除鍵盤(pán)輸入緩沖區(qū)*/ (2)字符數(shù)組的輸出)字符數(shù)組的輸出 字符數(shù)組的輸出,可以用字符數(shù)組的輸出,可以用putc

14、har()或或printf()函數(shù)。函數(shù)。 例如:例如: char str10=c language;for(i=0; i10; i+) printf(%c, stri);printf(n); 注意注意:逐個(gè)字符輸入、輸出時(shí),要指出元素的下標(biāo),:逐個(gè)字符輸入、輸出時(shí),要指出元素的下標(biāo),而且使用而且使用“%c”格式符。另外,從鍵盤(pán)上輸入字符格式符。另外,從鍵盤(pán)上輸入字符時(shí),無(wú)需輸入字符的定界符時(shí),無(wú)需輸入字符的定界符單引號(hào);輸出時(shí),系單引號(hào);輸出時(shí),系統(tǒng)也不輸出字符的定界符。統(tǒng)也不輸出字符的定界符。Scanf(“%s”)方式輸入字符串時(shí):方式輸入字符串時(shí):從第一個(gè)非空白字符開(kāi)始,遇到第一個(gè)空白從

15、第一個(gè)非空白字符開(kāi)始,遇到第一個(gè)空白字符結(jié)束;并在末尾自動(dòng)補(bǔ)上一個(gè)字符字符結(jié)束;并在末尾自動(dòng)補(bǔ)上一個(gè)字符0#include main( ) char name13; int i; for (i =0; i =12; i +)scanf(“ %c”,&namei); for (i =0; i =12; i +)printf(“ %c”,namei); scanf(“ %s”,name); printf(“ %s”,name);例例7e_1:采用不同的方式輸入輸出字符串:采用不同的方式輸入輸出字符串運(yùn)行結(jié)果運(yùn)行結(jié)果:Pear & Apple Pear & ApplePear

16、 & Apple Pear#include #include main( )int i; char name74=sun,mon,tue,wed, thu,wen,sat; printf(Result is:n); name03=& name23=& name53=& for (i=0;i7;i+) printf(%sn,namei); getch();例例: 7e_2字符串?dāng)?shù)組值的改變。字符串?dāng)?shù)組值的改變。程序運(yùn)行結(jié)果程序運(yùn)行結(jié)果:sun&monmontue&wedwedthuwen&satsatNAME0SUN0NAME1MON0NA

17、ME2TUE0NAME3WED0NAME4THU0NAME5FRI0NAME6SAT0NAME0SUN&NAME1MON0NAME2TUE&NAME3WED0NAME4THU0NAME5FRI&NAME6SAT0賦初值:改變后:7.4.2 字符數(shù)組的整體操作例例7.7 字符數(shù)組的整體輸入與輸出。字符數(shù)組的整體輸入與輸出。 將將2維字符數(shù)組進(jìn)行初始化,并在屏幕上輸出維字符數(shù)組進(jìn)行初始化,并在屏幕上輸出*/main() int i; char name510=“zhangshan, “l(fā)isi, “wangwu, “zhaolui, “l(fā)uiqi; for(i=0;i5;i

18、+) printf(n%st,namei); /*namei代表該行數(shù)組元素的首地址代表該行數(shù)組元素的首地址*/ getch(); 1字符串及其結(jié)束標(biāo)志字符串及其結(jié)束標(biāo)志 所謂字符串,是指若干有效字符的序列。所謂字符串,是指若干有效字符的序列。C語(yǔ)言中的字符串,可語(yǔ)言中的字符串,可以包括字母、數(shù)字、專(zhuān)用字符、轉(zhuǎn)義字符等。以包括字母、數(shù)字、專(zhuān)用字符、轉(zhuǎn)義字符等。C語(yǔ)言規(guī)定:以語(yǔ)言規(guī)定:以0作為字符串結(jié)束標(biāo)志(作為字符串結(jié)束標(biāo)志(0代表代表ASCII碼為碼為0的字的字符,表示一個(gè)符,表示一個(gè)“空操作空操作”,只起一個(gè)標(biāo)志作用)。因此可以對(duì)字符數(shù)組,只起一個(gè)標(biāo)志作用)。因此可以對(duì)字符數(shù)組采用另一種方

19、式進(jìn)行操作了采用另一種方式進(jìn)行操作了字符數(shù)組的整體操作。字符數(shù)組的整體操作。 注意注意:由于系統(tǒng)在存儲(chǔ)字符串常量時(shí),會(huì)在串尾自動(dòng)加上:由于系統(tǒng)在存儲(chǔ)字符串常量時(shí),會(huì)在串尾自動(dòng)加上1個(gè)結(jié)束標(biāo)志,所以無(wú)需人為地再加個(gè)結(jié)束標(biāo)志,所以無(wú)需人為地再加1個(gè)。個(gè)。另外,由于結(jié)束標(biāo)志也要在字符數(shù)組中占用一個(gè)元素的存另外,由于結(jié)束標(biāo)志也要在字符數(shù)組中占用一個(gè)元素的存儲(chǔ)空間,因此在說(shuō)明字符數(shù)組長(zhǎng)度時(shí),至少為字符串所需長(zhǎng)度儲(chǔ)空間,因此在說(shuō)明字符數(shù)組長(zhǎng)度時(shí),至少為字符串所需長(zhǎng)度加加1。2字符數(shù)組的整體初始化字符數(shù)組的整體初始化字符串設(shè)置了結(jié)束標(biāo)志以后,對(duì)字符數(shù)組的初始化,就可字符串設(shè)置了結(jié)束標(biāo)志以后,對(duì)字符數(shù)組的初始

20、化,就可以用字符串常量來(lái)初始化字符數(shù)組。以用字符串常量來(lái)初始化字符數(shù)組。3字符數(shù)組的整體引用字符數(shù)組的整體引用(1)字符串的輸入)字符串的輸入除了可以通過(guò)初始化使字符數(shù)組各元素得到初值外,也可以使除了可以通過(guò)初始化使字符數(shù)組各元素得到初值外,也可以使用用scanf()函數(shù)輸入字符串。函數(shù)輸入字符串。(2)字符串的輸出)字符串的輸出printf()函數(shù),不僅可以逐個(gè)輸出字符數(shù)組元素,還可以整體輸函數(shù),不僅可以逐個(gè)輸出字符數(shù)組元素,還可以整體輸出存放在字符數(shù)組中的字符串。出存放在字符數(shù)組中的字符串。7.4.3 常用的字符串處理函數(shù)字符串標(biāo)準(zhǔn)函數(shù)的原型在頭文件字符串標(biāo)準(zhǔn)函數(shù)的原型在頭文件string

21、.h中。中。1輸入字符串輸入字符串gets()函數(shù)函數(shù)(1)調(diào)用方式:)調(diào)用方式:gets(字符數(shù)組字符數(shù)組)(2)函數(shù)功能:從標(biāo)準(zhǔn)輸入設(shè)備)函數(shù)功能:從標(biāo)準(zhǔn)輸入設(shè)備(stdin)鍵盤(pán)上,讀鍵盤(pán)上,讀取取1個(gè)字符串(可以包含空格),并將其存儲(chǔ)到字符數(shù)組中個(gè)字符串(可以包含空格),并將其存儲(chǔ)到字符數(shù)組中去。去。(3)使用說(shuō)明)使用說(shuō)明 1)gets()讀取的字符串,其長(zhǎng)度沒(méi)有限制,編程者要保讀取的字符串,其長(zhǎng)度沒(méi)有限制,編程者要保證字符數(shù)組有足夠大的空間,存放輸入的字符串。證字符數(shù)組有足夠大的空間,存放輸入的字符串。 2)該函數(shù)輸入的字符串中允許包含空格,而)該函數(shù)輸入的字符串中允許包含空格,而

22、scanf()函函數(shù)不允許。遇到回車(chē)輸入結(jié)束!數(shù)不允許。遇到回車(chē)輸入結(jié)束!2輸出字符串輸出字符串puts()函數(shù)函數(shù)(1)調(diào)用方式:)調(diào)用方式:puts(字符數(shù)組字符數(shù)組)(2)函數(shù)功能:把字符數(shù)組中所存放的字符串,輸出)函數(shù)功能:把字符數(shù)組中所存放的字符串,輸出到標(biāo)準(zhǔn)輸出設(shè)備中去,并用到標(biāo)準(zhǔn)輸出設(shè)備中去,并用n取代字符串的結(jié)束標(biāo)志取代字符串的結(jié)束標(biāo)志0。所以用所以用puts()函數(shù)輸出字符串時(shí),不要求另加換行符。函數(shù)輸出字符串時(shí),不要求另加換行符。( 3)使用說(shuō)明)使用說(shuō)明1)字符串中允許包含轉(zhuǎn)義字符,輸出時(shí)產(chǎn)生一個(gè)控字符串中允許包含轉(zhuǎn)義字符,輸出時(shí)產(chǎn)生一個(gè)控制操作。制操作。2)該函數(shù)一次只

23、能輸出一個(gè)字符串,而該函數(shù)一次只能輸出一個(gè)字符串,而printf()函函數(shù)也能用來(lái)輸出字符串,且一次能輸出多個(gè)。數(shù)也能用來(lái)輸出字符串,且一次能輸出多個(gè)。1. 輸入輸入(用用scanf(“%s”)(2) 輸入多個(gè)字符串輸入多個(gè)字符串,可用空格隔開(kāi)??捎每崭窀糸_(kāi)。 static char str15, str25, str35; scanf(%s%s%s, str1, str2,str3);(1) 輸入字符串時(shí)輸入字符串時(shí),系統(tǒng)自動(dòng)加上系統(tǒng)自動(dòng)加上0輸入輸入 How are you str1得到得到: H o w0 str2得到得到: a r e0 str3得到得到: y o u 02. 2.輸入

24、輸入( (用用gets()gets() static char str 15, gets(str); 輸入:how are you 則則str得到得到: how are you0 例例7e_3(演示演示) #include #include main() static char str15,str25,str35,str15; scanf(%s%s%s, str1, str2,str3); / /* *輸入輸入 how are youhow are you回車(chē)回車(chē)* */ / printf(%s%s%s%sn, str1, str2,str3); puts(str1);puts(str2);p

25、uts(str3); / /* *puts()puts()將將00轉(zhuǎn)換為轉(zhuǎn)換為nn* */ / fflush(stdin); / /* *清除鍵盤(pán)緩沖區(qū)清除鍵盤(pán)緩沖區(qū), ,內(nèi)部位置指針置首位內(nèi)部位置指針置首位* */ / gets(str); / /* *輸入輸入 how are youhow are you回車(chē)回車(chē)* */ / puts(str); 運(yùn)行屏幕顯示運(yùn)行屏幕顯示:how are youhowareyouhowareyouhow are youhow are you例例7e_4(演示演示)從鍵盤(pán)按下面次序輸入從鍵盤(pán)按下面次序輸入,分析程序結(jié)果分析程序結(jié)果: aa bb回車(chē)回車(chē)cc

26、dd回車(chē)回車(chē)#include #include main()char a15,a25,a35,a45; scanf(“%s%s”,a1,a2); gets(a3);gets(a4); puts(a1); puts(a2); puts(a3); puts(a4);程序運(yùn)行結(jié)果程序運(yùn)行結(jié)果: :aabbcc dd說(shuō)明說(shuō)明: :輸入流為一隊(duì)列輸入流為一隊(duì)列 aaaabbccbbccddddscanf(scanf(“%s%s”,);,);從隊(duì)列中一個(gè)一個(gè)地讀字符從隊(duì)列中一個(gè)一個(gè)地讀字符, ,每每讀一個(gè)讀一個(gè), ,標(biāo)準(zhǔn)輸入設(shè)備文件標(biāo)準(zhǔn)輸入設(shè)備文件stdinstdin內(nèi)部指針向右移內(nèi)部指針向右移動(dòng)一個(gè)字符

27、位置動(dòng)一個(gè)字符位置; ;以非空白字符開(kāi)始以非空白字符開(kāi)始, ,以第一個(gè)空以第一個(gè)空白字符結(jié)束白字符結(jié)束. .gets();gets();從隊(duì)列中一個(gè)一個(gè)地讀字符從隊(duì)列中一個(gè)一個(gè)地讀字符, ,每讀一個(gè)每讀一個(gè), ,標(biāo)準(zhǔn)輸入設(shè)備文件內(nèi)部指針向右移動(dòng)一個(gè)字符位標(biāo)準(zhǔn)輸入設(shè)備文件內(nèi)部指針向右移動(dòng)一個(gè)字符位置置; ;以以為串輸入結(jié)束標(biāo)志為串輸入結(jié)束標(biāo)志. .則則: :a15:aa0 a25:bb0a15:aa0 a25:bb0a35:0 a45:cca35:0 a45:ccdd0dd03字符串比較字符串比較strcmp()函數(shù)函數(shù)(1)調(diào)用方式:)調(diào)用方式:strcmp(字符串字符串1 ,字符串字符串2)

28、其中其中“字符串字符串”可以是串常量,也可以是可以是串常量,也可以是1維字符數(shù)組。維字符數(shù)組。(2)函數(shù)功能:比較兩個(gè)字符串的大小。)函數(shù)功能:比較兩個(gè)字符串的大小。如果:字符串如果:字符串1=字符串字符串2,函數(shù)返回值等于,函數(shù)返回值等于0; 字符串字符串1字符串字符串2,函數(shù)返回值正整數(shù)。,函數(shù)返回值正整數(shù)。(3)使用說(shuō)明)使用說(shuō)明1)如果一個(gè)字符串是另一個(gè)字符串從頭開(kāi)始的子串,則母串為大。)如果一個(gè)字符串是另一個(gè)字符串從頭開(kāi)始的子串,則母串為大。2)不能使用關(guān)系運(yùn)算符)不能使用關(guān)系運(yùn)算符“”來(lái)比較兩個(gè)字符串,只能用來(lái)比較兩個(gè)字符串,只能用strcmp() 函數(shù)來(lái)處理。函數(shù)來(lái)處理。例7.8

29、 gets函數(shù)和函數(shù)和strcmp函數(shù)的應(yīng)用。函數(shù)的應(yīng)用。 /*功能:簡(jiǎn)單密碼檢測(cè)程序功能:簡(jiǎn)單密碼檢測(cè)程序*/#include stdio.hmain() char pass_str80; /*定義字符數(shù)組定義字符數(shù)組pass_str*/ int i=0; /*檢驗(yàn)密碼檢驗(yàn)密碼*/ while(1) clrscr(); printf(請(qǐng)輸入密碼請(qǐng)輸入密碼n); gets(pass_str); /*輸入密碼輸入密碼*/*假定正確口令為假定正確口令為password*/ if(strcmp(pass_str,“password”)!=0) printf(口令錯(cuò)誤,按任意鍵繼續(xù)口令錯(cuò)誤,按任意鍵繼

30、續(xù)); else break; /*輸入正確的密碼,中止循環(huán)輸入正確的密碼,中止循環(huán)*/ getch(); i+; if(i=3) exit(0);/*輸入三次錯(cuò)誤的密碼,退出程序輸入三次錯(cuò)誤的密碼,退出程序*/ /*以下為輸入正確密碼所進(jìn)入的程序段以下為輸入正確密碼所進(jìn)入的程序段*/ printf(密碼正確密碼正確!歡迎你進(jìn)入歡迎你進(jìn)入!); 4拷貝字符串拷貝字符串strcpy()函數(shù)函數(shù)(1)調(diào)用方式:)調(diào)用方式:strcpy(字符數(shù)組字符數(shù)組, 字符串字符串)其中其中“字符串字符串”可以是串常量,也可以是字符數(shù)組。可以是串常量,也可以是字符數(shù)組。(2)函數(shù)功能:將)函數(shù)功能:將“字符串字

31、符串”完整地復(fù)制到完整地復(fù)制到“字符數(shù)組字符數(shù)組”中,字符數(shù)組中原有內(nèi)容被覆蓋。中,字符數(shù)組中原有內(nèi)容被覆蓋。(3)使用說(shuō)明)使用說(shuō)明1)字符數(shù)組必須定義得足夠大,以便容納復(fù)制過(guò)來(lái)的字符串。)字符數(shù)組必須定義得足夠大,以便容納復(fù)制過(guò)來(lái)的字符串。復(fù)制時(shí),連同結(jié)束標(biāo)志復(fù)制時(shí),連同結(jié)束標(biāo)志0一起復(fù)制。一起復(fù)制。2)不能用賦值運(yùn)算符)不能用賦值運(yùn)算符“”將一個(gè)字符串直接賦值給一個(gè)字符數(shù)將一個(gè)字符串直接賦值給一個(gè)字符數(shù)組,只能用組,只能用strcpy()函數(shù)來(lái)處理。函數(shù)來(lái)處理。 5連接字符串連接字符串strcat()函數(shù)函數(shù)(1)調(diào)用方式:)調(diào)用方式:strcat(字符數(shù)組字符數(shù)組, 字符串字符串)(2

32、)函數(shù)功能:把)函數(shù)功能:把“字符串字符串”連接到連接到“字符數(shù)組字符數(shù)組”中的字中的字符串尾端,并存儲(chǔ)于符串尾端,并存儲(chǔ)于“字符數(shù)組字符數(shù)組”中。中?!白址麛?shù)組字符數(shù)組”中原來(lái)的中原來(lái)的結(jié)束標(biāo)志,被結(jié)束標(biāo)志,被“字符串字符串”的第一個(gè)字符覆蓋,而的第一個(gè)字符覆蓋,而“字符串字符串”在在操作中未被修改。操作中未被修改。(3)使用說(shuō)明)使用說(shuō)明 1)由于沒(méi)有邊界檢查,編程者要注意保證)由于沒(méi)有邊界檢查,編程者要注意保證“字符數(shù)組字符數(shù)組”定義得定義得足夠大,以便容納連接后的目標(biāo)字符串;否則,會(huì)因長(zhǎng)度不夠而產(chǎn)生足夠大,以便容納連接后的目標(biāo)字符串;否則,會(huì)因長(zhǎng)度不夠而產(chǎn)生問(wèn)題。問(wèn)題。 2)連接前兩個(gè)

33、字符串都有結(jié)束標(biāo)志)連接前兩個(gè)字符串都有結(jié)束標(biāo)志0,連接后,連接后“字符數(shù)字符數(shù)組組”中存儲(chǔ)的字符串的結(jié)束標(biāo)志中存儲(chǔ)的字符串的結(jié)束標(biāo)志0被舍棄,只在目標(biāo)串的最被舍棄,只在目標(biāo)串的最后保留一個(gè)后保留一個(gè)0。6求字符串長(zhǎng)度求字符串長(zhǎng)度strlen()函數(shù)(函數(shù)(len是是length的縮寫(xiě))的縮寫(xiě))(1)調(diào)用方式:)調(diào)用方式:strlen(字符串字符串)(2)函數(shù)功能:求字符串(常量或字符數(shù)組)的實(shí)際)函數(shù)功能:求字符串(常量或字符數(shù)組)的實(shí)際長(zhǎng)度(不包含結(jié)束標(biāo)志)。長(zhǎng)度(不包含結(jié)束標(biāo)志)。7將字符串中大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)將字符串中大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)strlwr()函數(shù)函數(shù)(1)調(diào)用方式:)調(diào)用方式

34、:strlwr(字符串字符串)(2)函數(shù)功能:將字符串中的大寫(xiě)字母轉(zhuǎn)換成小寫(xiě),)函數(shù)功能:將字符串中的大寫(xiě)字母轉(zhuǎn)換成小寫(xiě),其它字符(包括小寫(xiě)字母和非字母字符)不轉(zhuǎn)換。其它字符(包括小寫(xiě)字母和非字母字符)不轉(zhuǎn)換。8將字符串中小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)將字符串中小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)strupr()函數(shù)函數(shù)(1)調(diào)用方式:)調(diào)用方式:strupr(字符串字符串)(2)函數(shù)功能:將字符串中小寫(xiě)字母轉(zhuǎn)換成大寫(xiě),其它字)函數(shù)功能:將字符串中小寫(xiě)字母轉(zhuǎn)換成大寫(xiě),其它字符(包括大寫(xiě)字母和非字母字符)不轉(zhuǎn)換。符(包括大寫(xiě)字母和非字母字符)不轉(zhuǎn)換。7.5 數(shù)組作為函數(shù)參數(shù)數(shù)組作為函數(shù)參數(shù)數(shù)組用作函數(shù)參數(shù)有兩種形式:一種是把

35、數(shù)組元數(shù)組用作函數(shù)參數(shù)有兩種形式:一種是把數(shù)組元素(又稱下標(biāo)變量)作為實(shí)參使用;另一種是把數(shù)素(又稱下標(biāo)變量)作為實(shí)參使用;另一種是把數(shù)組名作為函數(shù)的形參和實(shí)參使用。組名作為函數(shù)的形參和實(shí)參使用。 7.5.1 數(shù)組元素作為函數(shù)參數(shù) 7.5.2 數(shù)組名作為函數(shù)的形參和實(shí)參 7.5.1 數(shù)組元素作為函數(shù)參數(shù) 數(shù)組元素就是下標(biāo)變量,它與普通變量并無(wú)區(qū)別。數(shù)組元素就是下標(biāo)變量,它與普通變量并無(wú)區(qū)別。數(shù)組元素只能用作函數(shù)實(shí)參,其用法與普通變量完全數(shù)組元素只能用作函數(shù)實(shí)參,其用法與普通變量完全相同:在發(fā)生函數(shù)調(diào)用時(shí),把數(shù)組元素的值傳送給形相同:在發(fā)生函數(shù)調(diào)用時(shí),把數(shù)組元素的值傳送給形參,實(shí)現(xiàn)單向值傳送。參,實(shí)現(xiàn)單向值傳送。例例7.9 寫(xiě)一函數(shù),統(tǒng)計(jì)字符串中字母的個(gè)數(shù)。寫(xiě)一函數(shù),統(tǒng)計(jì)字符串中字母的個(gè)數(shù)。/*功能:數(shù)組元素作為函數(shù)實(shí)參功能:數(shù)組元素作為函數(shù)實(shí)參*/int isalp(char c) if (c=a&c=A&c=Z) return(1); else r

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論