C语言学习系列二十六——二维数组定义
二维数组的定义
定义形式:
类型名 数组名 [行长度] [列长度];
例如:
int a [3] [2];
二维数组的引用
引用形式:
数组名 [行下标] [列下标]
例如:
a [0] [0];
- 行下标的取值范围是[ 0 , 行长度-1 ]
- 列下标的取值范围是[ 0 , 列长度-1 ]
- 二维数组的元素按行或列存放,先存第0行,在第一行......
二维数组的初始化
1.分行赋初值
例如: int a [3] [3] = { {1,2,3} , {1,2,3} , {4,5,6} };
此时a数组中各元素为
1 | 2 | 3 |
1 | 3 | 3 |
4 | 5 | 6 |
也可以争对部分元素: static int a [3] [3] = { {1,2,3} , {} , {4,5,6} }; ——第一行元素都为0。
2.顺序赋初值
int a [3] [3] = { 1 , 2 , 3 , 1 , 2 , 3 , 4 , 5 , 6 }; 等价于
int a [3] [3] = { {1,2,3} , {1,2,3} , {4,5,6} };
还可以省略长度
int a [ ] [3] = { 1 , 2 , 3 , 1 , 2 , 3 , 4 , 5 , 6 }; 等价于
int a [3] [3] = { {1,2,3} , {1,2,3} , {4,5,6} };
二维数组编程
将二维数组行下标和列下标分别作为循环变量,二重循环,可以遍历二维数组。
//例7-8
//定义一个二维数组a[i][j]=i+j
#include<stdio.h>
int main()
{int i,j;int a[3][2];for(i=0; i<3; i++)for(j=0; j<2; j++)a[i][j]=i+j;for(i=0; i<3; i++){for(j=0; j<2; j++){printf("%4d",a[i][j]);} printf("\n");}return 0;} 0 11 22 3
输出数组a 时,外循环是针对行下标的。
i j 第一次循环 0 0 a[0][0]=0 二 0 1 a[0][1]=1 三 1 0 a[1][0]=1 四 1 1 a[1][1]=2 五 2 0 a[2][0]=2 六 2 1 a[2][1]=3
//例7-9
//n*n的方阵转置
#include<stdio.h>
int main()
{int i,j,n,temp;int a[6][6];printf("Enter n: ");scanf("%d",&n);for(i=0; i<n; i++)for(j=0; j<n; j++)a[i][j]=i*n +j+1; //给数组赋值for(i=0; i<n; i++)for(j=0; j<n; j++)if(i<=j){ //只需遍历上三角 temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;}for(i=0; i<n; i++){for(j=0; j<n; j++){printf("%4d",a[i][j]);}printf("\n");}return 0;
}Enter n: 31 4 72 5 83 6 9
行列交换就是交换aqia[j]和a[j][i]
转置前:
1 2 3 4 5 6 7 8 9 转置后:
1 4 7 2 5 8 3 6 9
C语言学习系列二十六——二维数组定义相关推荐
- Python学习笔记第二十九天(N维数组(ndarray))
Python学习笔记第二十九天 N维数组(ndarray) 构建阵列 索引阵列 ndarray的内部内存布局 阵列属性 内存布局 数据类型 其他属性 阵列接口 ctypes外部功能接口 Array方法 ...
- cout 数组_C语言学习笔记(十)二维数组内存预设
1 问题描述 二维数组存储数据数量根据其他方法间接获得: 为当前数据数量申请内存: 2 相关程序 #include --2020.11.23--
- (二十六)、Java数组在内存中如何存放与分配
Java中有两种类型的数组: 基本数据类型数组: 对象数组: 当一个对象使用关键字"new"创建时,会在堆上分配内存空间,然后返回对象的引用,这对数组来说是一样的,因为数组也是一个 ...
- c语言随机生成整数存放一维数组_C语言入门教程(十)多维数组
作业: 1.编写程序从键盘得到一个非负数,统计出每个数字在各数位上出现的次数并把结果打印在屏幕上 一.变长数组 C99规范中允许使用变长数组 声明变长数组时可以使用变量表示存储区个数 如果多次运行这个 ...
- 大数据必学Java基础(二十六):数组的应用题
文章目录 数组的应用题 一.最值问题
- SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用
SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用 一.概述 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能 ...
- 配分函数|机器学习推导系列(二十六)
一.概述 对于有向概率图模型来说,由于图中存在天然的拓扑排序关系,所以有向概率图的因式分解的形式很容易写出来.而对于无向图来说就需要根据它图中的最大团来写成一个因式分解的形式,无向图模型在局部并没有表 ...
- 窗口消息——Windows核心编程学习手札之二十六
窗口消息 --Windows核心编程学习手札之二十六 Windows允许一个进程至多建立10000个不同类型的用户对象(user object):图符.光标.窗口类.菜单.加速键表等,当一个线程调用一 ...
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...
- 零基础带你学习MySQL—foreign key 外键(二十六)
零基础带你学习MySQL-foreign key 外键(二十六) -- 外键演示 -- 创建 主表 my_class CREATE TABLE my_class ( id INT PRIMARY KE ...
最新文章
- hdu 4503 湫湫系列故事——植树节
- source ~/.bashrc 什么意思
- python做大数据的框架_Python+大数据计算平台,PyODPS架构手把手教你搭建
- JSF中run项目时候Tomcat8启动不了的一种方法
- Hadoop生态系统学习路线
- android 沉浸栏灰色,Android 沉浸栏实践——踩坑
- mysql索引条件下推_MySQL索引条件下推的简单测试
- oracle open_link,open_links_per_instance 和 open_links 参数说明
- Educational Codeforces Round 39 A Partition
- 递归函数 二分查找法 的一些用法
- 返回信息是html的性能测试,Web前端性能测试小点
- ipv6 dns服务器修改,ipv6服务器dns怎么设置
- 理财笔记 - 控制风险永远是投资的第一要素
- 物联网应用开发实践案例-智能家居
- 专业能力和表达能力,你觉得哪个更重要?
- Idear集成maven环境
- java智能排线_网友晒别墅的智能家居排线 铺满整面墙 堪比数据中心
- 【ZYNQ】中断机制介绍(一)
- niit考试题库计算机英语翻译,NIIT SM2-MT1模拟试题 HELP KEY
- Didn't find class XXX on path: DexPathList [zip file XXX]