接触数组已经有近四个星期了,也做了一些数组方面的题,下面先总结一下数组中的重要知识点:
一.数组分为两种
一维数组
一维数组的声明包括如下结构:类型 变量名[N],其中N是你要定义的一维数组长度。
在文件main()函数中输入以下语句
int a[10];//声明一维整形数组,数组长度为10。最好放在文件的最前边,从而能限制整个程序
for (int i =0;i<10;i++)
{
a[i]=i;
cout<<i<<endl;
}
return 0;
二维数组
二维数组的声明结构:类型 变量名[M][N],其中M代表行数,N代表列数。
在main()函数中输入以下代码
int a[4][5];//二维数组声明
int i,j;
for ( i =0;i<4;i++)
{
for (j=0;j<5;j++)
{
a[i][j]=(i+1)+(j+1);
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
二. 一维数组元素的初始化
有下列方法初始化:
1)在定义数组时,对数组元素赋初值;
例如: int a[10]={0,1,2,3,4,5,6,7,8,9};
上面的语句等价于 a[0]=0,a[1]=1,
2)可以只给一部分元素赋初值,
例如: int a[10]={0,1,2,3,4};
表示只给数组的前5个元素赋初值,后5 个元素的值,系 统自动默认为0
3)在对全部数组元素赋初值时,可以不指定数组长度;
例如: int a[5]={0,1,2,3,4};
可以改写为: int a[]={0,1,2,3,4};
但是,int a[10] ={0,1,2,3,4}; 不能改写为: int a[]={0,1,2,3,4};
一维数组的引用
数组必须先定义,后使用!
C语言规定: 只能逐个引用数组元素,而不能一次引用整个数组! 数组的引用形式为: 数组名[下标] 其中,下标可以是整型常量也可以是整型表达式.
例如: a[0]=a[5]+a[7]+a[2*3]
三.二维数组的初化
二维数组初始化也是在类型说明时给各下标变量赋以初值.二维数组可以按行分段赋值,也可以按行连续赋值
1. 按行分段赋值 int a[2][3]={{1,2,3},
{4,5,6}};
2. 按行连续赋值 int a[2][3]={1,2,3,4,5,6};
这两种赋值的结果是完全相同的;
说明:
1. 可以只对部分元素赋值,未赋值的元素自动取0;
例如: int a[3][3]={{1},{2},{3}};
是对每行的第一列元素赋值,未赋值的元素自动取0
2. 如果对所有的元素赋初值,则第一维的长度可以不给出;
例如: int a[3][3]={1,2,3,4,5,6,7,8,9}; 可以改为: int a[][3]={1,2,3,4,5,6,7,8,9}
二维数组的引用
引用形式:数组名[下标][下标]
其中下标应该为整型常量或整型表达式; 例如: int a[3][4]; a[2][3]
表示数组a的第三行第四列的元素.
注意:下标变量和数组说明在形式上有些相似,但这两者具有完全不同的含义;
四. 一维数组的程序举例
1.读10个数存入数组中,输出数组中的所有数据.
main()
{
int i,a[10];
for(i=0;i<=9;i++)
a[i]=i; /顺序给数组元素赋初/
for(i=0;i<=9;i++)
printf(“%d”,a[i]); /顺序输出数组元素/
}
2.读10个整数存入数组中,输出平均值.
#include <stdio.h>
#define size 10
main()
{
int x[size],i;
float s=0,ave;
for(i=0;i<size;i++)
scanf(“%d”,&x[i]);
for(i=0;i<size;i++)
s+=x[i];
ave=s/size;
printf(“%d\n”,ave);
}
二维数组应用举例
一个二维数组的行和列元素互换,存到另一个二维 数组中.
a={{1,2,3},{4,5,6}} b={{1,4},{2,5}{3,6}};
分析: 首先,给a赋值; 然后,通过a给b赋值,b[i][j]=a[j][i]; 最后,输出b的值;
#include <stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf(“%d”,a[i][j]);
b[j][i]=a[i][j];
}
printf(“\n”);
}
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf(“%d”,b[i][j]);
printf(“\n”);
}
}
感想:数组能够更加精确简便的解决问题,但是需要熟练的掌握,
但是学到现在,感觉自己并没有深刻的理解和认识到数组的真正
核心之处,还需要仔细研究题目,更加深入的理解一下!