李紅霞



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