【初学者入门C语言】之二维数组(七)

个人主页:天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主

💬 刷题网站:一款立志于C语言的题库网站蓝桥杯ACM训练系统 - C语言网 (dotcpp.com) 

 特别标注:该博主将长期更新c语言内容,初学c语言的友友们,订阅我的《初学者入门C语言》专栏,关注博主不迷路!

目录

二维数组

1.一般格式

2.含义

3.二维数组的初始化

4.二维数组的输出

5.实例

1.杨辉三角

2.思路分析

3.代码

4.执行结果

6. 总结


二维数组

1.一般格式

  类型说明符 数组名[常量表达式][常量表达式];

2.含义

  例如:

        int n[2][3];

表示定义了一个两行三列的数组a,分别是n[0][0]、n[0][1]、n[0][2]、n[1][0]、n[1][1]、n[1][2],跟一维数组一样,行列下标都是从0开始的,比如元素a[1][2]表示的是二行三列的元素。

3.二维数组的初始化

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

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

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

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

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

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

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

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

等价于

int n[2][3]={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;
}

执行结果:

 前面说过%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.执行结果

6. 总结

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

各位C语言的初学者有问题随时都可以问我,随时为您解惑!!!

👍+✏️+⭐️是对博主最大的鼓励与支持!!!

评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天寒雨落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值