




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)組
教學(xué)目的內(nèi)容1
教學(xué)要求2
重點難點3
教學(xué)內(nèi)容4教學(xué)目的在編寫程序的過程中,經(jīng)常會遇到使用很多數(shù)據(jù)量的時候,處理每一個數(shù)據(jù)量就要有一個相對應(yīng)的變量,如果每一個變量都要單獨進(jìn)行定義的話就會變得很繁瑣,使用數(shù)組就可以解決這種情況。本講致力于使讀者掌握一維數(shù)組和二維數(shù)組的作用,并且能運用所學(xué)知識解決一些實際的問題。掌握字符數(shù)組的使用及其相關(guān)的操作。通過一維數(shù)組和二維數(shù)組了解有關(guān)多維數(shù)組的內(nèi)容。最后應(yīng)用數(shù)組應(yīng)用于排序算法,介紹有關(guān)字符串處理函數(shù)的使用。教學(xué)要求掌握一維數(shù)組和二維數(shù)組的定義和引用;了解多維數(shù)組的概念;熟悉字符數(shù)組的組成;熟悉字符串處理函數(shù)的使用;掌握應(yīng)用數(shù)組進(jìn)行編程的方法。重點難點重點:一維數(shù)組和二維數(shù)組的定義與引用;字符串?dāng)?shù)組的使用
;字符串處理函數(shù);應(yīng)用數(shù)組進(jìn)行編程。難點:二維數(shù)組的應(yīng)用;字符串?dāng)?shù)組的應(yīng)用。教學(xué)內(nèi)容多維數(shù)組;數(shù)組的概念;一維數(shù)組;二維數(shù)組;字符數(shù)組;字符串處理函數(shù);熟練應(yīng)用數(shù)組。數(shù)組的概念在使用計算機(jī)對數(shù)據(jù)進(jìn)行處理時,經(jīng)常會遇到如下情況:具有相同數(shù)據(jù)類型的數(shù)據(jù)量很大,如全班同學(xué)的考試成績、公司中全部員工或者某旅游景點客流量記錄等。對于這種需要數(shù)據(jù)量非常大的程序,需要把同一類型的數(shù)據(jù)按照一定形式有序地組織起來,這些有序數(shù)據(jù)的集合就稱為數(shù)組。數(shù)組也可以理解為類型相同、數(shù)目固定的若干個變量的有限集合。在C語言中,一個數(shù)組有一個統(tǒng)一的數(shù)組名,數(shù)組中的每一次元素有一個確定的下標(biāo)來標(biāo)識。數(shù)組的組成如圖所示。數(shù)組元素是組成數(shù)組的基本單元,必須具有相同的數(shù)據(jù)類型,并且“數(shù)組名”和“下標(biāo)”唯一確定。數(shù)組是有序數(shù)據(jù)的集合,有序是指系統(tǒng)在存放的時候會為數(shù)據(jù)元素分配一段連續(xù)的存儲空間,數(shù)據(jù)元素在這段空間內(nèi)按照先后順序進(jìn)行存放。數(shù)組是最為簡單的數(shù)據(jù)結(jié)構(gòu)之一,其用途十分廣泛。讀者學(xué)習(xí)本章之后,可以用一維數(shù)組來存儲一個線性序列,以便對該序列進(jìn)行各種操作;可以用二維數(shù)組來存儲一個矩陣,從而實現(xiàn)更為復(fù)雜的數(shù)據(jù)處理?!皵?shù)組名”是用戶定義的數(shù)組標(biāo)識符;“下標(biāo)”:是數(shù)組中各個元素之間的相對位置。
數(shù)組的概念
C數(shù)組的分類數(shù)組可以用兩種方法進(jìn)行分類,數(shù)組元素的類型和下標(biāo)的個數(shù)。按照數(shù)組元素的類型分類數(shù)組元素是組成數(shù)組的基本單元,必須具有相同的數(shù)據(jù)類型。也就是說數(shù)組中有一個是整型變量,那么整個數(shù)組中的變量都是整型類型的,這樣的數(shù)組就叫做整形數(shù)組。如果有一個變量是實型,那么說明整個數(shù)組都是實型變量,叫做實型數(shù)組。按照數(shù)組元素的類型可把數(shù)組分為:整型數(shù)組、實型數(shù)組、字符數(shù)組、指針數(shù)組等類型。按照下標(biāo)的個數(shù)進(jìn)行分類因為數(shù)組的下標(biāo)是唯一確定的,所以可以按照下標(biāo)個數(shù)進(jìn)行分類,分別為:一維數(shù)組、二維數(shù)組和多維數(shù)組。在C語言中,有時將數(shù)組元素稱為下標(biāo)變量,而普通變量稱為標(biāo)量變量。本章將按照下標(biāo)個數(shù)分類的方式對數(shù)組進(jìn)行介紹,即一維數(shù)組、二維數(shù)組和多維數(shù)組的順序進(jìn)行詳細(xì)講解。 數(shù)組的維數(shù)所說的一維、二維、多維的維數(shù)都是按照數(shù)組元素的下標(biāo)個數(shù)進(jìn)行區(qū)分的。使用數(shù)組的時候,如果只有一個下標(biāo),則稱為一維數(shù)組,一維數(shù)組一般表示一種線性數(shù)據(jù)的組合。二維數(shù)組則是有兩個下標(biāo),可以將其看做是平面數(shù)據(jù)的組合。多維組合自然是有多個下標(biāo),可以看做是多面體。如三維數(shù)組有三個下標(biāo),三維動畫、三維立體聲等等,可以看做是立方體。編寫程序的時候需要多少個相對位置表示出來,維數(shù)就是多少,C語言對數(shù)組下標(biāo)的數(shù)量沒有限制。C語言中的數(shù)據(jù)類型包括基本類型、構(gòu)造類型、指針類型和空類型。數(shù)組為構(gòu)造類型,構(gòu)造類型除了數(shù)組外,還包括結(jié)構(gòu)體類型和共用體類型。一維數(shù)組一維數(shù)組指的是數(shù)組元素只有一個下標(biāo)的組數(shù),也就是說一維數(shù)組是相對最為簡單的數(shù)組類型,由此可以看出,掌握好一維數(shù)組的相關(guān)知識,是學(xué)好數(shù)組的前提和基礎(chǔ),希望能夠理解深刻,并能夠熟練的掌握。
一維數(shù)組的定義在前面已經(jīng)講解C語言使用變量時有一條規(guī)定:“先定義,后使用。”定義數(shù)組和定義變量一樣,定義數(shù)組的目的是為某組數(shù)據(jù)申請內(nèi)存控件并命名這塊內(nèi)存空間,以便在后面的程序中使用。所以使用數(shù)組和使用變量一樣,在使用數(shù)組前,一定要先進(jìn)行定義,一維數(shù)組是用以存儲一維數(shù)列中數(shù)據(jù)的集合。雖然使用數(shù)組和使用變量一樣都要“先定義,后使用?!钡嵌x數(shù)組和定義變量還是有不同之處,不一樣的是,定義數(shù)組還意味著對這個數(shù)組進(jìn)行構(gòu)造。在定義或者構(gòu)造一個數(shù)組時,需要為這組數(shù)據(jù)占據(jù)的內(nèi)存空間取一個共同的名字,這個名字也就是這組數(shù)據(jù)共同的名字,這個名字需要滿足標(biāo)識符法則。在定義數(shù)組時要明確向編譯器表明兩點:(1)數(shù)組元素的類型。(2)數(shù)組元素的總個數(shù)一維數(shù)組一維數(shù)組定義的一般形式如下。類型說明符數(shù)組標(biāo)識符[常量表達(dá)式];類型說明符:表示數(shù)組中的所有元素類型,可以是任意一種簡單類型、構(gòu)造類型或指針。數(shù)組標(biāo)識符:表示這個數(shù)組型變量的名稱,所以有時也叫做數(shù)組名,其命名規(guī)則與變量名一致(由字母、數(shù)字、下劃線組成,但是必須是以字母或者是下劃線開頭)。中括號(方括號):這對中括號是數(shù)組標(biāo)志,同時也是數(shù)組的重要組成部分,不能缺少,也不可以轉(zhuǎn)換成其他符號。常量表達(dá)式:中括號內(nèi)的表達(dá)式必須為常量和符號常量,一般情況下不能為變量。常量表達(dá)式定義了數(shù)組中存放的數(shù)據(jù)元素的個數(shù),即數(shù)組長度。例如a[5],5表示數(shù)組中有5個元素,下標(biāo)從0開始,到4結(jié)束。例如定義一個數(shù)組。inta[5];代碼中的int為數(shù)組元素的類型,而a表示的是數(shù)組變量名,括號中的5表示的是數(shù)組中包含的元素個數(shù)。在數(shù)組a[5]中只能使用a[0]、a[1]、a[2]、a[3]、a[4]而不能使用a[5],若使用a[5]會出現(xiàn)下標(biāo)越界的錯誤。一維數(shù)組我們在前面已經(jīng)講過宏定義#define,如果是用#define宏定義一個符號常量,這個符號常量可以用來聲明數(shù)組的元素個數(shù)。如下所示。#definea9……inti[a];上述代碼首先通過宏定義#define定義符號常量a為9,再使用符號常量a聲明數(shù)組元素個數(shù),i[a]相當(dāng)于i[9]。中括號里面也可以是常量表達(dá)式,例如“i[6+3]”也等同于i[9]。以上兩種聲明都是具有9個元素的數(shù)組。對于一維數(shù)組,可以使用下列公式計算所需要的內(nèi)存字節(jié)數(shù)??傋止?jié)數(shù)=sizeof(類型)×數(shù)組長度。定義一維數(shù)組雖然簡單,但是也不可以馬虎大意,下面是定義一維數(shù)組時應(yīng)該注意的幾條事項:數(shù)組名不允許與其他變量名相同;定義數(shù)組的后面一定不要忘記加上分號“;”,只有加上分號才是一條完整的語句。在C89標(biāo)準(zhǔn)的編譯器中,一維數(shù)組中括號“[]”內(nèi)不要使用動態(tài)定義。一維數(shù)組的一般形式中括號內(nèi)是常量表達(dá)式,而常量表達(dá)式可以是整型常量、整型的符號常量和整型的常量表達(dá)式,由此可以看出,C語言中是不允許數(shù)組進(jìn)行動態(tài)定義的。例如下面定義的方法在C89標(biāo)準(zhǔn)中,是不符合標(biāo)準(zhǔn)的。inti=9;inta[i];在C89標(biāo)準(zhǔn)的編譯器中,是不允許對數(shù)組長度使用動態(tài)定義的,但是在C99標(biāo)準(zhǔn)的編譯器則是合法的。上述代碼的定義方法稱為變長數(shù)組,變長數(shù)組允許動態(tài)分配存儲單元。在讀者使用數(shù)組定義時,希望盡量不要使用動態(tài)定義,以免出現(xiàn)不必要的錯誤。一維數(shù)組
一維數(shù)組的引用數(shù)組定義完成后就要使用該數(shù)組,可以通過引用數(shù)組元素的方式,使用該數(shù)組中的元素。在引用數(shù)組的時候應(yīng)該注意下標(biāo)的范圍,其范圍是從0~(常量表達(dá)式-1)。在C語言中,數(shù)組元素不能夠整體被引用,只能逐個引用。數(shù)組元素的表示的一般形式如下。數(shù)組標(biāo)識符[下標(biāo)]例如引用一個數(shù)組變量a中的第3個變量。a[2];實例:使用數(shù)組保存數(shù)據(jù)一維數(shù)組的初始化初始化數(shù)組就是在定義數(shù)組變量的同時給其中的數(shù)組元素賦值。在定義數(shù)組之后,就可以對數(shù)組進(jìn)行初始化。一維數(shù)組初始化的一般形式如下:類型說明符數(shù)組名[常量表達(dá)式]={值1,值2,……,值n};如果說定義是在內(nèi)存中開辟存儲單元,對一維數(shù)組的初始化主要有三種形式,下面對這三種形式進(jìn)行詳細(xì)講解。在定義數(shù)組時可直接對全部的數(shù)組元素賦初值,即全部初始化。例如:inti,a[6]={1,2,3,4,5,6};實例
初始化一維數(shù)組
一維數(shù)組可以只給一部分元素賦值,當(dāng)“{}”中值的個數(shù)少于元素個數(shù)時,只給前面部分元素賦初值,沒有賦值的元素默認(rèn)值為0,這種初始化為部分初始化。例如:inta[6]={10,20,30};數(shù)組變量a包含6個元素,不過在初始化的時候只給出了3個值。于是數(shù)組中前三個元素的值對應(yīng)括號中給出的值,在數(shù)組中沒有得到值的元素被系統(tǒng)自動賦值為0。在給數(shù)組元素初始化的時候,雖然只賦值一部分是可以的,但是絕對不能賦初值的個數(shù)多于數(shù)組中元素的個數(shù),下面的賦值就是不允許的:inta[3]={10,20,30,40,50}。在對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度,這種方法雖然可行,但是在此筆者并不推薦讀者使用這種方法。之前在定義數(shù)組時,都在數(shù)組變量后指定了數(shù)組的元素個數(shù)。C語言還允許在定義數(shù)組時不用指定長度,例如:inta[]={10,20,30,40,50};像上面的語句,大括號中有5個元素,系統(tǒng)就會根據(jù)給定的初始化元素值的個數(shù)來定義數(shù)組的長度,所以該數(shù)組變量的長度為5。
實例
不指定數(shù)組的元素個數(shù)
一維數(shù)組
一維數(shù)組的應(yīng)用
一維數(shù)組的注意事項在使用一維數(shù)組時,初學(xué)者常常會出現(xiàn)一些不必要的錯誤,下面對應(yīng)注意的事項進(jìn)行詳解:1.在為一維數(shù)組賦值時,只能給數(shù)組元素逐個賦值,不能給數(shù)組整體賦值。例如給一維數(shù)組元素全部賦值為10,正確的編寫方式為:inta[10]={10,10,10,10,10,10,10,10,10,10};錯誤的編寫方式為:inta[10]={10};唯有一種情況可以給數(shù)組元素整體賦值,就是給數(shù)組元素全部賦值為0。下面給數(shù)組元素賦值為0可以用下面三種編寫方式。inta[10]={0,0,0,0,0,0,0,0,0,0};inta[10]={0};inta[10]={};2.如果初值的類型與數(shù)組元素類型不一致,則把初值類型轉(zhuǎn)換為數(shù)組元素的類型。3.避免數(shù)組越界。二維數(shù)組在日常生活中有很多數(shù)據(jù)是二維的或多維的。例如:二維表、數(shù)學(xué)中的矩陣、甚至是圖像文件等數(shù)據(jù)都是以二維形式存儲的。因為一維數(shù)組只有一個下標(biāo),這就限制了一維數(shù)組解決問題的范圍。如果解決矩陣相關(guān)的問題,雖然有時用一維數(shù)組也可以解決,但是卻繁瑣、麻煩、而且易出錯。這時就需要使用功能更強(qiáng)大,數(shù)據(jù)存儲更多的二維數(shù)組。二維表:就是由行、列組成的表格。這么說可能不是很理解,舉一兩個實際生活中應(yīng)用的例子就容易明白了。如學(xué)校用的課程表、公司用的工資表,這些都是二維表,就連常常用到的excel表格也是二維表,而且功能非常強(qiáng)大。知道行號列號就可以確定一個表中的數(shù)據(jù),這是二維表的特點。二維數(shù)組二維數(shù)組的定義二維數(shù)組可以看成是一維數(shù)組的延伸和擴(kuò)展,一維數(shù)組就像是一條直線,雖然可以表示所有數(shù)據(jù),但是卻不能表示出數(shù)據(jù)之間的關(guān)系。二維數(shù)組則與之不同,二維數(shù)組可以就像是一個平面,可以表示出數(shù)據(jù)之間二維表的關(guān)系,二維數(shù)組主要應(yīng)用于表示二維表和矩陣。二維數(shù)組的定義和一維數(shù)組大致相同,只是比一維數(shù)組多了一個常量表達(dá)式,其一般形式如下。數(shù)據(jù)類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];“類型說明符”用來說明數(shù)組中元素的數(shù)據(jù)類型。“數(shù)組名”唯一標(biāo)識該二維數(shù)組。第一個方括號“[]”中的常量表達(dá)式1標(biāo)識第一維下標(biāo)的長度,第二方括號“[]”中常量表達(dá)式2標(biāo)識第二維下標(biāo)的長度?!俺A勘磉_(dá)式1”被稱為行下標(biāo),“常量表達(dá)式2”被稱為列下標(biāo)。如果有二維數(shù)組a[n][m],則二維數(shù)組的下標(biāo)取值范圍如下。行下標(biāo)的取值范圍0~n-1。列下標(biāo)的取值范圍0~m-1。二維數(shù)組的最大下標(biāo)元素是a[n-1][m-1]。例如定義一個4行5列的整型數(shù)組。inta[4][5];說明了一個四行五列的數(shù)組,數(shù)組名為a,其下標(biāo)變量的類型為整型。該數(shù)組的下標(biāo)變量共有4×5個,即:二維數(shù)組二維數(shù)組的引用與一維數(shù)組相同,定義了二維數(shù)組后就要用它存儲數(shù)據(jù)、管理數(shù)據(jù)。二維數(shù)組的元素也稱為雙下標(biāo)變量,二維數(shù)組元素的一般形式為:數(shù)組名[下標(biāo)][下標(biāo)];下標(biāo)可以是整型常量或整型表達(dá)式。例如對一個二維數(shù)組的元素進(jìn)行引用:a[1][2];這行代碼表示的是對a數(shù)組中第2行的第3個元素進(jìn)行引用。需要注意的是,不管是行下標(biāo)或者是列下標(biāo),其索引都是從0開始的。這里和一維數(shù)組一樣要注意下標(biāo)越界的問題,例如:inta[2][4];… /*對數(shù)組元素進(jìn)行賦值*/a[2][4]=9; /*錯誤!*/上面代碼這種表示是錯誤的:首先a為2行4列的數(shù)組,那么它的行下標(biāo)的最大值為1,列下標(biāo)的最大值為3,所以a[2][4]超過了數(shù)組的范圍,下標(biāo)越界。定義數(shù)組a[2][4]和引用元素a[2][4]時是不同的。在定義數(shù)組a[2][4]時,2和4分別代表的是數(shù)組的維數(shù)和維數(shù)的范圍;在引用元素a[2][4]時,2和4是數(shù)組元素的下標(biāo)值,僅僅是代表數(shù)組中的一個元素。二維數(shù)組二維數(shù)組的初始化二維數(shù)組和一維數(shù)組一樣,也可以在聲明時對其進(jìn)行初始化。二維數(shù)組的初始化方式比一維數(shù)組較為復(fù)雜,但是都是由一維數(shù)組初始化方法衍生而來的,在給二維數(shù)組賦初值時,有以下4種形式:按行連續(xù)賦值,即將所有數(shù)據(jù)寫在一個大括號內(nèi),按照數(shù)組元素排列順序?qū)υ刭x值。如:inta[2][2]={1,2,3,4};如果大括號內(nèi)的數(shù)據(jù)少于數(shù)組元素的個數(shù)時,系統(tǒng)將默認(rèn)后面沒被賦值的元素值為0。以矩陣形式表示為:在為所有元素賦初值時,可以省略行下標(biāo),但是不能省略列下標(biāo)。如:inta[][3]={1,2,3,4,5,6};系統(tǒng)會根據(jù)數(shù)據(jù)的個數(shù)進(jìn)行分配,一共有6個數(shù)據(jù),而數(shù)組每行分為3列,當(dāng)然可以確定數(shù)組為2行。以矩陣形式表示為:按行分段賦值,可以分行給數(shù)組元素賦值,如:inta[2][3]={{1,2,3},{4,5,6}};在分行賦值時,可以只對部分元素賦值,如:inta[2][3]={{1,2},{4,5}};在上行代碼中,各個元素的值如下。a[0][0]的值是:1;a[0][1]的值是:2;a[0][2]的值是:0;a[1][0]的值是:4;a[1][1]的值是:5;a[1][2]的值是:0;以矩陣形式表示為:二維數(shù)組二維數(shù)組也可以直接對數(shù)組元素賦值,例如:inta[2][3];a[0][0]=1;a[0][1]=2;這種賦值的方式,就是使用數(shù)組引用的數(shù)組中的元素。實例
本示例實現(xiàn)將一個二維數(shù)組的行和列元素互換,存到另一個二維數(shù)組中。二維數(shù)組應(yīng)用下面將通過一個C語言經(jīng)典的實例使讀者了解二維數(shù)組的應(yīng)用。實例
打印出楊輝三角(要求打印出頭10行)。
多維數(shù)組在講解二維數(shù)組時,提到二維數(shù)組是一維數(shù)組的延伸和拓展,因此多維數(shù)組可以說成是二維數(shù)組的延伸和拓展。多維數(shù)組相對二維數(shù)組來講,可以用于處理更加復(fù)雜的數(shù)據(jù)問題,因此多維數(shù)組相對二維數(shù)組來講更加難以掌握,需要多加練習(xí)使用。多維數(shù)組的定義和二維數(shù)組相同,只是下標(biāo)更多,一般形式如下。數(shù)據(jù)類型數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]…[常量表達(dá)式n];例如聲明多維數(shù)組如下。inta1[3][4][5];inta2[9][8]8][9];在上面的代碼中分別定義了一個三維數(shù)組a1和一個四維數(shù)組a2。由于數(shù)組元素的位置都可以通過偏移量計算,所以對于三維數(shù)組a[m][n][p]來說,元素a[i][j][k]所在的地址是從a[0][0][0]算起到(i*n*p+j*p+k)個單位的地方。二維以上的數(shù)組在編寫程序的過程中很少使用,主要是因為這些書主要占用大量的存儲空間。例如inta2[9][8][8][9]四維基本整型數(shù)組,那么需要9*8*8*9*2個即10368個字節(jié)的存儲空間。
字符數(shù)組除了前面介紹的整型數(shù)組、浮點型數(shù)組外,還有一種非常重要的數(shù)組就是字符數(shù)組。數(shù)組中的元素類型為字符型時稱為之字符數(shù)組。字符數(shù)組即為char型數(shù)組,使用以存放char型數(shù)據(jù)的數(shù)組容器。字符數(shù)組中的每一個元素可以存放一個字符。字符數(shù)組的定義和使用方法與其他基本類型的數(shù)組大致相同。1.字符數(shù)組的定義字符數(shù)組的定義與其它數(shù)據(jù)類型的數(shù)組定義類似,一般形式如下:char數(shù)組標(biāo)識符[常量表達(dá)式];因為要定義是字符型數(shù)據(jù),所以在數(shù)組標(biāo)識符前所用的類型是char。后面括號中表示的是數(shù)組元素的數(shù)量。例如定義一個字符數(shù)組ca。charca[5];其中的ca表示數(shù)組的表示符,而括號中的5表示數(shù)組中包含5個字符型的變量元素。
2.字符數(shù)組的引用字符數(shù)組的引用和其他類型數(shù)據(jù)引用一樣,也是使用下標(biāo)的形式,例如引用上面定義的數(shù)組ca中的元素:ca[0]=’H’;ca[1]=’e’;ca[2]=’l’;ca[3]=’l’;ca[4]=’o’;上面的代碼依次引用數(shù)組中元素,為其進(jìn)行賦值。字符數(shù)組3.字符數(shù)組初始化與其他變量一樣,使用在對字符數(shù)組進(jìn)行初始化操作時有一下幾種方法:逐個字符賦給數(shù)組中各元素這是最容易理解的初始化字符數(shù)組的方式,例如初始化一個字符數(shù)組:charca[12]={'H','E','L','L','O',',','M','I','N','G','R','I'};定義包含12個元素的字符數(shù)組,在初始化的大括號中,每一個字符對應(yīng)賦值一個數(shù)組元素。實例
使用字符數(shù)組輸出一個字符串,定義一個字符數(shù)組通過初始化操作保存字符串“HELLO,MINGRI”,然后通過循環(huán)引用每一個數(shù)組元素進(jìn)行輸出操作,最后將字符串“HELLO,MINGRI”輸出在顯示器上。如果在定義字符數(shù)組時進(jìn)行初始化,可以省略數(shù)組長度如果初值個數(shù)與預(yù)定的數(shù)組長度相同,在定義時可以省略數(shù)組長度,系統(tǒng)會自動根據(jù)初值個數(shù)確定數(shù)組長度。例如上面初始化字符數(shù)組的代碼可以寫成:charca[]={'H','E','L','L','O',',','M','I','N','G','R','I'};在代碼中可以看到定義的ca[]中沒有給出數(shù)組的大小,但是根據(jù)初值的個數(shù)會確定數(shù)組的長度為12。利用字符串給字符數(shù)組賦初值。通常用一個字符數(shù)組來存放一個字符串。例如用字符串的方式對數(shù)組作初始化賦值如下。charca[]={"HELLO,MINGRI"};或者將{}去掉,寫成:charca[]="HELLO,MINGRI";實例
使用二維字符數(shù)組輸出一個鉆石形狀。字符數(shù)組4.字符數(shù)組的結(jié)束標(biāo)志在C語言中,使用字符數(shù)組保存字符串,也就使用一個一維數(shù)組保存字符串中的每一個字符。字符串總是以'\0'作為串的結(jié)束符。因此當(dāng)把一個字符串存入一個數(shù)組時,也把結(jié)束符'\0'存入數(shù)組,并以此作為該字符串是否結(jié)束的標(biāo)志。系統(tǒng)會自動在字符串的末尾為其添加'\0'作為結(jié)束符,不必我們手動填寫。例如在初始化一個字符數(shù)組時。charc[]="Hello";用字符串方式賦值比用字符逐個賦值要多占一個字節(jié),多占的這個字節(jié)用于存放字符串結(jié)束標(biāo)志‘\0’。那么上面的字符數(shù)組cA在內(nèi)存中的實際存放情況如圖所示。'\0'是由C編譯系統(tǒng)自動加上的。所以上面的賦值語句等價于:charc[]={'H','e','l','l','o','\0'};是否需要加'\0',完全根據(jù)需要決定。但是由于系統(tǒng)對字符串常量自動加一個'\0'。因此,為了使處理方法一致,便于測定字符串的實際長度,以及在程序中作相應(yīng)的處理,在字符數(shù)組也常常認(rèn)為的加上一個轉(zhuǎn)義字符'\0'。例如:charc[6]={'H','e','l','l','o','\0'};
字符數(shù)組5字符數(shù)組的輸出字符數(shù)組的輸入輸出有兩種方法:使用格式符“%c”進(jìn)行輸出使用格式符“%c”,實現(xiàn)字符數(shù)組中字符的逐個輸出。例如循環(huán)輸出字符數(shù)組中的元素:for(i=0;i<5;i++) /*進(jìn)行循環(huán)*/{printf("%c",ca[i]); /*輸出字符數(shù)組元素*/}其中變量為循環(huán)的控制變量,并且在循環(huán)中作為數(shù)組的下標(biāo),進(jìn)行循環(huán)輸出。使用格式符“%s”進(jìn)行輸出使用格式符“%s”,將整個字符串依次輸出。例如輸出一個字符串:charca[]="GoodDay!"; /*初始化字符數(shù)組*/printf("%s",ca); /*輸出字符串*/其中使用格式符%s將字符串進(jìn)行輸出。注意以下幾種情況:輸出字符不包括結(jié)束符'\0'。用“%s”格式輸出字符串時,printf函數(shù)中的輸出項是字符數(shù)組名ca,而不是數(shù)組中的元素名ca[0]等。如果數(shù)組長度大于字符串實際長度,也只輸出直到'\0'為止。如果一個字符數(shù)組中包含多個'\0'結(jié)束字符,則在遇到第一個'\0'時輸出就結(jié)束。實例
使用兩種方式輸出字符串字符數(shù)組6.字符數(shù)組的輸入字符數(shù)組的輸入也是分為兩種方法:使用格式符%c使字符逐個輸入,例如下面代碼:for(i=0;i<10;i++)/*進(jìn)行循環(huán)*/{scanf("%c",&c[i]); /*要求輸入字符數(shù)組元素*/}使用格式符“%s”進(jìn)行輸入使用格式符“%s”,將整個字符串依次輸入。例如輸入一個字符串:chars[9]; /*定義數(shù)組*/scanf(“%s”,s); /*要求輸入字符串*/如果使用scanf函數(shù)通過格式符“%s”進(jìn)行輸入時,輸入的字符串不要帶有空格或者是Enter鍵,因為空格和Enter鍵都會被認(rèn)為是數(shù)據(jù)的分隔符,而不認(rèn)為是字符串的一部分,不會作為數(shù)據(jù)保存。實例
使用格式符%s進(jìn)行輸入實例
輸出完整的帶有空格的字符串
7.字符數(shù)組應(yīng)用實例
字符升序排列,將已按升序排好的字符串a(chǎn)和字符串b按升序歸并到字符串c中并輸出。
字符串處理函數(shù)在編寫程序時,經(jīng)常會對字符和字符串進(jìn)行操作,轉(zhuǎn)換字符的大小寫,求字符串長度等,都可以使用字符函數(shù)和字符串函數(shù)來解決。C語言標(biāo)準(zhǔn)函數(shù)庫專門為其提供了一系列處理函數(shù)??梢詫崿F(xiàn)字符串的輸入、輸出、復(fù)制、連接、比較、轉(zhuǎn)換和獲取字符串的長度等功能。使用字符串處理函數(shù)時,要用編譯預(yù)處理命令#include將頭文件string.h包含進(jìn)來,當(dāng)然puts()和gets函數(shù)除外,因為它們是標(biāo)準(zhǔn)的輸入輸出函數(shù),需要的是頭文件stdio.h。在編寫程序過程中合理有效地使用這些字符串函數(shù)可以提高編程效率同時還可以提高程序性能。本節(jié)將對字符串處理函數(shù)進(jìn)行介紹。在前些章節(jié),已經(jīng)詳細(xì)的介紹過字符串的輸入和輸出函數(shù):puts()函數(shù)和gets()函數(shù),在本節(jié)就不再重復(fù)敘述。1.字符串復(fù)制在字符串操作中,字符串復(fù)制是比較常用的操作之一,在字符串處理函數(shù)中包含strcpy函數(shù),該函數(shù)將復(fù)制特定長度的字符串到另一個字符串中。其語法格式如下:strcpy(目的字符數(shù)組名,源字符數(shù)組名)功能:把源字符數(shù)組中的字符串拷貝到目的字符數(shù)組中。字符串結(jié)束標(biāo)志‘\0’也一同拷貝。下面通過實例來介紹一下strcpy函數(shù)的使用。實例
字符串復(fù)制字符串處理函數(shù)2.字符串連接字符串連接就是將一個字符串連接到另一個字符串的末尾,使其組合成一個新的字符串,在字符串處理函數(shù)中,strcat函數(shù)就具有字符串連接的功能。其語法格式如下:strcat(目的字符數(shù)組名,源字符數(shù)組名)功能:把源字符數(shù)組中的字符串連接到目的字符數(shù)組中字符串的后面,并刪去目的字符數(shù)組中原有的串結(jié)束標(biāo)志‘\0’。因此,目的字符數(shù)組必須擁有足夠大的長度,以免發(fā)生因不能裝下連接源字符數(shù)組后的新字符串,而產(chǎn)生的錯誤。字符串復(fù)制實質(zhì)上是用源字符數(shù)組中的字符串覆蓋目的字符數(shù)組中的字符串,而字符串連接則不存在覆蓋的問題,只是單純的將源字符數(shù)組中的字符串連接到目的字符數(shù)組中的字符串的后面。下面通過實例來介紹一下strcat函數(shù)的使用。實例
字符串連接
字符串處理函數(shù)3.字符串比較字符串比較需要使用具有在字符串間進(jìn)行比較功能的strcmp函數(shù)。其語法格式如下。strcmp(字符數(shù)組名1,字符數(shù)組名2)功能:字符串比較就是將一個字符串與另一個
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 沙河紋眉活動策劃方案
- 概念活動策劃方案
- 武術(shù)公益課活動方案
- 母親節(jié)網(wǎng)上活動方案
- 檢察院包粽子活動方案
- 夢幻西游端午活動方案
- 樓盤合影活動策劃方案
- 水族館展覽活動方案
- 植物變色大賽活動方案
- 正宗草莓促銷活動方案
- 2025年國家公務(wù)員考試(行測)經(jīng)典75道邏輯推理題(包過)(含答案)
- 工業(yè)機(jī)器人講課件
- 篩網(wǎng)維護(hù)使用管理制度
- ??谱o(hù)士基地管理制度
- 2025年1月遼寧省普通高中學(xué)業(yè)水平合格性考試英語試題(原卷版)
- 二年級下二升三數(shù)學(xué)暑假作業(yè)(人教)
- 期末達(dá)標(biāo)測試卷(含答案)2024-2025學(xué)年人教版七年級數(shù)學(xué)下冊
- 云南省昆明市2023-2024學(xué)年高二下學(xué)期期末質(zhì)量檢測數(shù)學(xué)試題(解析版)
- 2025年蘇教版四年級(下)期末考試數(shù)學(xué)試卷(含答案)
- 早期腫瘤篩查
- 農(nóng)業(yè)托管經(jīng)營協(xié)議書
評論
0/150
提交評論