二维数组的定义
int a[3][4];
3为第一维,4为第二维。
在C语言中,二维数组采用按行排列的方式存储,数组名的值为给其分配的存储空间的首地址。
关于二维数组所占空间:
存储空间计算公式为
行数 * 列数 * 一个数组元素所需字节数
例如 int a[3][4] 所需分配的存储空间大小为:
3 X 4 X 4 = 48 字节
二维数组的初始化
(1)按行的方式进行初始化
int a[3][4] = {{1,3,31},{23,54,55},{12,13,24},{2,6,60}};
(2)按照数组元素在内存中的存储顺序赋初值
int a[3][4] = {1,3,31,23,54,55,12,13,24,2,6,60};
(3)允许只对部分元素赋初值,为赋值元素自动取0
(4)如果对全部的元素都赋初值,第一维的长度可以忽略。
int a[3][4] = {1,3,31,23,54,55,12,13,24,2,6,60};
可以写为
int a[0][4] = {1,3,31,23,54,55,12,13,24,2,6,60};
杨辉三角形
//杨辉三角形
int main()
{
int N = 15; //由于输出格式问题,最大设置为15
int a[N][N];
int i,j,n;
printf("please input a number betweem 1~15:\n"); //输入杨辉三角形的行数
scanf("%d",&n);
for(i=0;i<n;i++) //设置每一行第一个数字和最后一个数字为1
{
a[i][0] = 1;
a[i][i] = 1;
}
for(i=2;i<n;i++) //从第三行开始遍历每一行,并且遍历每一行的从第二个元素开始到倒数第二个元素,并且第j个元素的大小等于上一行第j个元素和第j-1个元素之和
{
for(j=1;j<i;j++)
{
a[i][j] = a[i-1][j]+a[i-1][j-1];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<i+1;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return 0;
}