C语言之二维数组

简介: 对一维数组的延伸------二维数组的讲解,包含二维数组的初始化,二维数组的输出,输出n行杨辉三角

二维数组

1.一般格式
类型说明符 数组名常量表达式;

2.含义
例如:

    int n[2][3];

表示定义了一个两行三列的数组a,分别是n0、n0、n0、n1、n1、n1,跟一维数组一样,行列下标都是从0开始的,比如元素a1表示的是二行三列的元素。
**
3.二维数组的初始化**
int n2={1,2,3,4,5,6};

对比int n[3];我们可以把二维数组理解为一维数组的数组,一维数组只有一行,二维数组有多行,a2可以看为两个元素,每个元素都是长度为3的一维数组,所以n2的赋值可以写成

int n2={{1,2,3},{4,5,6}}

{}里的每一个{}都是一个一维数组。

当然,一维数组里的元素不一定全部赋值,二维数组里的一维数组也是如此,可以只对其部分元素赋值,例如:

int n2={{1,2},{3}};

另外,二维数组行的常量表达式是可以省略,也就是

int n[][3]={1,2,3,4,5,6};

等价于

int n2={1,2,3,4,5,6};

4.二维数组的输出
一维数组只有一行只需要用一个for循环控制列就可以而二维数组有多行,需要用两个for循环分别控制行和列

代码:

include "stdio.h"

int main() {

int n[2][3] = {1, 2, 3, 4, 5, 6};

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        printf("%-2d", n[i][j]);
    }
}

return 0;

}
执行结果:

image.png

前面说过%3d:输出所占的格子(向右对齐),比如输出数字,前面就空3-1=2个空格。

那么%-2d就输出所占的格子(向左对齐),空2-1=1个空格

5.实例
1.杨辉三角
输出n行杨辉三角

2.思路分析
行数与列数相等,所以在控制列数的循环变量小于等于行数循环变量即可输出我们想要的(行数循环变量小于n)。

j==0和i==j时为1,其他位置的数都为上面的数+左上的数,在两个for循环语句里增加一个if语句判断其是否满足j==0和i==j这个条件如果满足就赋值1,如果不满足就赋值其上面的数+左上的数。

需要注意的是一行循环完了需要换行,则就需要在两个for循环语句之间,最后面加一个换行语句。
**
3.代码**

#include "stdio.h"
 
int main() {
    int n;
    scanf("%d", &n);
    int a[n][n];
 
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            if (j == 0 || i == j) {
                a[i][j] = 1;
                printf("%-3d", a[i][j]);
            } else {
                a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
                printf("%-3d", a[i][j]);
            }
        }
 
        printf("\n");
    }
 
    return 0;
}

4.执行结果
image.png

总结

数组的长度只能是常数或常量表达式不能是变量,数组是通过下标给元素标号的,行列下标初始值均为0,二维数组的本质就是一维数组,把一维数组掌握了,二维数组也就自然会了!

相关文章
|
3月前
|
C语言
C语言期末习题之求二维数组中的最大值
C语言期末习题之求二维数组中的最大值
32 0
|
3月前
|
C语言
【C语言】利用数组处理批量数据(一维数组和二维数组)
【C语言】利用数组处理批量数据(一维数组和二维数组)
|
3月前
|
存储 数据处理 C语言
C语言二维数组
C语言二维数组
32 0
|
3月前
|
C语言
C语言---二维数组&&指针
C语言---二维数组&&指针
21 0
|
3月前
|
C语言
C语言-----用二维数组解决菱形的打印问题
C语言-----用二维数组解决菱形的打印问题
34 0
|
3月前
|
存储 C语言
遍历二维数组C语言,小白必看的绝绝子技巧!
遍历二维数组C语言,小白必看的绝绝子技巧!
C4.
|
3月前
|
存储 C语言
C语言怎样定义和引用二维数组
C语言怎样定义和引用二维数组
C4.
33 0
|
3月前
|
C语言
C语言期末习题之二维数组转置
C语言期末习题之二维数组转置
30 0
|
2月前
|
C语言
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
|
2月前
|
C语言
C语言----指针模拟二维数组
C语言----指针模拟二维数组