一、本節目標
本節我們將要講述數組。本節目標:
- 一維數組
- 二維數組
- 字符數組
二、一維數組
我們通過一個案例來簡單的理解數組。班主任要計算班級里面50個同學數學成績的平均成績,道理上講這是一個比較簡單的問題,只需要把每個人的成績加起來除以50就可以了。但是如何表示50個人的成績呢?按照我們之前的學習定義50個變量,s1,s2,s3...s50,但是你有沒有發現這樣存在的問題?第一,這是50個學生,假如是5000個呢?這樣定義很繁瑣。第二,這樣的定義沒有反應出他們之間內在的聯系,他們都是一個班級的,都是統計的數學成績,這樣的問題如何解決呢? 首先我們可以用同一個名字表示他們(如S),而在名字的右下角加一個數字來表示這是第幾名學生的成績,例如,可以用S1,S2,S3代表學生1、學生2、學生3......學生50等50個學生的成績。這個右下角的數字常稱為下標。一批具有相同名字和相同性質的數據就組成一個數組(array),就是數組名。我們首先從一維數組來理解和學習。
定義一維數組
定義一維數組一般有兩種方式:
方式1:
數組名:array[下標1..下標2] of 元素數據類型;
例如定義以下數組:
var student:array[1..10] of integer;
方式2:
第一步:先定義一個新的數據類型:
type 數據類型名=array[下標1..下標2] of 元素數據類型;
如:
type arr=array[1..10] of integer;
第二步:定義一個該數據類型的變量:
變量名:數據類型;
如:
var student:arr;
注意:
(1)數組名的命名規則和變量名相同,遵循標識符命名規則。
(2)在定義數組時,需要指定數組中元素的個數,方括號中的下標1表示數組中元素是從0開始的最后是以下標2結束的。例如,student[1..10],表示a數組有10個元素。注意,下標是從0開始的,這10個元素分別是student[0]...student[9]。一定要注意這里面不會有student[10].
(3)常量表達式中可以包括常量和符號變量,如“int a[4*2]”是合法的。但是不能包括變量,如下面的就是不合法的:
int n; scanf("%d",&n); int b[n];
經過上面的定義,在內存中划出一片存儲空間(空間大小:4*10=40字節),存放一個含有10個整形元素的數組。
一維數組的初始化
為了讓程序簡潔,我們常常在定義數組的同時,給各數組元素賦值,這就是數組的初始化。 (1)在定義數組時對全部數組元素賦予初值。例如: