一維數組

一維數組

一維數組

定義

一維數組示意圖一維數組示意圖

物理上前後相鄰、類型相同的一組變數作為一個整體引入C語言,這個整體成為(一維)數組類型的變數,簡稱(一維)數組。其中每個變數稱為數組元素,變數的個數稱為數組長度或數組容量。

一維數組的定義
數組說明的一般形式為:
類型說明符數組名[常量表達式],……;
1.類型說明符是任一種基本數據類型或構造數據類型。
2.數組名是用戶定義的數組標識符。
3.方括弧中的常量表達式表示數據元素的個數,也稱為數組的長度。
例如:inta[10];說明整型數組a,有10個元素
floatb[10],c[20];說明實型數組b,有10個元素,實型數組c,有20個元素。
charch[20];說明字元數組ch,有20個元素。
幾點說明:
1.數組的類型實際上是指數組元素的取值類型。對於同一個數組,其所有元素的數據類型都是相同的。
2.數組名的書寫規則應符合標識符的書寫規定。
3.數組名不能與其它變數名相同,
例如:voidmain() {inta; floata[10]; …… }是錯誤的。
4.方括弧中常量表達式表示數組元素的個數,如a[5]表示數組a有5個元素。但是其下標從0開始計算。因此5個元素分別為a[0],a[1],a[2],a[3],a[4]。
5·C編譯程式將為a數組在記憶體中開闢5個連續的存儲單元,可以用名字直接引用各存儲單元


6.不能在方括弧中用變數來表示元素的個數,但是可以是符號常數或常量表達式。
例如:#defineFD5 voidmain() {inta[3+2],b[7+FD]; …… }是合法的。
但是下述說明方式是錯誤的。
voidmain() {intn=5; inta[n]; …… }
7.允許在同一個類型說明中,說明多個數組和多個變數。 例如:
inta,b,c,d,k1[10],k2[20];

數組的賦值

給數組賦值的方法除了用賦值語句對數組元素逐個賦值外,還可採用初始化賦值和動態賦值的方法。

數組初始化賦值

數組初始化賦值是指在數組說明時給數組元素賦予初值。數組初始化是在編譯階段進行的。這樣將減少運行時間,提高效率。
static類型說明符數組名[常量表達式]={值,值……值};其中static表示是靜態存儲類型,C語言規定只有靜態存儲數組和外部存儲數組才可作初始化賦值
staticinta[10]={0,1,2,3,4,5,6,7,8,9};
相當於a[0]=0;a[1]=1...a[9]=9;
幾點說明:
1.可以只給部分元素賦初值。當{}中值的個數少於元素個數時,只給前面部分元素賦值。
例如:staticinta[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。
2.只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素全部賦1值,只能寫為:
staticinta[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:
staticinta[10]=1;
3.如不給可初始化的數組賦初值,則全部元素均為0值。
4.如給全部元素賦值,則在數組說明中,可以不給出數組元素的個數。
例如:staticinta[5]={1,2,3,4,5};
可寫為:staticinta[]={1,2,3,4,5};

動態賦值

可以在程式執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函式逐個對數組元素賦值。
voidmain()
{
inti,max,a[10];
printf("input10numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<10;i++)
if(a[i]>max)max=a[i];
printf("maxmum=%d\n",max);
}
程式舉例:採用比較法排序
voidmain()
{ inti,j,p,q,s,a[10];
printf("\ninput10numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{ p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j])
{p=j;q=a[j];}
if(i!=p)
{s=a[i]; a[i]=a[p]; a[p]=s;}
printf("%d",a[i]);
}
}

熱門詞條

聯絡我們