当前位置: 首页 > news >正文

【初学者入门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语言的初学者有问题随时都可以问我,随时为您解惑!!!

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

相关文章:

  • 深度学习 Day 14——利用卷神经网络实现运动鞋品牌识别
  • 索引的创建与设计原则(2)(适合创建索引情况 )
  • 写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while
  • 2022G3锅炉水处理考试练习题模拟考试平台操作
  • C++11:lambda表达式
  • [实践篇]13.6 QNX侧如何抓取日志?
  • Java中如何检测一个元素是否存在于HashSet对象中呢?
  • Cesium:OSGB倾斜摄影模型加载卡顿优化
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • 图解LeetCode——1694. 重新格式化电话号码(难度:简单)
  • 如何测试 Redis 缓存?
  • 二叉树的一些基本操作
  • 湖仓一体电商项目(二十四):合并Iceberg小文件
  • Java中如何向一个HashSet对象中添加元素呢?
  • 静态HTML CSS网站制作成品 简单的学生网页作业代码【带视频演示】
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Git的一些常用操作
  • Javascript 原型链
  • Javascript编码规范
  • JAVA多线程机制解析-volatilesynchronized
  • Java新版本的开发已正式进入轨道,版本号18.3
  • js学习笔记
  • maya建模与骨骼动画快速实现人工鱼
  • nodejs调试方法
  • Python3爬取英雄联盟英雄皮肤大图
  • rabbitmq延迟消息示例
  • WebSocket使用
  • Web设计流程优化:网页效果图设计新思路
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 你真的知道 == 和 equals 的区别吗?
  • 三分钟教你同步 Visual Studio Code 设置
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 跳前端坑前,先看看这个!!
  • 王永庆:技术创新改变教育未来
  • 物联网链路协议
  • 写给高年级小学生看的《Bash 指南》
  • elasticsearch-head插件安装
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​第20课 在Android Native开发中加入新的C++类
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #pragma pack(1)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • #在 README.md 中生成项目目录结构
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (五)关系数据库标准语言SQL
  • (循环依赖问题)学习spring的第九天
  • (原創) 物件導向與老子思想 (OO)
  • (转)nsfocus-绿盟科技笔试题目
  • (轉)JSON.stringify 语法实例讲解
  • .aanva
  • .net 反编译_.net反编译的相关问题
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .Net的C#语言取月份数值对应的MonthName值