c語(yǔ)言開(kāi)發(fā)入門(mén)及項(xiàng)目實(shí)戰(zhàn)課件第9章數(shù)組_第1頁(yè)
c語(yǔ)言開(kāi)發(fā)入門(mén)及項(xiàng)目實(shí)戰(zhàn)課件第9章數(shù)組_第2頁(yè)
c語(yǔ)言開(kāi)發(fā)入門(mén)及項(xiàng)目實(shí)戰(zhàn)課件第9章數(shù)組_第3頁(yè)
c語(yǔ)言開(kāi)發(fā)入門(mén)及項(xiàng)目實(shí)戰(zhàn)課件第9章數(shù)組_第4頁(yè)
c語(yǔ)言開(kāi)發(fā)入門(mén)及項(xiàng)目實(shí)戰(zhàn)課件第9章數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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)介

數(shù)組

教學(xué)目的內(nèi)容1

教學(xué)要求2

重點(diǎn)難點(diǎn)3

教學(xué)內(nèi)容4教學(xué)目的在編寫(xiě)程序的過(guò)程中,經(jīng)常會(huì)遇到使用很多數(shù)據(jù)量的時(shí)候,處理每一個(gè)數(shù)據(jù)量就要有一個(gè)相對(duì)應(yīng)的變量,如果每一個(gè)變量都要單獨(dú)進(jìn)行定義的話就會(huì)變得很繁瑣,使用數(shù)組就可以解決這種情況。本講致力于使讀者掌握一維數(shù)組和二維數(shù)組的作用,并且能運(yùn)用所學(xué)知識(shí)解決一些實(shí)際的問(wèn)題。掌握字符數(shù)組的使用及其相關(guān)的操作。通過(guò)一維數(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)行編程的方法。重點(diǎn)難點(diǎn)重點(diǎn):一維數(shù)組和二維數(shù)組的定義與引用;字符串?dāng)?shù)組的使用

;字符串處理函數(shù);應(yīng)用數(shù)組進(jìn)行編程。難點(diǎn):二維數(shù)組的應(yīng)用;字符串?dāng)?shù)組的應(yīng)用。教學(xué)內(nèi)容多維數(shù)組;數(shù)組的概念;一維數(shù)組;二維數(shù)組;字符數(shù)組;字符串處理函數(shù);熟練應(yīng)用數(shù)組。數(shù)組的概念在使用計(jì)算機(jī)對(duì)數(shù)據(jù)進(jìn)行處理時(shí),經(jīng)常會(huì)遇到如下情況:具有相同數(shù)據(jù)類型的數(shù)據(jù)量很大,如全班同學(xué)的考試成績(jī)、公司中全部員工或者某旅游景點(diǎn)客流量記錄等。對(duì)于這種需要數(shù)據(jù)量非常大的程序,需要把同一類型的數(shù)據(jù)按照一定形式有序地組織起來(lái),這些有序數(shù)據(jù)的集合就稱為數(shù)組。數(shù)組也可以理解為類型相同、數(shù)目固定的若干個(gè)變量的有限集合。在C語(yǔ)言中,一個(gè)數(shù)組有一個(gè)統(tǒng)一的數(shù)組名,數(shù)組中的每一次元素有一個(gè)確定的下標(biāo)來(lái)標(biāo)識(shí)。數(shù)組的組成如圖所示。數(shù)組元素是組成數(shù)組的基本單元,必須具有相同的數(shù)據(jù)類型,并且“數(shù)組名”和“下標(biāo)”唯一確定。數(shù)組是有序數(shù)據(jù)的集合,有序是指系統(tǒng)在存放的時(shí)候會(huì)為數(shù)據(jù)元素分配一段連續(xù)的存儲(chǔ)空間,數(shù)據(jù)元素在這段空間內(nèi)按照先后順序進(jìn)行存放。數(shù)組是最為簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)之一,其用途十分廣泛。讀者學(xué)習(xí)本章之后,可以用一維數(shù)組來(lái)存儲(chǔ)一個(gè)線性序列,以便對(duì)該序列進(jìn)行各種操作;可以用二維數(shù)組來(lái)存儲(chǔ)一個(gè)矩陣,從而實(shí)現(xiàn)更為復(fù)雜的數(shù)據(jù)處理?!皵?shù)組名”是用戶定義的數(shù)組標(biāo)識(shí)符;“下標(biāo)”:是數(shù)組中各個(gè)元素之間的相對(duì)位置。

數(shù)組的概念

C數(shù)組的分類數(shù)組可以用兩種方法進(jìn)行分類,數(shù)組元素的類型和下標(biāo)的個(gè)數(shù)。按照數(shù)組元素的類型分類數(shù)組元素是組成數(shù)組的基本單元,必須具有相同的數(shù)據(jù)類型。也就是說(shuō)數(shù)組中有一個(gè)是整型變量,那么整個(gè)數(shù)組中的變量都是整型類型的,這樣的數(shù)組就叫做整形數(shù)組。如果有一個(gè)變量是實(shí)型,那么說(shuō)明整個(gè)數(shù)組都是實(shí)型變量,叫做實(shí)型數(shù)組。按照數(shù)組元素的類型可把數(shù)組分為:整型數(shù)組、實(shí)型數(shù)組、字符數(shù)組、指針數(shù)組等類型。按照下標(biāo)的個(gè)數(shù)進(jìn)行分類因?yàn)閿?shù)組的下標(biāo)是唯一確定的,所以可以按照下標(biāo)個(gè)數(shù)進(jìn)行分類,分別為:一維數(shù)組、二維數(shù)組和多維數(shù)組。在C語(yǔ)言中,有時(shí)將數(shù)組元素稱為下標(biāo)變量,而普通變量稱為標(biāo)量變量。本章將按照下標(biāo)個(gè)數(shù)分類的方式對(duì)數(shù)組進(jìn)行介紹,即一維數(shù)組、二維數(shù)組和多維數(shù)組的順序進(jìn)行詳細(xì)講解。 數(shù)組的維數(shù)所說(shuō)的一維、二維、多維的維數(shù)都是按照數(shù)組元素的下標(biāo)個(gè)數(shù)進(jìn)行區(qū)分的。使用數(shù)組的時(shí)候,如果只有一個(gè)下標(biāo),則稱為一維數(shù)組,一維數(shù)組一般表示一種線性數(shù)據(jù)的組合。二維數(shù)組則是有兩個(gè)下標(biāo),可以將其看做是平面數(shù)據(jù)的組合。多維組合自然是有多個(gè)下標(biāo),可以看做是多面體。如三維數(shù)組有三個(gè)下標(biāo),三維動(dòng)畫(huà)、三維立體聲等等,可以看做是立方體。編寫(xiě)程序的時(shí)候需要多少個(gè)相對(duì)位置表示出來(lái),維數(shù)就是多少,C語(yǔ)言對(duì)數(shù)組下標(biāo)的數(shù)量沒(méi)有限制。C語(yǔ)言中的數(shù)據(jù)類型包括基本類型、構(gòu)造類型、指針類型和空類型。數(shù)組為構(gòu)造類型,構(gòu)造類型除了數(shù)組外,還包括結(jié)構(gòu)體類型和共用體類型。一維數(shù)組一維數(shù)組指的是數(shù)組元素只有一個(gè)下標(biāo)的組數(shù),也就是說(shuō)一維數(shù)組是相對(duì)最為簡(jiǎn)單的數(shù)組類型,由此可以看出,掌握好一維數(shù)組的相關(guān)知識(shí),是學(xué)好數(shù)組的前提和基礎(chǔ),希望能夠理解深刻,并能夠熟練的掌握。

一維數(shù)組的定義在前面已經(jīng)講解C語(yǔ)言使用變量時(shí)有一條規(guī)定:“先定義,后使用。”定義數(shù)組和定義變量一樣,定義數(shù)組的目的是為某組數(shù)據(jù)申請(qǐng)內(nèi)存控件并命名這塊內(nèi)存空間,以便在后面的程序中使用。所以使用數(shù)組和使用變量一樣,在使用數(shù)組前,一定要先進(jìn)行定義,一維數(shù)組是用以存儲(chǔ)一維數(shù)列中數(shù)據(jù)的集合。雖然使用數(shù)組和使用變量一樣都要“先定義,后使用?!钡嵌x數(shù)組和定義變量還是有不同之處,不一樣的是,定義數(shù)組還意味著對(duì)這個(gè)數(shù)組進(jìn)行構(gòu)造。在定義或者構(gòu)造一個(gè)數(shù)組時(shí),需要為這組數(shù)據(jù)占據(jù)的內(nèi)存空間取一個(gè)共同的名字,這個(gè)名字也就是這組數(shù)據(jù)共同的名字,這個(gè)名字需要滿足標(biāo)識(shí)符法則。在定義數(shù)組時(shí)要明確向編譯器表明兩點(diǎn):(1)數(shù)組元素的類型。(2)數(shù)組元素的總個(gè)數(shù)一維數(shù)組一維數(shù)組定義的一般形式如下。類型說(shuō)明符數(shù)組標(biāo)識(shí)符[常量表達(dá)式];類型說(shuō)明符:表示數(shù)組中的所有元素類型,可以是任意一種簡(jiǎn)單類型、構(gòu)造類型或指針。數(shù)組標(biāo)識(shí)符:表示這個(gè)數(shù)組型變量的名稱,所以有時(shí)也叫做數(shù)組名,其命名規(guī)則與變量名一致(由字母、數(shù)字、下劃線組成,但是必須是以字母或者是下劃線開(kāi)頭)。中括號(hào)(方括號(hào)):這對(duì)中括號(hào)是數(shù)組標(biāo)志,同時(shí)也是數(shù)組的重要組成部分,不能缺少,也不可以轉(zhuǎn)換成其他符號(hào)。常量表達(dá)式:中括號(hào)內(nèi)的表達(dá)式必須為常量和符號(hào)常量,一般情況下不能為變量。常量表達(dá)式定義了數(shù)組中存放的數(shù)據(jù)元素的個(gè)數(shù),即數(shù)組長(zhǎng)度。例如a[5],5表示數(shù)組中有5個(gè)元素,下標(biāo)從0開(kāi)始,到4結(jié)束。例如定義一個(gè)數(shù)組。inta[5];代碼中的int為數(shù)組元素的類型,而a表示的是數(shù)組變量名,括號(hào)中的5表示的是數(shù)組中包含的元素個(gè)數(shù)。在數(shù)組a[5]中只能使用a[0]、a[1]、a[2]、a[3]、a[4]而不能使用a[5],若使用a[5]會(huì)出現(xiàn)下標(biāo)越界的錯(cuò)誤。一維數(shù)組我們?cè)谇懊嬉呀?jīng)講過(guò)宏定義#define,如果是用#define宏定義一個(gè)符號(hào)常量,這個(gè)符號(hào)常量可以用來(lái)聲明數(shù)組的元素個(gè)數(shù)。如下所示。#definea9……inti[a];上述代碼首先通過(guò)宏定義#define定義符號(hào)常量a為9,再使用符號(hào)常量a聲明數(shù)組元素個(gè)數(shù),i[a]相當(dāng)于i[9]。中括號(hào)里面也可以是常量表達(dá)式,例如“i[6+3]”也等同于i[9]。以上兩種聲明都是具有9個(gè)元素的數(shù)組。對(duì)于一維數(shù)組,可以使用下列公式計(jì)算所需要的內(nèi)存字節(jié)數(shù)??傋止?jié)數(shù)=sizeof(類型)×數(shù)組長(zhǎng)度。定義一維數(shù)組雖然簡(jiǎn)單,但是也不可以馬虎大意,下面是定義一維數(shù)組時(shí)應(yīng)該注意的幾條事項(xiàng):數(shù)組名不允許與其他變量名相同;定義數(shù)組的后面一定不要忘記加上分號(hào)“;”,只有加上分號(hào)才是一條完整的語(yǔ)句。在C89標(biāo)準(zhǔn)的編譯器中,一維數(shù)組中括號(hào)“[]”內(nèi)不要使用動(dòng)態(tài)定義。一維數(shù)組的一般形式中括號(hào)內(nèi)是常量表達(dá)式,而常量表達(dá)式可以是整型常量、整型的符號(hào)常量和整型的常量表達(dá)式,由此可以看出,C語(yǔ)言中是不允許數(shù)組進(jìn)行動(dòng)態(tài)定義的。例如下面定義的方法在C89標(biāo)準(zhǔn)中,是不符合標(biāo)準(zhǔn)的。inti=9;inta[i];在C89標(biāo)準(zhǔn)的編譯器中,是不允許對(duì)數(shù)組長(zhǎng)度使用動(dòng)態(tài)定義的,但是在C99標(biāo)準(zhǔn)的編譯器則是合法的。上述代碼的定義方法稱為變長(zhǎng)數(shù)組,變長(zhǎng)數(shù)組允許動(dòng)態(tài)分配存儲(chǔ)單元。在讀者使用數(shù)組定義時(shí),希望盡量不要使用動(dòng)態(tài)定義,以免出現(xiàn)不必要的錯(cuò)誤。一維數(shù)組

一維數(shù)組的引用數(shù)組定義完成后就要使用該數(shù)組,可以通過(guò)引用數(shù)組元素的方式,使用該數(shù)組中的元素。在引用數(shù)組的時(shí)候應(yīng)該注意下標(biāo)的范圍,其范圍是從0~(常量表達(dá)式-1)。在C語(yǔ)言中,數(shù)組元素不能夠整體被引用,只能逐個(gè)引用。數(shù)組元素的表示的一般形式如下。數(shù)組標(biāo)識(shí)符[下標(biāo)]例如引用一個(gè)數(shù)組變量a中的第3個(gè)變量。a[2];實(shí)例:使用數(shù)組保存數(shù)據(jù)一維數(shù)組的初始化初始化數(shù)組就是在定義數(shù)組變量的同時(shí)給其中的數(shù)組元素賦值。在定義數(shù)組之后,就可以對(duì)數(shù)組進(jìn)行初始化。一維數(shù)組初始化的一般形式如下:類型說(shuō)明符數(shù)組名[常量表達(dá)式]={值1,值2,……,值n};如果說(shuō)定義是在內(nèi)存中開(kāi)辟存儲(chǔ)單元,對(duì)一維數(shù)組的初始化主要有三種形式,下面對(duì)這三種形式進(jìn)行詳細(xì)講解。在定義數(shù)組時(shí)可直接對(duì)全部的數(shù)組元素賦初值,即全部初始化。例如:inti,a[6]={1,2,3,4,5,6};實(shí)例

初始化一維數(shù)組

一維數(shù)組可以只給一部分元素賦值,當(dāng)“{}”中值的個(gè)數(shù)少于元素個(gè)數(shù)時(shí),只給前面部分元素賦初值,沒(méi)有賦值的元素默認(rèn)值為0,這種初始化為部分初始化。例如:inta[6]={10,20,30};數(shù)組變量a包含6個(gè)元素,不過(guò)在初始化的時(shí)候只給出了3個(gè)值。于是數(shù)組中前三個(gè)元素的值對(duì)應(yīng)括號(hào)中給出的值,在數(shù)組中沒(méi)有得到值的元素被系統(tǒng)自動(dòng)賦值為0。在給數(shù)組元素初始化的時(shí)候,雖然只賦值一部分是可以的,但是絕對(duì)不能賦初值的個(gè)數(shù)多于數(shù)組中元素的個(gè)數(shù),下面的賦值就是不允許的:inta[3]={10,20,30,40,50}。在對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度,這種方法雖然可行,但是在此筆者并不推薦讀者使用這種方法。之前在定義數(shù)組時(shí),都在數(shù)組變量后指定了數(shù)組的元素個(gè)數(shù)。C語(yǔ)言還允許在定義數(shù)組時(shí)不用指定長(zhǎng)度,例如:inta[]={10,20,30,40,50};像上面的語(yǔ)句,大括號(hào)中有5個(gè)元素,系統(tǒng)就會(huì)根據(jù)給定的初始化元素值的個(gè)數(shù)來(lái)定義數(shù)組的長(zhǎng)度,所以該數(shù)組變量的長(zhǎng)度為5。

實(shí)例

不指定數(shù)組的元素個(gè)數(shù)

一維數(shù)組

一維數(shù)組的應(yīng)用

一維數(shù)組的注意事項(xiàng)在使用一維數(shù)組時(shí),初學(xué)者常常會(huì)出現(xiàn)一些不必要的錯(cuò)誤,下面對(duì)應(yīng)注意的事項(xiàng)進(jìn)行詳解:1.在為一維數(shù)組賦值時(shí),只能給數(shù)組元素逐個(gè)賦值,不能給數(shù)組整體賦值。例如給一維數(shù)組元素全部賦值為10,正確的編寫(xiě)方式為:inta[10]={10,10,10,10,10,10,10,10,10,10};錯(cuò)誤的編寫(xiě)方式為:inta[10]={10};唯有一種情況可以給數(shù)組元素整體賦值,就是給數(shù)組元素全部賦值為0。下面給數(shù)組元素賦值為0可以用下面三種編寫(xiě)方式。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ù)都是以二維形式存儲(chǔ)的。因?yàn)橐痪S數(shù)組只有一個(gè)下標(biāo),這就限制了一維數(shù)組解決問(wèn)題的范圍。如果解決矩陣相關(guān)的問(wèn)題,雖然有時(shí)用一維數(shù)組也可以解決,但是卻繁瑣、麻煩、而且易出錯(cuò)。這時(shí)就需要使用功能更強(qiáng)大,數(shù)據(jù)存儲(chǔ)更多的二維數(shù)組。二維表:就是由行、列組成的表格。這么說(shuō)可能不是很理解,舉一兩個(gè)實(shí)際生活中應(yīng)用的例子就容易明白了。如學(xué)校用的課程表、公司用的工資表,這些都是二維表,就連常常用到的excel表格也是二維表,而且功能非常強(qiáng)大。知道行號(hào)列號(hào)就可以確定一個(gè)表中的數(shù)據(jù),這是二維表的特點(diǎn)。二維數(shù)組二維數(shù)組的定義二維數(shù)組可以看成是一維數(shù)組的延伸和擴(kuò)展,一維數(shù)組就像是一條直線,雖然可以表示所有數(shù)據(jù),但是卻不能表示出數(shù)據(jù)之間的關(guān)系。二維數(shù)組則與之不同,二維數(shù)組可以就像是一個(gè)平面,可以表示出數(shù)據(jù)之間二維表的關(guān)系,二維數(shù)組主要應(yīng)用于表示二維表和矩陣。二維數(shù)組的定義和一維數(shù)組大致相同,只是比一維數(shù)組多了一個(gè)常量表達(dá)式,其一般形式如下。數(shù)據(jù)類型說(shuō)明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];“類型說(shuō)明符”用來(lái)說(shuō)明數(shù)組中元素的數(shù)據(jù)類型?!皵?shù)組名”唯一標(biāo)識(shí)該二維數(shù)組。第一個(gè)方括號(hào)“[]”中的常量表達(dá)式1標(biāo)識(shí)第一維下標(biāo)的長(zhǎng)度,第二方括號(hào)“[]”中常量表達(dá)式2標(biāo)識(shí)第二維下標(biāo)的長(zhǎng)度。“常量表達(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]。例如定義一個(gè)4行5列的整型數(shù)組。inta[4][5];說(shuō)明了一個(gè)四行五列的數(shù)組,數(shù)組名為a,其下標(biāo)變量的類型為整型。該數(shù)組的下標(biāo)變量共有4×5個(gè),即:二維數(shù)組二維數(shù)組的引用與一維數(shù)組相同,定義了二維數(shù)組后就要用它存儲(chǔ)數(shù)據(jù)、管理數(shù)據(jù)。二維數(shù)組的元素也稱為雙下標(biāo)變量,二維數(shù)組元素的一般形式為:數(shù)組名[下標(biāo)][下標(biāo)];下標(biāo)可以是整型常量或整型表達(dá)式。例如對(duì)一個(gè)二維數(shù)組的元素進(jìn)行引用:a[1][2];這行代碼表示的是對(duì)a數(shù)組中第2行的第3個(gè)元素進(jìn)行引用。需要注意的是,不管是行下標(biāo)或者是列下標(biāo),其索引都是從0開(kāi)始的。這里和一維數(shù)組一樣要注意下標(biāo)越界的問(wèn)題,例如:inta[2][4];… /*對(duì)數(shù)組元素進(jìn)行賦值*/a[2][4]=9; /*錯(cuò)誤!*/上面代碼這種表示是錯(cuò)誤的:首先a為2行4列的數(shù)組,那么它的行下標(biāo)的最大值為1,列下標(biāo)的最大值為3,所以a[2][4]超過(guò)了數(shù)組的范圍,下標(biāo)越界。定義數(shù)組a[2][4]和引用元素a[2][4]時(shí)是不同的。在定義數(shù)組a[2][4]時(shí),2和4分別代表的是數(shù)組的維數(shù)和維數(shù)的范圍;在引用元素a[2][4]時(shí),2和4是數(shù)組元素的下標(biāo)值,僅僅是代表數(shù)組中的一個(gè)元素。二維數(shù)組二維數(shù)組的初始化二維數(shù)組和一維數(shù)組一樣,也可以在聲明時(shí)對(duì)其進(jìn)行初始化。二維數(shù)組的初始化方式比一維數(shù)組較為復(fù)雜,但是都是由一維數(shù)組初始化方法衍生而來(lái)的,在給二維數(shù)組賦初值時(shí),有以下4種形式:按行連續(xù)賦值,即將所有數(shù)據(jù)寫(xiě)在一個(gè)大括號(hào)內(nèi),按照數(shù)組元素排列順序?qū)υ刭x值。如:inta[2][2]={1,2,3,4};如果大括號(hào)內(nèi)的數(shù)據(jù)少于數(shù)組元素的個(gè)數(shù)時(shí),系統(tǒng)將默認(rèn)后面沒(méi)被賦值的元素值為0。以矩陣形式表示為:在為所有元素賦初值時(shí),可以省略行下標(biāo),但是不能省略列下標(biāo)。如:inta[][3]={1,2,3,4,5,6};系統(tǒng)會(huì)根據(jù)數(shù)據(jù)的個(gè)數(shù)進(jìn)行分配,一共有6個(gè)數(shù)據(jù),而數(shù)組每行分為3列,當(dāng)然可以確定數(shù)組為2行。以矩陣形式表示為:按行分段賦值,可以分行給數(shù)組元素賦值,如:inta[2][3]={{1,2,3},{4,5,6}};在分行賦值時(shí),可以只對(duì)部分元素賦值,如:inta[2][3]={{1,2},{4,5}};在上行代碼中,各個(gè)元素的值如下。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ù)組也可以直接對(duì)數(shù)組元素賦值,例如:inta[2][3];a[0][0]=1;a[0][1]=2;這種賦值的方式,就是使用數(shù)組引用的數(shù)組中的元素。實(shí)例

本示例實(shí)現(xiàn)將一個(gè)二維數(shù)組的行和列元素互換,存到另一個(gè)二維數(shù)組中。二維數(shù)組應(yīng)用下面將通過(guò)一個(gè)C語(yǔ)言經(jīng)典的實(shí)例使讀者了解二維數(shù)組的應(yīng)用。實(shí)例

打印出楊輝三角(要求打印出頭10行)。

多維數(shù)組在講解二維數(shù)組時(shí),提到二維數(shù)組是一維數(shù)組的延伸和拓展,因此多維數(shù)組可以說(shuō)成是二維數(shù)組的延伸和拓展。多維數(shù)組相對(duì)二維數(shù)組來(lái)講,可以用于處理更加復(fù)雜的數(shù)據(jù)問(wèn)題,因此多維數(shù)組相對(duì)二維數(shù)組來(lái)講更加難以掌握,需要多加練習(xí)使用。多維數(shù)組的定義和二維數(shù)組相同,只是下標(biāo)更多,一般形式如下。數(shù)據(jù)類型數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]…[常量表達(dá)式n];例如聲明多維數(shù)組如下。inta1[3][4][5];inta2[9][8]8][9];在上面的代碼中分別定義了一個(gè)三維數(shù)組a1和一個(gè)四維數(shù)組a2。由于數(shù)組元素的位置都可以通過(guò)偏移量計(jì)算,所以對(duì)于三維數(shù)組a[m][n][p]來(lái)說(shuō),元素a[i][j][k]所在的地址是從a[0][0][0]算起到(i*n*p+j*p+k)個(gè)單位的地方。二維以上的數(shù)組在編寫(xiě)程序的過(guò)程中很少使用,主要是因?yàn)檫@些書(shū)主要占用大量的存儲(chǔ)空間。例如inta2[9][8][8][9]四維基本整型數(shù)組,那么需要9*8*8*9*2個(gè)即10368個(gè)字節(jié)的存儲(chǔ)空間。

字符數(shù)組除了前面介紹的整型數(shù)組、浮點(diǎn)型數(shù)組外,還有一種非常重要的數(shù)組就是字符數(shù)組。數(shù)組中的元素類型為字符型時(shí)稱為之字符數(shù)組。字符數(shù)組即為char型數(shù)組,使用以存放char型數(shù)據(jù)的數(shù)組容器。字符數(shù)組中的每一個(gè)元素可以存放一個(gè)字符。字符數(shù)組的定義和使用方法與其他基本類型的數(shù)組大致相同。1.字符數(shù)組的定義字符數(shù)組的定義與其它數(shù)據(jù)類型的數(shù)組定義類似,一般形式如下:char數(shù)組標(biāo)識(shí)符[常量表達(dá)式];因?yàn)橐x是字符型數(shù)據(jù),所以在數(shù)組標(biāo)識(shí)符前所用的類型是char。后面括號(hào)中表示的是數(shù)組元素的數(shù)量。例如定義一個(gè)字符數(shù)組ca。charca[5];其中的ca表示數(shù)組的表示符,而括號(hào)中的5表示數(shù)組中包含5個(gè)字符型的變量元素。

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ù)組初始化與其他變量一樣,使用在對(duì)字符數(shù)組進(jìn)行初始化操作時(shí)有一下幾種方法:逐個(gè)字符賦給數(shù)組中各元素這是最容易理解的初始化字符數(shù)組的方式,例如初始化一個(gè)字符數(shù)組:charca[12]={'H','E','L','L','O',',','M','I','N','G','R','I'};定義包含12個(gè)元素的字符數(shù)組,在初始化的大括號(hào)中,每一個(gè)字符對(duì)應(yīng)賦值一個(gè)數(shù)組元素。實(shí)例

使用字符數(shù)組輸出一個(gè)字符串,定義一個(gè)字符數(shù)組通過(guò)初始化操作保存字符串“HELLO,MINGRI”,然后通過(guò)循環(huán)引用每一個(gè)數(shù)組元素進(jìn)行輸出操作,最后將字符串“HELLO,MINGRI”輸出在顯示器上。如果在定義字符數(shù)組時(shí)進(jìn)行初始化,可以省略數(shù)組長(zhǎng)度如果初值個(gè)數(shù)與預(yù)定的數(shù)組長(zhǎng)度相同,在定義時(shí)可以省略數(shù)組長(zhǎng)度,系統(tǒng)會(huì)自動(dòng)根據(jù)初值個(gè)數(shù)確定數(shù)組長(zhǎng)度。例如上面初始化字符數(shù)組的代碼可以寫(xiě)成:charca[]={'H','E','L','L','O',',','M','I','N','G','R','I'};在代碼中可以看到定義的ca[]中沒(méi)有給出數(shù)組的大小,但是根據(jù)初值的個(gè)數(shù)會(huì)確定數(shù)組的長(zhǎng)度為12。利用字符串給字符數(shù)組賦初值。通常用一個(gè)字符數(shù)組來(lái)存放一個(gè)字符串。例如用字符串的方式對(duì)數(shù)組作初始化賦值如下。charca[]={"HELLO,MINGRI"};或者將{}去掉,寫(xiě)成:charca[]="HELLO,MINGRI";實(shí)例

使用二維字符數(shù)組輸出一個(gè)鉆石形狀。字符數(shù)組4.字符數(shù)組的結(jié)束標(biāo)志在C語(yǔ)言中,使用字符數(shù)組保存字符串,也就使用一個(gè)一維數(shù)組保存字符串中的每一個(gè)字符。字符串總是以'\0'作為串的結(jié)束符。因此當(dāng)把一個(gè)字符串存入一個(gè)數(shù)組時(shí),也把結(jié)束符'\0'存入數(shù)組,并以此作為該字符串是否結(jié)束的標(biāo)志。系統(tǒng)會(huì)自動(dòng)在字符串的末尾為其添加'\0'作為結(jié)束符,不必我們手動(dòng)填寫(xiě)。例如在初始化一個(gè)字符數(shù)組時(shí)。charc[]="Hello";用字符串方式賦值比用字符逐個(gè)賦值要多占一個(gè)字節(jié),多占的這個(gè)字節(jié)用于存放字符串結(jié)束標(biāo)志‘\0’。那么上面的字符數(shù)組cA在內(nèi)存中的實(shí)際存放情況如圖所示。'\0'是由C編譯系統(tǒng)自動(dòng)加上的。所以上面的賦值語(yǔ)句等價(jià)于:charc[]={'H','e','l','l','o','\0'};是否需要加'\0',完全根據(jù)需要決定。但是由于系統(tǒng)對(duì)字符串常量自動(dòng)加一個(gè)'\0'。因此,為了使處理方法一致,便于測(cè)定字符串的實(shí)際長(zhǎng)度,以及在程序中作相應(yīng)的處理,在字符數(shù)組也常常認(rèn)為的加上一個(gè)轉(zhuǎn)義字符'\0'。例如:charc[6]={'H','e','l','l','o','\0'};

字符數(shù)組5字符數(shù)組的輸出字符數(shù)組的輸入輸出有兩種方法:使用格式符“%c”進(jìn)行輸出使用格式符“%c”,實(shí)現(xiàn)字符數(shù)組中字符的逐個(gè)輸出。例如循環(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”,將整個(gè)字符串依次輸出。例如輸出一個(gè)字符串:charca[]="GoodDay!"; /*初始化字符數(shù)組*/printf("%s",ca); /*輸出字符串*/其中使用格式符%s將字符串進(jìn)行輸出。注意以下幾種情況:輸出字符不包括結(jié)束符'\0'。用“%s”格式輸出字符串時(shí),printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名ca,而不是數(shù)組中的元素名ca[0]等。如果數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,也只輸出直到'\0'為止。如果一個(gè)字符數(shù)組中包含多個(gè)'\0'結(jié)束字符,則在遇到第一個(gè)'\0'時(shí)輸出就結(jié)束。實(shí)例

使用兩種方式輸出字符串字符數(shù)組6.字符數(shù)組的輸入字符數(shù)組的輸入也是分為兩種方法:使用格式符%c使字符逐個(gè)輸入,例如下面代碼:for(i=0;i<10;i++)/*進(jìn)行循環(huán)*/{scanf("%c",&c[i]); /*要求輸入字符數(shù)組元素*/}使用格式符“%s”進(jìn)行輸入使用格式符“%s”,將整個(gè)字符串依次輸入。例如輸入一個(gè)字符串:chars[9]; /*定義數(shù)組*/scanf(“%s”,s); /*要求輸入字符串*/如果使用scanf函數(shù)通過(guò)格式符“%s”進(jìn)行輸入時(shí),輸入的字符串不要帶有空格或者是Enter鍵,因?yàn)榭崭窈虴nter鍵都會(huì)被認(rèn)為是數(shù)據(jù)的分隔符,而不認(rèn)為是字符串的一部分,不會(huì)作為數(shù)據(jù)保存。實(shí)例

使用格式符%s進(jìn)行輸入實(shí)例

輸出完整的帶有空格的字符串

7.字符數(shù)組應(yīng)用實(shí)例

字符升序排列,將已按升序排好的字符串a(chǎn)和字符串b按升序歸并到字符串c中并輸出。

字符串處理函數(shù)在編寫(xiě)程序時(shí),經(jīng)常會(huì)對(duì)字符和字符串進(jìn)行操作,轉(zhuǎn)換字符的大小寫(xiě),求字符串長(zhǎng)度等,都可以使用字符函數(shù)和字符串函數(shù)來(lái)解決。C語(yǔ)言標(biāo)準(zhǔn)函數(shù)庫(kù)專門(mén)為其提供了一系列處理函數(shù)。可以實(shí)現(xiàn)字符串的輸入、輸出、復(fù)制、連接、比較、轉(zhuǎn)換和獲取字符串的長(zhǎng)度等功能。使用字符串處理函數(shù)時(shí),要用編譯預(yù)處理命令#include將頭文件string.h包含進(jìn)來(lái),當(dāng)然puts()和gets函數(shù)除外,因?yàn)樗鼈兪菢?biāo)準(zhǔn)的輸入輸出函數(shù),需要的是頭文件stdio.h。在編寫(xiě)程序過(guò)程中合理有效地使用這些字符串函數(shù)可以提高編程效率同時(shí)還可以提高程序性能。本節(jié)將對(duì)字符串處理函數(shù)進(jìn)行介紹。在前些章節(jié),已經(jīng)詳細(xì)的介紹過(guò)字符串的輸入和輸出函數(shù):puts()函數(shù)和gets()函數(shù),在本節(jié)就不再重復(fù)敘述。1.字符串復(fù)制在字符串操作中,字符串復(fù)制是比較常用的操作之一,在字符串處理函數(shù)中包含strcpy函數(shù),該函數(shù)將復(fù)制特定長(zhǎng)度的字符串到另一個(gè)字符串中。其語(yǔ)法格式如下:strcpy(目的字符數(shù)組名,源字符數(shù)組名)功能:把源字符數(shù)組中的字符串拷貝到目的字符數(shù)組中。字符串結(jié)束標(biāo)志‘\0’也一同拷貝。下面通過(guò)實(shí)例來(lái)介紹一下strcpy函數(shù)的使用。實(shí)例

字符串復(fù)制字符串處理函數(shù)2.字符串連接字符串連接就是將一個(gè)字符串連接到另一個(gè)字符串的末尾,使其組合成一個(gè)新的字符串,在字符串處理函數(shù)中,strcat函數(shù)就具有字符串連接的功能。其語(yǔ)法格式如下:strcat(目的字符數(shù)組名,源字符數(shù)組名)功能:把源字符數(shù)組中的字符串連接到目的字符數(shù)組中字符串的后面,并刪去目的字符數(shù)組中原有的串結(jié)束標(biāo)志‘\0’。因此,目的字符數(shù)組必須擁有足夠大的長(zhǎng)度,以免發(fā)生因不能裝下連接源字符數(shù)組后的新字符串,而產(chǎn)生的錯(cuò)誤。字符串復(fù)制實(shí)質(zhì)上是用源字符數(shù)組中的字符串覆蓋目的字符數(shù)組中的字符串,而字符串連接則不存在覆蓋的問(wèn)題,只是單純的將源字符數(shù)組中的字符串連接到目的字符數(shù)組中的字符串的后面。下面通過(guò)實(shí)例來(lái)介紹一下strcat函數(shù)的使用。實(shí)例

字符串連接

字符串處理函數(shù)3.字符串比較字符串比較需要使用具有在字符串間進(jìn)行比較功能的strcmp函數(shù)。其語(yǔ)法格式如下。strcmp(字符數(shù)組名1,字符數(shù)組名2)功能:字符串比較就是將一個(gè)字符串與另一個(gè)

溫馨提示

  • 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)論