二维数组

一、二维数组的定义

当一维数组的元素类型也是一维数组的时候,便构成了“数组的数组”,即二维数组,二维数组的书写格式如下:
数据类型 数组名[常量表达式1][常量表达式2];
例如:
int a[4][10];
说明:a数组实质上是一个4行10列的表格,表格中可存储40个元素,第一行第一列对应的a数组是a[0][0],第n行n列对应的数组元素是 a[n-1][m-1]。在定义数组下标有多少个的时候,我们称为多维数组,下标的个数并不局限与一个或两个,可以任意多个,为了方便理解,我们可以把一维数组理解成一条线,二维数组是由线组成的一个平面,而三维数组就是这些平面组成的立方体,而三维以上的数组我们无法通过生活中的例子来举例,只能通过自己的想象了。

二、二维数组的引用

二维数组的数组元素引用与一维数组的元素引用类似,区别在于二维数组的元素的引用必须使用给出的两个下标。
引用格式为:
<数组名>[下标 1][下标2]
说明:显然,每个下标表达式的取值不应该超出下标所指定的范围,否则会导致致命的越界错误。
例如:定义int a[3][5];
则表示a是二维数组(相当于一个3*5的表格),共有15个元素,它们是:
a[0][0] a[0][1] a[0][2] a[0][3] a[0][4]
a[1][0] a[1][1] a[1][2] a[1][3] a[1][4]
a[2][0] a[2][1] a[2][2] a[2][3] a[2][4]
因此可以看成一个矩阵表格,a[2][3]即表示为第三行第四列的元素。
注:数组尽量定义在main函数的外面,如果内存超标会造成不可预料的错误!

三 、二维数组的初始化

二维数组的初始化跟一维数组的初始化类似,可以将每一行分开来写在各自的括号里,也可以把所有数据写在一个括号里。
例如:
int a[4][2]={{1,0},{0,1},{-1,0},{0,-1}}
int a[4][2]={1,0,0,1,-1,0,0,-1} //尽量不要用

四、二维数组程序设计

例1
已知一个6*6的矩阵(方阵),把矩阵两条对角线上的元素值加上10,然后输出这个新矩阵。
源代码:

#include<iostream>
#include<cstdio>
using namespace std;
int a[7][7];
int main()
{
    for(int i=1;i>=6;i++)
        for(int j=1;j<=6;j++)
            cin>>a[i][j];
    for(int i=1;i<=6;i++) 
        for(int j=1;j<=6;j++)
            if((i==j)||(i+j==7))
              a[i][j]+=10;
    for(int i=1;i<=6;i++)
    {
        for(int j=1;j<=6;j++)
            cout<<setw(5)<<a[i][j];
    }
    cout<<endl;
    system("pause");
    return 0;
}

例2
打印杨辉三角的前10行,杨辉三角如下图
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

1
11
121
1331
14641
源代码:

#include<iostream>
#include<cstdio>
using namespace std;
int a[11][11];
a[1][1]=1
int main()
{
    for(int i=2;i<=10;i++)
    {
        a[i][1]=1;
        a[i][i]=1;
        for(int j=2;j<=i-1;j++)
          a[i][j]=a[i-1][j-1]+a[i-1][j];
    }
    for(int i=1;i<=10;i++)
    {
        if(i!=10)
          cout<<setw(30-3*i)<<" ";
        for(int j=1;j<=i;j++)
          cout<<setw(6)<<a[i][j];
          cout<<endl;
    }
    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值