李紅霞
摘要:通過(guò)研究斐波那契數(shù)列等在實(shí)際中的應(yīng)用,分析如何運(yùn)用一維數(shù)組、二維數(shù)組及字符數(shù)組解決C語(yǔ)言在批量處理數(shù)據(jù)過(guò)程中存在的不便之處,對(duì)學(xué)習(xí)和應(yīng)用C語(yǔ)言具有一定的借鑒意義。
關(guān)鍵詞:C語(yǔ)言;程序設(shè)計(jì);數(shù)組
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)29-0108-03
C語(yǔ)言是一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,它擁有非常豐富的數(shù)據(jù)類(lèi)型和運(yùn)算符,功能齊全。我們使用C語(yǔ)言中數(shù)據(jù)的基本類(lèi)型(整型、實(shí)型、字符型),通過(guò)基本的數(shù)據(jù)類(lèi)型可以描述和解決一些相對(duì)簡(jiǎn)單的問(wèn)題,但是在面對(duì)實(shí)際問(wèn)題中,往往會(huì)遇到成批或大量的數(shù)據(jù)要進(jìn)行解決和處理,僅靠C語(yǔ)言中的基本數(shù)據(jù)類(lèi)型很難處理,甚至根本無(wú)法解決。這時(shí)候,就需要使用數(shù)據(jù)類(lèi)型中構(gòu)造類(lèi)型的數(shù)組類(lèi)型了,例如,一個(gè)班有45個(gè)學(xué)生,要求按照學(xué)生的平均成績(jī)排名,如果按照變量類(lèi)型表示成績(jī),需要設(shè)置45個(gè)簡(jiǎn)單變量來(lái)表示學(xué)生成績(jī),在程序設(shè)計(jì)時(shí)很難對(duì)這組數(shù)據(jù)進(jìn)行處理,但如果使用數(shù)組來(lái)存放45人的成績(jī),可以利用循環(huán)很方便的處理這個(gè)問(wèn)題。該文將淺析一下C語(yǔ)言程序設(shè)計(jì)中數(shù)組的使用。
1 數(shù)組的定義及分類(lèi)
數(shù)組是指一組數(shù)目固定、數(shù)據(jù)類(lèi)型相同的若干個(gè)元素組成的有序集合。常用的數(shù)組主要有一維數(shù)組、二維數(shù)組和字符數(shù)組。
2 一維數(shù)組
2.1 一維數(shù)組的定義及使用
一維數(shù)組的定義方式為:類(lèi)型說(shuō)明符 數(shù)組名[常量表達(dá)式],如int a [20],它表示數(shù)組名為 a,包含20個(gè)元素,每個(gè)元素的數(shù)據(jù)類(lèi)型都是整型;float x [100],它表示數(shù)組名為x,包含100個(gè)元素,每個(gè)元素的數(shù)據(jù)類(lèi)型都是實(shí)型。
關(guān)于一維數(shù)組在使用時(shí)有幾點(diǎn)說(shuō)明部分:1)數(shù)據(jù)類(lèi)型可以是int型、float型、char型以及指針類(lèi)型、結(jié)構(gòu)體和共用體; 2)數(shù)組名必須是合法的標(biāo)識(shí)符。3)[ ]中間必須是一個(gè)常量表達(dá)式,它表示元素的個(gè)數(shù),也就是數(shù)組的長(zhǎng)度。
2.2 一維數(shù)組的初始化
1)對(duì)全部元素賦值,int a[5]={1,2,3,4,5};等價(jià)于:a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;2)對(duì)部分元素賦初值,int a[7]={0,1,2,3,4};等價(jià)于a[0]=0; a[1]=1; a[2]=2; a[3]=3; a[4]=4,a[5]=0; a[6]=0。3)若賦全部元素的初值,可省略常量表達(dá)式,如 a ={0,1,2,3},表示數(shù)組元素有4個(gè)。
2.3一維數(shù)組的應(yīng)用
1)輸出斐波那契數(shù)列,問(wèn)題描述:通常來(lái)講,兔子在出生兩個(gè)月以后,就可以進(jìn)行繁殖,一對(duì)兔子每個(gè)月能產(chǎn)下一對(duì)小兔子。如果所有的兔子都能夠存活的話(huà),一年以后可以繁殖出多少對(duì)兔子? 經(jīng)統(tǒng)計(jì)后發(fā)現(xiàn),這對(duì)兔子一年中的每個(gè)月繁殖兔子的數(shù)目為1,1,2,3,5,8,13,21,34,55,89,144。在通過(guò)以上數(shù)據(jù)的分析,可以發(fā)現(xiàn)以上數(shù)列具有以下幾項(xiàng)規(guī)律:
①第一項(xiàng)為1,第二項(xiàng)為1,其余每項(xiàng)都等于前兩項(xiàng)之和。得到的通項(xiàng)公式是:
②每項(xiàng)的平方都等于相鄰兩項(xiàng)乘積加(減)1。③連續(xù)的四項(xiàng)中,中間兩項(xiàng)的乘積等于邊緣兩項(xiàng)乘積加(減)1。④相鄰兩項(xiàng)的比率總是接近黃金分割數(shù)0.618。
這個(gè)數(shù)列是由數(shù)學(xué)家斐波那契發(fā)現(xiàn)的,故稱(chēng)作斐波那契數(shù)列,另由于數(shù)列是由兔子問(wèn)題引出的,所以也稱(chēng)作兔子數(shù)列。程序來(lái)源于生活,斐波那契數(shù)列在生活中也有很廣泛的用途,在自然界中也有很多巧合,斐波那契數(shù)列中的斐波那契數(shù)規(guī)律現(xiàn)象經(jīng)常會(huì)在我們的生活中出現(xiàn)一些植物的果實(shí)(松果、鳳梨)以及樹(shù)葉的排列、一些花朵的花瓣數(shù)都符合這個(gè)規(guī)律。比如馬蹄蓮1個(gè)花瓣,虎刺梅2個(gè)花瓣,百合花3個(gè)花瓣,梅花5個(gè)花瓣,大波斯菊8個(gè)花瓣,萬(wàn)壽菊13個(gè)花瓣,向日葵有21或34個(gè)花瓣,雛菊有34,55和89三個(gè)數(shù)目的花瓣等。此外,在楊輝三角形中,如果將楊輝三角左對(duì)齊,同一斜行的數(shù)之和,就可以得出一組數(shù)列:1、1、2、3、5、8……。斐波那契數(shù)列還時(shí)常出現(xiàn)在影視作品中,尤其在歐美地區(qū),斐波那契數(shù)列更是盡人皆知,就像黃金分割一樣流行。在著名的《達(dá)芬奇密碼》里,它是一個(gè)重要的符號(hào)和情節(jié)線(xiàn)索,在《魔法玩具城》里,店主招聘會(huì)計(jì)時(shí)隨口問(wèn)的問(wèn)題也是關(guān)于斐波那契數(shù)列的。斐波那契數(shù)列在股市中也有用到,股市中的時(shí)間周期理論是股價(jià)漲跌的根本原因之一,但尋找變盤(pán)點(diǎn),斐波那契數(shù)列都是各種重要分析的基礎(chǔ)之一。
2)起泡排序法的使用。起泡排序法的基本思路是:將相鄰兩個(gè)數(shù)進(jìn)行大小比較,將小的數(shù)放到前面,大的數(shù)放在后面。在一個(gè)帶排列的數(shù)字序列中,從前往后依次對(duì)相鄰的兩個(gè)數(shù)進(jìn)行比較,每一次比較都將小的數(shù)放到前面,這樣經(jīng)過(guò)多次比較交換后,得到的序列就是一串?dāng)?shù)按照升序排列的最終結(jié)果,這樣的過(guò)程稱(chēng)為起泡排序法。若有n個(gè)數(shù),則要進(jìn)行n減一輪次的比較。比如要對(duì)9,8,5,3,7,2這6個(gè)數(shù)字進(jìn)行比較,則要進(jìn)行5輪次的比較。
問(wèn)題描述如下:用起泡法對(duì)6個(gè)數(shù)字進(jìn)行升序排序。
在排序的過(guò)程中需要注意以下幾點(diǎn):1)比較第一個(gè)數(shù)與第二個(gè)數(shù),若為逆序a[0]>a[1],則交換;然后比較第二個(gè)數(shù)與第三個(gè)數(shù);依次類(lèi)推,直至第n-1個(gè)數(shù)和第n個(gè)數(shù)比較為止——第一趟起泡排序,結(jié)果最大的數(shù)被安置在最后一個(gè)元素位置上。2)對(duì)前n-1個(gè)數(shù)進(jìn)行第二趟起泡排序,結(jié)果使次大的數(shù)被安置在第n-1個(gè)元素位置。3)重復(fù)上述過(guò)程,共經(jīng)過(guò)n-1趟起泡排序后,排序結(jié)束。
3 二維數(shù)組
3.1 二維數(shù)組的定義
當(dāng)構(gòu)成二維數(shù)組的元素也是一維數(shù)組時(shí),就構(gòu)成了二維數(shù)組。二維數(shù)組是一維數(shù)組的數(shù)組。二維數(shù)組定義的一般形式是:數(shù)據(jù)類(lèi)型 數(shù)組名[常量表達(dá)式][常量表達(dá)式];例 int a[3][4]; float b[2][5];二維數(shù)組即是一個(gè)矩陣,a[3][4]是一個(gè)3行4列的矩陣,元素個(gè)數(shù)=行*列。
定義二維數(shù)組時(shí)的注意事項(xiàng)有:
1)不可將定義寫(xiě)為int a[4,10]。2)一個(gè)二維數(shù)組就是一個(gè)矩陣,二維數(shù)組是一維數(shù)組的數(shù)組,如: int a[3][3];則有三個(gè)一維數(shù)組a[0],b[1], b[2],每一個(gè)又有三個(gè)元素:a[0][0], a[0][1], a[0][2]; a[1][0], a[1][1], a[1][2];a[2][0], a[2][1], a[2][2]。
3.2 二維數(shù)組初始化
1)二維數(shù)組的元素全部初始化,例如int x[2][3]={{6,5,4},{7,8,9}};則x[0][0]=6, x[0][1]=5, x[0][2]=4,x[1][0]=7, x[1][1]=8, x[1][2]=9;2)部分初始化:例如int a[2][3]={1,2,4};則a[0][0]=1, a[0][1]=2, a[0][2]=4,a[1][0]=0, a[1][1]=0, a[1][2]=0;3)第一維長(zhǎng)度省略初始化,例 int a[][3]={1,2,3,4,5};就表示行為2行。
3.3 二維數(shù)組的使用
1)現(xiàn)有一個(gè)3×3的矩陣,請(qǐng)使用數(shù)組求出其中值最大的那個(gè)元素,并輸出最大值所在的行號(hào)和列號(hào)。
4 字符串與數(shù)組
4.1 基本定義
字符串是比較常用的,所謂字符串就是用雙引號(hào)引起來(lái)的一串字符,但實(shí)際上,字符串是一種字符型數(shù)組,并且這個(gè)數(shù)組的最后一個(gè)元素的值是‘\0',也就意味著字符串就是一種以‘\0結(jié)束的字符數(shù)組。當(dāng)程序中出現(xiàn)‘\0這個(gè)結(jié)束標(biāo)志后,無(wú)論字符數(shù)組有多長(zhǎng),都標(biāo)志著這個(gè)字符串已結(jié)束。用字符串構(gòu)成的數(shù)組稱(chēng)為字符串?dāng)?shù)組。字符串?dāng)?shù)組,實(shí)際上是一個(gè)存放了多行字符串的字符數(shù)組構(gòu)成的字符型二維數(shù)組。
4.2 字符串?dāng)?shù)組的使用
例如,從鍵盤(pán)輸入一個(gè)句子,統(tǒng)計(jì)句子中單詞的個(gè)數(shù)并輸出。
5 結(jié)束語(yǔ)
數(shù)組在C語(yǔ)言程序設(shè)計(jì)中非常重要,是構(gòu)造類(lèi)型中使用比較頻繁的數(shù)據(jù)類(lèi)型,當(dāng)需要批量處理數(shù)據(jù)的時(shí)候,使用數(shù)組來(lái)解決會(huì)很方便且容易解決,但一定要熟練定義數(shù)組并正確使用方可解決問(wèn)題。
參考文獻(xiàn):
[1] 昝德才. C語(yǔ)言中數(shù)組的使用與分析[J]. 福建電腦, 2006(5).
[2] 武麗娟. 論《C語(yǔ)言程序設(shè)計(jì)》中的數(shù)組[J]. 福建電腦, 2010(7).
[3] 張科星. C語(yǔ)言中數(shù)組的元素[J]. 計(jì)算機(jī)光盤(pán)軟件與應(yīng)用, 2010(16).
【通聯(lián)編輯:謝媛媛】