数组的定义
//格式:
//类型说明符 数组名[常量表达式]
//方括号请注意
//如:
int a[10];//它表示定义了一个整形数组,数组名为a,有10个元素,每一个元素都是int类型。***(a[0],a[1],a[2],a[3]……a[9])数组的下标从0开始到10-1。***
a[0] | a[1] | a[2] | a[3] | a[4] | a[5] | a[6] | a[7] | a[8] | a[9] |
---|---|---|---|---|---|---|---|---|---|
***数组的大小无法定义成动态,即数组中的元素个数一旦定义就固定了。(如:int n,a[n]) ***
为什么要用数组
先说一下什么是数组?
数组是一组数目固定、类型相同的元素组成的集合。其中,数目固定指的是元素的个数在程序运行的时候不能更改。
当类型相同的数据比较多的时候就需要用到数组了。
如:储存100个学生的成绩
怎样访问数组里面的元素呢?
我们采用数组名和元素在这个数组中的位置来访问。需要注意的是位置总是从0开始,也称为下标或索引。因此数组中的10个元素分别为:
a[0], a[1], a[2], a[3], a[4], a[5],a[6], a[7], a[8], a[9];
数组的初始化
int a[10]={1,2,3,4,5,6,7,8,9,10};//可以在定义是初始化
//也可以只赋值部分
int b[10]={1,2,3};//b[0]=1,b[1]=2,b[2]=3,之后的b[3]~b[9]默认为0
//甚至可以
int c[10]={};//c[0]~c[9]均等于0
a[0] | a[1] | a[2] | a[3] | a[4] | a[5] | a[6] | a[7] | a[8] | a[9] |
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
可以通过循环来进行赋值
int a[10],i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
数组的应用
例:输出10个数中最大的数
int main()
{
int max,a[10],i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}//赋值
max=a[0];
for(i=1;i<10;i++)
{
if(max<a[i])
max=a[i];
}//比较
printf("%d",max);
}
例:求10个数的和
int main()
{
int sum=0,a[10],i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}//赋值
for(i=0;i<10;i++)
{
sum=sum+a[i];
}//求和
printf("%d",sum);
}
例:10个数排序
int main()
{
int a[10],i,j,t;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}//赋值
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}//排序
for(i=0;i<10;i++)
{
printf("%d",a[i])
}//输出
}
以上的都是一维数组
下来谈一谈二维数组
二维数组
定义一个二维数组
//数据类型符 数组名[常量表达式][常量表达式]
int a[3][3];
a[0][0] | a[0][1] | a[0][2] |
---|---|---|
a[1][0] | a[1][1] | a[1][2] |
a[2][0] | a[2][0] | a[2][2] |
二维数组的初始化:
分行赋值:如
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
顺序赋值:
int a[2][3]={1,2,3,4,5,6};
部分元素赋值:
int a[2][3]={{1},{3},{5}};
/*
对于第三个
a[0][0]=1 a[0][1]=0 a[0][2]=0
a[1][0]=3 a[1][1]=0 a[1][2]=0
a[2][0]=5 a[2][1]=0 a[2][2]=0
也可以通过循环来赋值:
int main()
{
int a[5][6],i,j;
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
scanf("%d",&a[i][j]);
}
}
}
例:二维数组行列互换
int main()
{
int a[3][3],b[3][3],i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
printf("%d",a[i][j]);
}
}//赋初值
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
b[j][i]=a[i][j];
}
}互换
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d",b[i][j]);
}
}//输出b数组
}