C 語言支持?jǐn)?shù)組數(shù)據(jù)結(jié)構(gòu),它可以存儲一個固定大小的相同類型元素的順序集合。數(shù)組是用來存儲一系列數(shù)據(jù),但它往往被認(rèn)為是一系列相同類型的變量。
一、一維數(shù)組
一維數(shù)組的定義
數(shù)據(jù)類型 數(shù)組名[常量表達(dá)式];
數(shù)組特點(diǎn):[ ] :數(shù)組運(yùn)算符,單目運(yùn)算符,優(yōu)先級(1),左結(jié)合,不能用( )
編譯時分配連續(xù)內(nèi)存
內(nèi)存字節(jié)數(shù)=數(shù)組維數(shù)*
sizeof(元素?cái)?shù)據(jù)類型)
數(shù)組名表示內(nèi)存首地址,
是地址常量
二、數(shù)組的引用
int data[5];
data[5]=10; //C語言對數(shù)組不作越界檢查,使用時要 注意
數(shù)組必須先定義,后使用v只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組v數(shù)組元素表示形式: 數(shù)組名[下標(biāo)]其中:下標(biāo)可以是常量或整型表達(dá)式。
例 int a[10];
printf(“%d”,a);
必須 for(j=0;j<10;j++)
printf(“%d\\t”,a[j]);
int a[5]={1,2,3,4,5};
等價于:a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;
說明:
數(shù)組不初始化,其元素值為隨機(jī)數(shù)
對static數(shù)組元素不賦初值,系統(tǒng)會自動賦以0值
只給部分?jǐn)?shù)組元素賦初值
當(dāng)全部數(shù)組元素賦初值時,可不指定數(shù)組長度
static int a[5];
等價于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0;
int a[]={1,2,3,4,5,6};
編譯系統(tǒng)根據(jù)初值個數(shù)確定數(shù)組維數(shù)
三、程序舉例
用冒泡法對10個數(shù)排序
算法分析:如果有n個數(shù),則要進(jìn)行n-1趟比較。
在第1趟比較中要進(jìn)行n-1次相鄰元素的兩兩比較,
在第j趟比較中要進(jìn)行n-j次兩兩比較。
比較的順序從前往后,經(jīng)過一趟比較后,
將最值沉底(換到最后一個元素位置),
最大值沉底為升序,最小值沉底為降序。
排序過程:
(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é)束
#include
int main()
{
int i,j,t,a[10]={5,4,8,3,6,9,7,222,64,88};
//排序
for(i=1;i<10;i++) //外循環(huán)控制排序趟數(shù),n個數(shù)排n-1趟
{
for(j=0;j<10-1;j++) //內(nèi)循環(huán)每趟比較的次數(shù),第j趟比較n-i次
{
if(a[j]>a[j+1]) //相鄰元素比較,逆序則交換
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("排序后的結(jié)果是:\\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\\n");
return 0;
}
四、多維數(shù)組
定義方式:
數(shù)據(jù)類型數(shù)組名[常量表達(dá)式][常量表達(dá)式];
例 int a[3][4];
float b[2][5];
int c[2][3][4];
int a[3,4]; (x)
數(shù)組元素的存放順序l原因:內(nèi)存是一維的
二維數(shù)組:按行序優(yōu)先
多維數(shù)組:最右下標(biāo)變化最快
五、二維數(shù)組
二維數(shù)組a是由3個元素組成,每個元素a[i]由包含4個元素的一維數(shù)組組成
二維數(shù)組元素的引用
形式:數(shù)組名[下標(biāo)][下標(biāo)]
將二維數(shù)組行列元素互換,存到另一個數(shù)組中
#include
main()
{ int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\\n");
for(i=0;i<=1;i++)
{ for(j=0;j<=2;j++)
{ printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\\n");
}
求二維數(shù)組中最大元素值及其行列號
#include
main()
{ int a[3][4]={{1,2,3,4},
{9,8,7,6},
{-10,10,-5,2}};
int i,j,row=0,colum=0,max;
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{ max=a[i][j];
row=i;
colum=j;
}
printf("max=%d,row=%d, \\
colum=%d\\n",max,row,colum);
}
發(fā)布評論請先 登錄
C語言數(shù)組和指針的區(qū)別

單片機(jī)以太網(wǎng)小工具:html文件轉(zhuǎn)化為C語言的數(shù)組
c語言-數(shù)組
C語言數(shù)組詳解

C語言數(shù)組的學(xué)習(xí)教程說明

評論