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