一維數(shù)組的定義和引用二維數(shù)組的定義和引用字符數(shù)組_第1頁
一維數(shù)組的定義和引用二維數(shù)組的定義和引用字符數(shù)組_第2頁
一維數(shù)組的定義和引用二維數(shù)組的定義和引用字符數(shù)組_第3頁
一維數(shù)組的定義和引用二維數(shù)組的定義和引用字符數(shù)組_第4頁
一維數(shù)組的定義和引用二維數(shù)組的定義和引用字符數(shù)組_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、5.1 5.1 一維數(shù)組的定義和引用一維數(shù)組的定義和引用5.2 5.2 二維數(shù)組的定義和引用二維數(shù)組的定義和引用5.3 5.3 字符數(shù)組字符數(shù)組第第5 5章章 數(shù)數(shù) 組組數(shù)組的概念數(shù)組的概念 數(shù)組是指一組相同類型數(shù)據(jù)的有序集合,由數(shù)組是指一組相同類型數(shù)據(jù)的有序集合,由一個統(tǒng)一的數(shù)組名標(biāo)識這一組數(shù)據(jù)。數(shù)組的每一個統(tǒng)一的數(shù)組名標(biāo)識這一組數(shù)據(jù)。數(shù)組的每一個成員稱作數(shù)組元素,用下標(biāo)來標(biāo)識數(shù)組元一個成員稱作數(shù)組元素,用下標(biāo)來標(biāo)識數(shù)組元素在該數(shù)組中的位置。素在該數(shù)組中的位置。把數(shù)學(xué)中的集合和數(shù)組對照一下。把數(shù)學(xué)中的集合和數(shù)組對照一下。假如有集合假如有集合s=1,2,3,4,5,6,7,8,9,10 要表示

2、集合中某個元素,數(shù)學(xué)中可以描述為要表示集合中某個元素,數(shù)學(xué)中可以描述為si ,其中,其中s是集合的名字,是集合的名字,i表示該元素在集合中的表示該元素在集合中的序號。為了表示序號。為了表示C語言數(shù)組中的每一個元素,也語言數(shù)組中的每一個元素,也必須確定數(shù)組名和該元素在數(shù)組中的位置信息。必須確定數(shù)組名和該元素在數(shù)組中的位置信息。 數(shù)組名和該元素在數(shù)組中的位置信息是確定數(shù)組數(shù)組名和該元素在數(shù)組中的位置信息是確定數(shù)組元素兩個不可缺少的要素。在元素兩個不可缺少的要素。在C語言中,數(shù)組元語言中,數(shù)組元素的位置信息是由下標(biāo)表示的,下標(biāo)等同于集合素的位置信息是由下標(biāo)表示的,下標(biāo)等同于集合中的序號。中的序號。5

3、.15.1一維數(shù)組的定義和引用一維數(shù)組的定義和引用5.11.1 1 一維數(shù)組的定義一維數(shù)組的定義 由單一下標(biāo)標(biāo)識數(shù)組元素的數(shù)組稱為一維數(shù)組。由單一下標(biāo)標(biāo)識數(shù)組元素的數(shù)組稱為一維數(shù)組。一維數(shù)組的定義形式為:一維數(shù)組的定義形式為:類型標(biāo)識符類型標(biāo)識符 數(shù)組名數(shù)組名元素個數(shù)元素個數(shù); 數(shù)組名必須符合標(biāo)識符的規(guī)定。元素個數(shù),又稱為數(shù)組名必須符合標(biāo)識符的規(guī)定。元素個數(shù),又稱為數(shù)組長度,只能用整型常量表達(dá)式表示。數(shù)組長度,只能用整型常量表達(dá)式表示。 數(shù)組和變量一樣,也必須占據(jù)一定的存儲空間。進(jìn)行存數(shù)組和變量一樣,也必須占據(jù)一定的存儲空間。進(jìn)行存儲空間分配時,系統(tǒng)根據(jù)數(shù)組的長度和數(shù)組元素的類型儲空間分配時,

4、系統(tǒng)根據(jù)數(shù)組的長度和數(shù)組元素的類型確定分配存儲單元的個數(shù),確定分配存儲單元的個數(shù),C語言中數(shù)組元素的存儲是連語言中數(shù)組元素的存儲是連續(xù)的,數(shù)組名就是所分配內(nèi)存空間的起始地址。續(xù)的,數(shù)組名就是所分配內(nèi)存空間的起始地址。 如整型數(shù)組如整型數(shù)組a,共有,共有10個元素,每個元個元素,每個元素分配素分配2個字節(jié),共分配個字節(jié),共分配210個字節(jié)的存儲個字節(jié)的存儲單元,單元, 2000H 2001H 2002H 2003H 2012H 2013H 56 100 78 第 0 個元素 第 1 個元素 第 9 個元素 圖5.3 數(shù)組a的存儲示意圖5.11.2 2 一維數(shù)組元素的初始化一維數(shù)組元素的初始化 數(shù)

5、組初始化的一般形式如下:數(shù)組初始化的一般形式如下: 類型標(biāo)識符類型標(biāo)識符 數(shù)組名數(shù)組名元素個數(shù)元素個數(shù)=元素值表元素值表列列;(1)中的數(shù)組元素值與數(shù)組的每一個元素具備左中的數(shù)組元素值與數(shù)組的每一個元素具備左對應(yīng)關(guān)系。對應(yīng)關(guān)系。 (2)中的元素值表列,可以是數(shù)組所有的元素的中的元素值表列,可以是數(shù)組所有的元素的初值,也可以是前面部分元素的初值,元素值之間使初值,也可以是前面部分元素的初值,元素值之間使用逗號分割。用逗號分割。(3)當(dāng)給數(shù)組部分元素賦初值時,其余元素的值為)當(dāng)給數(shù)組部分元素賦初值時,其余元素的值為0。(4)當(dāng)對全部元素賦初值,數(shù)組長度可以省略,但)當(dāng)對全部元素賦初值,數(shù)組長度可以

6、省略,但 不能省略。不能省略。(5)數(shù)組初始化的賦值方式只能用于數(shù)組的定義,)數(shù)組初始化的賦值方式只能用于數(shù)組的定義,定義之后再賦值只能一個元素一個元素地賦值。定義之后再賦值只能一個元素一個元素地賦值。5.11.3 3 一維數(shù)組元素的引用一維數(shù)組元素的引用定義一個數(shù)組,相當(dāng)于一次定義了許多變量。定義一個數(shù)組,相當(dāng)于一次定義了許多變量。 一維數(shù)組元素的引用形式:一維數(shù)組元素的引用形式:數(shù)組名數(shù)組名下標(biāo)下標(biāo) 例如:例如:a0、ak、ai+1等。等。 下標(biāo)可以是整型常量、整型變量或者整型表下標(biāo)可以是整型常量、整型變量或者整型表達(dá)式,其范圍是達(dá)式,其范圍是0L 1(L表示數(shù)組長度)。表示數(shù)組長度)。

7、C語言不檢查數(shù)組的邊界。所以當(dāng)引用數(shù)組語言不檢查數(shù)組的邊界。所以當(dāng)引用數(shù)組元素的下標(biāo)超越邊界時,系統(tǒng)不會提示錯誤,元素的下標(biāo)超越邊界時,系統(tǒng)不會提示錯誤,但是可能導(dǎo)致其他變量甚至程序被破壞。但是可能導(dǎo)致其他變量甚至程序被破壞。 例例5.1 數(shù)組元素引用示例。數(shù)組元素引用示例。示例示例1: main( ) int i, a10; for (i=0;i10;i+) scanf(d,&ai); for (i=0;i10;i+) printf(5d,ai); printf(n);5.11.4 4 一維數(shù)組舉例一維數(shù)組舉例 使用一維數(shù)組可以實(shí)現(xiàn)實(shí)際應(yīng)用中的多使用一維數(shù)組可以實(shí)現(xiàn)實(shí)際應(yīng)用中的多種數(shù)

8、學(xué)模型,如隊列、數(shù)列、堆棧等數(shù)據(jù)種數(shù)學(xué)模型,如隊列、數(shù)列、堆棧等數(shù)據(jù)結(jié)構(gòu)。在一維數(shù)組中,數(shù)組中的各個元素結(jié)構(gòu)。在一維數(shù)組中,數(shù)組中的各個元素都是相關(guān)聯(lián)的,它們是相同數(shù)據(jù)類型的數(shù)都是相關(guān)聯(lián)的,它們是相同數(shù)據(jù)類型的數(shù)據(jù)的集合。在實(shí)際應(yīng)用中,程序設(shè)計者應(yīng)據(jù)的集合。在實(shí)際應(yīng)用中,程序設(shè)計者應(yīng)注意分析數(shù)據(jù)間的關(guān)系,合理地使用數(shù)組注意分析數(shù)據(jù)間的關(guān)系,合理地使用數(shù)組元素,才能編制出高效率的程序。本節(jié)從元素,才能編制出高效率的程序。本節(jié)從下面幾個例子介紹一維數(shù)組的編程方法。下面幾個例子介紹一維數(shù)組的編程方法。例例5.2 利用數(shù)組求出利用數(shù)組求出Fibonacci數(shù)列的前數(shù)列的前40項(xiàng)。項(xiàng)。 在循環(huán)一章中講述

9、了利用變量計算在循環(huán)一章中講述了利用變量計算Fibonacci數(shù)列之?dāng)?shù)列之和的題目。數(shù)列的數(shù)據(jù)模型常用數(shù)組來表示。和的題目。數(shù)列的數(shù)據(jù)模型常用數(shù)組來表示。 main( ) int j; float f40; f0=1;f1=1; for(j=2;j40;j+) fj=fj-1+fj-2; for (j=0;j40;j+) printf(10.0f,fj); printf(n);例例5.4 輸入輸入10個整數(shù),輸出最大值。個整數(shù),輸出最大值。main() int array10,max,k; for(k=0;k10;k+) scanf(d,&arrayk); max=array0; fo

10、r(k=1;k10;k+) if(maxarrayk) max=arrayk; for(k=0;kaj Y N 圖5.5 例5.5的流程圖#define N 10main( ) int aN,min,temp,i,j; for (i=0;iN;i+) scanf(d,&ai); for(i=1;iN;i+) min=i-1; for(j=i;jaj) min=j; temp=amin;amin=ai-1;ai-1=temp; for(i=0;iN;i+) printf(5d,ai); printf(n);5.2 5.2 二維數(shù)組的定義和使用二維數(shù)組的定義和使用5.22.1 1 二維數(shù)組

11、的定義二維數(shù)組的定義1二維數(shù)組的定義二維數(shù)組的定義二維數(shù)組的定義形式為:二維數(shù)組的定義形式為:類型標(biāo)識符類型標(biāo)識符 數(shù)組名數(shù)組名行元素個數(shù)行元素個數(shù)列元素個數(shù)列元素個數(shù);行元素個數(shù)是數(shù)組的行數(shù)(假定用行元素個數(shù)是數(shù)組的行數(shù)(假定用M表示),表示),列元素個數(shù)是數(shù)組的列數(shù)(假定用列元素個數(shù)是數(shù)組的列數(shù)(假定用N表示)。表示)。例如:例如:int a23;表示數(shù)組表示數(shù)組a由由2行行3列共列共6個整型元素組成。個整型元素組成。 二維數(shù)組中元素的存放順序是按行存放二維數(shù)組中元素的存放順序是按行存放的,即按順序先存放第的,即按順序先存放第0行的數(shù)組元素,再存行的數(shù)組元素,再存放第放第1行的數(shù)組元素。行

12、的數(shù)組元素。 2多維數(shù)組的定義多維數(shù)組的定義 多維數(shù)組的定義類似二維數(shù)組的定義,格式多維數(shù)組的定義類似二維數(shù)組的定義,格式為:為:類型標(biāo)識符類型標(biāo)識符 多維數(shù)組名多維數(shù)組名元素個數(shù)元素個數(shù)1元素個數(shù)元素個數(shù)2元素個數(shù)元素個數(shù)n;例如,例如,float a102030; 5.22.2 2 二維數(shù)組元素的初始化二維數(shù)組元素的初始化 所謂初始化就是給數(shù)組元素賦初始值。所謂初始化就是給數(shù)組元素賦初始值。二維數(shù)組的初始化方法有以下幾種形式。二維數(shù)組的初始化方法有以下幾種形式。(1)按行對二維數(shù)組初始化。)按行對二維數(shù)組初始化。例如:例如:int a23=1,1,1,4,4,4;(2)按數(shù)組的存儲順序賦初

13、值。)按數(shù)組的存儲順序賦初值。例如:例如:int b22=1,2,3,4; 表示將表示將1初始化給初始化給b00,2初始化給初始化給b01,3初始化給初始化給b10,4初始化給初始化給b11。二維數(shù)組初始化時,注意以下幾點(diǎn)。二維數(shù)組初始化時,注意以下幾點(diǎn)。(1)對部分元素賦值,其余元素的值為)對部分元素賦值,其余元素的值為0。(2)如果對數(shù)組元素全部賦初值,定義數(shù)組)如果對數(shù)組元素全部賦初值,定義數(shù)組時行長度可以省略,列長度不能省略。時行長度可以省略,列長度不能省略。(3)同一維數(shù)組一樣,二維數(shù)組初始化的賦)同一維數(shù)組一樣,二維數(shù)組初始化的賦值方式只能用于數(shù)組的定義,定義之后再賦值方式只能用于

14、數(shù)組的定義,定義之后再賦值只能單個元素賦值。值只能單個元素賦值。5.22.3 3 多維數(shù)組元素的使用多維數(shù)組元素的使用1二維數(shù)組中元素的引用形式二維數(shù)組中元素的引用形式數(shù)組名數(shù)組名下標(biāo)下標(biāo)1下標(biāo)下標(biāo)2 例例5.6 二維數(shù)組元素引用示例。二維數(shù)組元素引用示例。main() int m,n; int x34,y34; for(m=0;m3;m+) for(n=0;n4;n+) xmn=m; for(m=0;m3;m+) for(n=0;n4;n+) ymn=n; printf(array x:n); for(m=0;m3;m+) for(n=0;n4;n+) printf(3d,xmn); pri

15、ntf(n); printf(array y:n); for(m=0;m3;m+) for(n=0;n4;n+) printf(3d,ymn); printf(n); 程序運(yùn)行的結(jié)果如下:程序運(yùn)行的結(jié)果如下: array x:0 0 0 01 1 1 12 2 2 2array y:0 1 2 30 1 2 30 1 2 3例例5.8 分別求某班數(shù)學(xué)成績、語文成績的最高分別求某班數(shù)學(xué)成績、語文成績的最高分、最低分和平均分。分、最低分和平均分。 設(shè)某班有設(shè)某班有N個學(xué)生,應(yīng)該定義兩個一維數(shù)個學(xué)生,應(yīng)該定義兩個一維數(shù)組存儲該班的數(shù)學(xué)成績和語文成績。或者,定組存儲該班的數(shù)學(xué)成績和語文成績。或者,定義

16、一個二維數(shù)組存儲該班的數(shù)學(xué)和語文成績。義一個二維數(shù)組存儲該班的數(shù)學(xué)和語文成績。例如,定義數(shù)組例如,定義數(shù)組 float score2N;用第用第0行數(shù)組行數(shù)組元素存儲數(shù)學(xué)成績,第元素存儲數(shù)學(xué)成績,第1行數(shù)組元素存儲語文成行數(shù)組元素存儲語文成績,列號表示學(xué)生的學(xué)號??儯刑柋硎緦W(xué)生的學(xué)號。 求最高分、最低分和平均分就是求成績的求最高分、最低分和平均分就是求成績的最大值、最小值和平均值。定義另一個數(shù)組最大值、最小值和平均值。定義另一個數(shù)組float result23,第,第0行數(shù)組元素、第行數(shù)組元素、第1行數(shù)組行數(shù)組元素分別存儲數(shù)學(xué)、語文的最高分、最低分和元素分別存儲數(shù)學(xué)、語文的最高分、最低分和平

17、均分。具體算法如圖平均分。具體算法如圖5.9所示。所示。 i=0 to M-1 sum=0 j=0 to N-1 sum=sum+scoreij maxscoreij scoreij Y N min=scoreij 輸入 2 門課程的成績到數(shù)組 score 中 resulti0=max resilti1=min resulti2=sum/N 輸出最后結(jié)果數(shù)組 result 的值 max=min=scorei0 圖5.9 例5.8的流程圖根據(jù)流程圖編寫程序如下。根據(jù)流程圖編寫程序如下。#define M 2 /*功課門次功課門次 */ #define N 35 /*班級人數(shù)班級人數(shù)*/ #def

18、ine K 3 /*三種成績?nèi)N成績*/ main( ) float sum,scoreMN; float max,min, resultMK; float t; int i,j; for(i=0;iM;i+) for(j=0;jN;j+) scanf(f,&t); scoreij=t; for(i=0;iM;i+) max= scorei0; min=scorei0; sum=0; for(j=0;jN;j+) sum+=scoreij; if(maxscoreij) min=scoreij; resulti0=max; resulti1=min; resulti2=sum/N;fo

19、r (i=0;iM;i+) printf(第第d門課程的成績:門課程的成績:n,i); printf(最高分:最高分:.2f ,resulti0); printf(最低分:最低分:.2f ,resulti1); printf(平均分:平均分:.2f ,resulti2); pritnf(n);5.3 5.3 字符數(shù)組字符數(shù)組 字符數(shù)組是指數(shù)組元素是字符型數(shù)據(jù)的數(shù)組,它的每個數(shù)字符數(shù)組是指數(shù)組元素是字符型數(shù)據(jù)的數(shù)組,它的每個數(shù)組元素能存儲一個字符型數(shù)據(jù)。組元素能存儲一個字符型數(shù)據(jù)。 5.33.1 1 字符數(shù)組的定義字符數(shù)組的定義1字符數(shù)組的定義字符數(shù)組的定義 字符數(shù)組的定義方法同前面介紹的整型、

20、實(shí)型數(shù)組的定義字符數(shù)組的定義方法同前面介紹的整型、實(shí)型數(shù)組的定義相同。相同。 字符數(shù)組類型說明一般表示形式為:字符數(shù)組類型說明一般表示形式為: char 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式; char 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式1 常量表達(dá)式常量表達(dá)式2;例如:例如:char s110,s2280; 表示定義表示定義s1是一維字符數(shù)組,是一維字符數(shù)組,s2是二維字符數(shù)組。是二維字符數(shù)組。2字符數(shù)組和字符串的關(guān)系字符數(shù)組和字符串的關(guān)系 C語言通過字符數(shù)組來描述字符串。如果某語言通過字符數(shù)組來描述字符串。如果某一字符數(shù)組中包含有字符一字符數(shù)組中包含有字符0時,該字符數(shù)組可時,該字符數(shù)組可以作為

21、字符串處理,此時,字符數(shù)組名類似于其以作為字符串處理,此時,字符數(shù)組名類似于其他高級語言中的字符串變量名,簡稱串名。他高級語言中的字符串變量名,簡稱串名。 在使用字符串時,程序設(shè)計者只需關(guān)心字符在使用字符串時,程序設(shè)計者只需關(guān)心字符串的有效字符。字符數(shù)組中串的有效字符。字符數(shù)組中0前的字符的個數(shù)前的字符的個數(shù)就是字符串有效字符的個數(shù),通常稱為字符串長就是字符串有效字符的個數(shù),通常稱為字符串長度。在前面章節(jié)中講述過度。在前面章節(jié)中講述過printf函數(shù)使用函數(shù)使用s格式格式輸出字符串時,輸出字符串時,printf()函數(shù)判斷輸出是否結(jié)束的函數(shù)判斷輸出是否結(jié)束的標(biāo)志就是標(biāo)志就是0。5.33.22字

22、符數(shù)組元素的初始化字符數(shù)組元素的初始化(1)按字符方式初始化。)按字符方式初始化。(2)把一個字符串賦給字符數(shù)組。)把一個字符串賦給字符數(shù)組。例如:例如: char s120=123abcd#tm; /*數(shù)組長度是數(shù)組長度是20,把字符,把字符串常量賦給字符數(shù)組串常量賦給字符數(shù)組*/char s2=123abcd#tm; /*花括號可以省略花括號可以省略*/char s3320= 123,abdc; /*2個字符串常量賦給二個字符串常量賦給二維字符數(shù)組維字符數(shù)組*/5.3.3字符串的輸入與輸出字符串的輸入與輸出 可以單個引用字符數(shù)組元素,也可以將字符數(shù)組作為字符串可以單個引用字符數(shù)組元素,也可

23、以將字符數(shù)組作為字符串來使用。來使用。(字符串的輸入輸出有兩種方式字符串的輸入輸出有兩種方式1用格式符用格式符%c實(shí)現(xiàn)逐個字符輸入輸出。實(shí)現(xiàn)逐個字符輸入輸出。【例【例5.9】閱讀程序,寫出程序結(jié)果?!块喿x程序,寫出程序結(jié)果。#include main( ) char a4; int i; printf(請輸入三個字符請輸入三個字符:); /* 從鍵盤輸入單個字符賦從鍵盤輸入單個字符賦給字符串的每個元素給字符串的每個元素 */ scanf(%c,%c,%c,&a0,&a1,&a2); printf(輸入的字符串是輸入的字符串是:); for(i=0;i3;i+) /* 為

24、逐個輸出字符設(shè)置的循環(huán)為逐個輸出字符設(shè)置的循環(huán) */ printf(%c,ai); /* 輸出各元素的單個字符輸出各元素的單個字符 */ (2)按字符串引用。例如:)按字符串引用。例如: 2. 用格式符用格式符%s實(shí)現(xiàn)整個字符串輸入輸出實(shí)現(xiàn)整個字符串輸入輸出采用格式符采用格式符%s后,將使字符數(shù)組的輸入輸出變和簡單、后,將使字符數(shù)組的輸入輸出變和簡單、方便。方便。【例【例5.10】用格式符】用格式符%s輸入輸入/輸出。輸出。#include main ( ) char a4; printf(請輸入三個字符請輸入三個字符:);scanf(%s,a); / * 一次輸入整個字符串一次輸入整個字符串

25、 * / printf(“輸入的字符串是輸入的字符串是:%sn,a); / * 一次輸出整個字一次輸出整個字符串符串 * / 5.3.4 字符串及字符串處理函數(shù)字符串及字符串處理函數(shù) 下面介紹幾個常用的字符串處理函數(shù)。下面介紹幾個常用的字符串處理函數(shù)。1字符串輸入函數(shù)字符串輸入函數(shù)gets()gets()函數(shù)調(diào)用形式為:函數(shù)調(diào)用形式為:gets(字符數(shù)組名字符數(shù)組名)其功能是從終端輸入一個字符串,并把該字其功能是從終端輸入一個字符串,并把該字符串存儲到字符數(shù)組中。符串存儲到字符數(shù)組中。使用時注意:使用時注意:用用 scanf()函數(shù)輸入字符串時,字符串中不能包含空格,函數(shù)輸入字符串時,字符串中

26、不能包含空格,否則,系統(tǒng)將把空格作為否則,系統(tǒng)將把空格作為 輸入時字符串的結(jié)束標(biāo)志。輸入時字符串的結(jié)束標(biāo)志。例如:例如:char str13;scanf(%s,str);如果輸入如果輸入12個字符個字符 “How are you!,實(shí)際上并不是把這,實(shí)際上并不是把這12個字符加上個字符加上 0送到數(shù)組送到數(shù)組str中,而只將第一個空格中,而只將第一個空格前的前的“How”字符串送到字符串送到str中,中,str中實(shí)際值為:中實(shí)際值為:How0,系統(tǒng)把第一個空格當(dāng)作了結(jié)束標(biāo)志。系統(tǒng)把第一個空格當(dāng)作了結(jié)束標(biāo)志。在在C語言中,數(shù)組名代表的是該數(shù)組的首地址(以此地語言中,數(shù)組名代表的是該數(shù)組的首地址(

27、以此地址開始的一塊連續(xù)的存貯單元),因此,當(dāng)址開始的一塊連續(xù)的存貯單元),因此,當(dāng)scanf()函函數(shù)的輸入項(xiàng)是字符數(shù)組名時,則不要加地址符數(shù)的輸入項(xiàng)是字符數(shù)組名時,則不要加地址符&,如,如上例中的上例中的scanf(%s,a),但如果,但如果a不是數(shù)組名,這種寫不是數(shù)組名,這種寫法將是錯誤的。法將是錯誤的。(3) 用用 printf()函數(shù)輸出字符不包括結(jié)束符函數(shù)輸出字符不包括結(jié)束符0。(4) 用用“%s”格式符輸出字符串時,格式符輸出字符串時,printf函數(shù)中函數(shù)中的輸出項(xiàng)是字符數(shù)組名,而不是數(shù)組元素名。的輸出項(xiàng)是字符數(shù)組名,而不是數(shù)組元素名。寫成下面這樣是不對的:寫成下面這樣是

28、不對的:printf(%s,c0);(5) 如果數(shù)組長度大于字符串實(shí)際長度,也只輸如果數(shù)組長度大于字符串實(shí)際長度,也只輸出到遇出到遇0結(jié)束。如結(jié)束。如char c10=china;printf(%s,c);也只輸出也只輸出“china”5個字符,而不是輸出個字符,而不是輸出10個字個字符。這就是用字符串結(jié)束標(biāo)志的好處。符。這就是用字符串結(jié)束標(biāo)志的好處。(5) 如果一個字符數(shù)組中包含一個以上如果一個字符數(shù)組中包含一個以上0,則遇第一個則遇第一個0時輸出就結(jié)束。時輸出就結(jié)束。5.3.4 字符串處理函數(shù)字符串處理函數(shù)為了簡化用戶的程序設(shè)計,C 語言提供了豐富的字符串處理函數(shù),用戶在編程時可以直接調(diào)用

29、這些函數(shù),這樣就大大減輕了編程的工作量。用于輸入輸出的字符串函數(shù),在使用前應(yīng)包含頭文件“stdio.h”。用于比較、拷貝、合并等用途的字符串函數(shù)則應(yīng)包含頭文件“string.h”。1字符串輸出函數(shù)字符串輸出函數(shù)調(diào)用形式:puts(字符數(shù)組名)函數(shù)功能:把字符數(shù)組中的字符串輸出到標(biāo)準(zhǔn)輸出設(shè)備(顯示器),字符串中的結(jié)束標(biāo)志轉(zhuǎn)換成回車換行符。返回值:無。puts() 函數(shù)完全可以由 printf( ) 函數(shù)取代,當(dāng)需要按一定格式輸出時,通常用printf( )函數(shù)。 例如:例如: #include stdio.hmain() char s128; gets(s); printf(sn,s); 2字符

30、串輸出函數(shù)字符串輸出函數(shù)puts()puts()函數(shù)的調(diào)用形式為:函數(shù)的調(diào)用形式為:puts(數(shù)組名數(shù)組名) 或或puts(字符串常量字符串常量)3字符串拷貝函數(shù)字符串拷貝函數(shù)strcpy()strcpy()函數(shù)的調(diào)用形式為:函數(shù)的調(diào)用形式為:strcpy(字符數(shù)組字符數(shù)組1,字符串字符串2) 其功能是將字符串其功能是將字符串2復(fù)制到字符數(shù)組復(fù)制到字符數(shù)組1。字符數(shù)。字符數(shù)組組1只能是字符數(shù)組,字符串只能是字符數(shù)組,字符串1既可以是字符數(shù)組,既可以是字符數(shù)組,也可以是字符串常量。也可以是字符串常量。4字符串連接函數(shù)字符串連接函數(shù)strcat()strcat()函數(shù)的調(diào)用形式為:函數(shù)的調(diào)用形式為

31、:strcat(字符數(shù)組字符數(shù)組1,字符串字符串2) 其功能是連接兩個字符串,把字符串其功能是連接兩個字符串,把字符串2連接到字符數(shù)組連接到字符數(shù)組1后面,結(jié)果放到字符數(shù)組后面,結(jié)果放到字符數(shù)組1中。中。5字符串比較函數(shù)字符串比較函數(shù)strcmp()strcmp()函數(shù)的調(diào)用形式為:函數(shù)的調(diào)用形式為:strcmp(字符串字符串1,字符串字符串2) 其功能是比較兩個字符串的大小。根據(jù)函其功能是比較兩個字符串的大小。根據(jù)函數(shù)的返回值來確定大小。兩個字符串比較大小數(shù)的返回值來確定大小。兩個字符串比較大小的規(guī)則是:對兩個字符串自左向右逐個字符相的規(guī)則是:對兩個字符串自左向右逐個字符相比,直到出現(xiàn)不相同

32、的字符為止。函數(shù)返回值比,直到出現(xiàn)不相同的字符為止。函數(shù)返回值決定了字符串比較的結(jié)果。決定了字符串比較的結(jié)果。 (1)字符串)字符串1等于字符串等于字符串2,函數(shù)返回值是,函數(shù)返回值是0。 (2)字符串)字符串1大于字符串大于字符串2,函數(shù)返回值是一個正整,函數(shù)返回值是一個正整數(shù)。數(shù)。 (3)字符串)字符串1小于字符串小于字符串2,函數(shù)返回值是一個負(fù)整,函數(shù)返回值是一個負(fù)整數(shù)。數(shù)。6計算字符串長度函數(shù)計算字符串長度函數(shù)strlen()strlen()函數(shù)的調(diào)用形式為:函數(shù)的調(diào)用形式為:strlen(字符數(shù)組名字符數(shù)組名)其功能是求字符串的有效字符的個數(shù)。其功能是求字符串的有效字符的個數(shù)。5.3

33、.5 字符數(shù)組應(yīng)用舉例字符數(shù)組應(yīng)用舉例例例5.11 統(tǒng)計一行字符中的英文字母、數(shù)字、空格和其統(tǒng)計一行字符中的英文字母、數(shù)字、空格和其他字符的個數(shù)他字符的個數(shù)。 輸入一行字符到字符數(shù)組,并且給統(tǒng)計變量賦零 c 不是字符串的結(jié)束字符0 Y c 是字母 N Y c 是數(shù)字 N letter+ Y c 是空格 N digtal+ space+ other+ 輸出統(tǒng)計變量的值 圖5.10 例5.10的流程圖根據(jù)流程圖編寫程序如下。根據(jù)流程圖編寫程序如下。 #include string.hmain() char c,string128; int i; int letter,digital,sapce,o

34、ther ; letter=0,digital=0,space=0,other=0; gets(string); for(i=0;(c=stringi)!=0;i+) if(c=a&c=A&c=0&c=9) digtal+; else if(c= ) space+; else printf(letter=d,digtal=d n,letter,digtal); printf(space=d,other=d n,space,other); 【例【例5.12】編寫程序輸入兩個字符串,將在第一個字符串中出現(xiàn)的但在第二個字符串未出現(xiàn)的字符存放在第三個字符串變量中并輸出。(注意:

35、允許第三個字符串有重復(fù)的字符,例如,第一個字符串是“ABACDEFGH”,第二個字符串是“BCD”,則第三個字符串是“AAEFGH”。#include #include “string.h”#define N 81main( )char str1N,str2N,str3N;int i,j,k,flag;printf(“Please input the first string:n”);gets(str1); /*讀入第一個字符串*/ printf (“Please input the second string:n”);gets(str2); /*讀入第二個字符串*/k=0;for(i=0;s

36、tr1i!=0;i+) flag=1; for(j=0;str2j!=0&flag;j+) if(str2j=str1i) flag=0; /*第一字符串的字符在第二個字符串中存在,則flag賦值為0*/ if(flag) /*flag未被賦值為0,說明str1的第i個字符在str2中不存在*/ str3k=str1i;k+;str3k=0;printf (“The third string:n”);puts(str3); 運(yùn)行結(jié)果如下:Please input the first string:ABACDEFGHPlease input the second string:BCDTh

37、e third string:AAEFGH【例【例5.13】有】有3個字符串個字符串,要求找出其中最大者。要求找出其中最大者。今設(shè)一個二維的字符數(shù)組今設(shè)一個二維的字符數(shù)組str,大小為大小為320,即有即有3行行20列列,每一行可以容納每一行可以容納20個字符。個字符。如前所述如前所述,可以把可以把str0、str1、str2看看作作3個一維字符數(shù)組個一維字符數(shù)組,它們各有它們各有20個元素??梢园褌€元素??梢园阉鼈?nèi)缤痪S數(shù)組那樣進(jìn)行處理??梢杂盟鼈?nèi)缤痪S數(shù)組那樣進(jìn)行處理??梢杂胓ets函函數(shù)分別讀入數(shù)分別讀入3個字符串。經(jīng)過二次比較個字符串。經(jīng)過二次比較,就可得到就可得到值最大者值最大者

38、,把它放在一維字符數(shù)組把它放在一維字符數(shù)組string中。中。程序如下程序如下:main ( )char str320, string20;int i;for (i=0;i0)strcpy (string,str0);else strcpy(string,str1);if (strcmp(str2,string)0) strcpy(string,str2);printf(nthe largest string is n%sn,string); 運(yùn)行結(jié)果如下:Follow meBasicComputer designthe largest string isFollow me 因?yàn)橐驗(yàn)?C 語言允許將一個二維數(shù)組作為多個一維語言允許將一個二維數(shù)組作為多個一維數(shù)組處理,因此本例中,將二維數(shù)組數(shù)組處理,因此本例中,將二維數(shù)組str320分為分為3個一維數(shù)組(個一維數(shù)組(str0str2)使用。當(dāng)然)使用。當(dāng)然,這個題目也可以不采用二維數(shù)組這個題目也可以不采用二維數(shù)組,而設(shè)而設(shè)3個

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論