首页 > 其他分享 >多维数组及其应用————13

多维数组及其应用————13

时间:2024-12-03 23:28:42浏览次数:8  
标签:初始化 13 省略 一维 1.2 二维 数组 多维

1. 二维数组

如果我们把 ⼀维数组做为数组的元 素,这时候就是⼆维数组, ⼆维数组作为数组元素的数组被为三维数组,⼆维数组以上的数组统称 为多维数组。
1.1 二维数组的创建
先行后列 其实也可以这样理解:把二维数组当成特殊的一维数组,即比如 arr1[ 0 ] 为一个“数组名”,后面的那个括号就是一维数组的下标名
1.2 二维数组的初始化
1.2.1 不完全初始化

默认情况是一行一行初始化的,没有被初始化的就默认都是 0 ,如果是字符型的话,也会对应到对应的ASCII码,也就是 \0 

如果是整型,就只是 0 
1.2.2 完全初始化

会自动根据行列来按顺序安排位置
1.2.3 按照行初始化
一维数组用{  }来初始化,二维数组就是把一维数组当成元素,所以每个小花括号就相当于一个一维数组
1.2.4 初始化时省略行
初始化时只能省略行而不能省略列 省略行时,可以通过初始化的值和列数来判断行数,但是如果省略列数,行列就都是未知数了
1.3 二维数组的使用
1.3.1 二维数组的下标
arr1[ 行 ] [ 列 ] ,行列都是从 0 开始的,有这两个下标就能找打到对应的数组元素
1.3.2 二维数组的打印
通过这样的方式来实现循环打印,不熟悉的话可以调试然后看看运行过程 要熟悉这种循环嵌套的执行流程 1.3.3 二维数组的输入 也要用循环,这里要注意局部变量和全局变量的知识, 1.4 二维数组在内存中的存储 都是相差 4 个字节,也就是一个整型的长度,所以其实他们是线性存放的 这也就更好的印证了前面说的把二维数组当一维数组来理解, 比如 arr[ 1 ]就当做一个数组的数组名

2. C99 中的变长数组

但是vs2022默认的msvc编译器是不支持这种语法的,要在gcc编译器上才能实现 但是要注意不能初始化变长数组 具体就是这么用的 至于能用在什么有意义的程序里,还不太懂 2.1 怎么在vs2022上使用变长数组? 需要把编译器从msvc切换成clang 操作步骤: 就可以了

3. 数组的渐进打印

其原理就是一个数组替换掉另一个数组 具体看这个吧,原理都在里面了

4. 查找数组元素

4.1 普通的查找
就这么个找法,不过我这里 nt 了一下
4.2 二分查找
天塌了,为什么代码错了,找了十几分钟都没找出毛病我擦 !!!问题出在 mid 没有放在循环里!导致mid不能更新,所以直接就找不到了 改过来之后其实还是有一点缺陷,就是这里如果left和right的值很大的话,就会远超int或者long long int,最后求出来的平均值就会对不上,解决办法就是改成 int mid = left + (right - left) / 2;

标签:初始化,13,省略,一维,1.2,二维,数组,多维
From: https://blog.csdn.net/2403_89035562/article/details/144211395

相关文章

  • 25.100ASK_T113-PRO 测试摄像头(型号)
    1.摄像头USB2.0摄像头,支持 UVC协议, 就是V4L2+USB2.0 大概可这样理解吧.这个是2K分辨率.2.8mm焦距.开发板还是 100ASK_T113-PRO V1.2版2.查看摄像头驱动挂载情况这样接好.看看设备有没有挂载上#ls/dev/video*/dev/video0/dev/video1这两个就是USB摄像......
  • 题解:P11362 [NOIP2024] 遗失的赋值
    这里写一个我在考场上差点想出来的、比较另类的做法。若\(\existsc_i=c_j(i\nej),d_i\ned_j\),则答案显然为\(0\)。否则,我们可以将序列\(x\)中的数分为已确定和未确定两类。设\(f_0(i)\)为当\(x_i\)未确定时前\(i-1\)个二元限制的方案数,\(f_1(i)\)为当\(x_i\)确......
  • C语言数组作业
    作业1:使用二维数组输出杨辉三角作业2:通过键盘输入6名学生的成绩,输出6名学生的成绩,使用冒泡法对班级学生的成绩升序排序,输出排序后成绩作业3:有如下两个数组:intarr[]={1,2,3,4,5,6,7,8,9,0};intbrr[]={3,7,15,9,20,2,100,4};要求,自定义一个数组crr,将上面两个数组......
  • Day6:杨辉三角、冒泡选择排序、交集存新数组、十名学生成绩、四组学生成绩
    题目:使用二维数组输出杨辉三角分析代码#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(intargc,constchar*argv[]){      inth=10,l=10;   intarr[h][l];   //初始化数组   for(inti=0;i<h;i++)   {  ......
  • E86 换根DP CF1324F Maximum White Subtree
    视频链接:E86换根DPCF1324FMaximumWhiteSubtree_哔哩哔哩_bilibili  MaximumWhiteSubtree-洛谷|计算机科学教育新生态//换根DPO(n)#include<bits/stdc++.h>usingnamespacestd;constintN=200005;vector<int>e[N];intn,a[N],f[N];voiddfs(int......
  • 易语言带数组json的编写方法
    案例json:{"op":"subscribe","args":[{"channel":"tickers","instId":"123"},{"channel":"tickers","instId":"456"},{"channel":&......
  • 题解:AT_arc139_d [ARC139D] Priority Queue 2
    题面发现我们不好算到最后还剩些什么。考虑计算\(\sum\limits_{i=1}^m\sum\limits_{j=1}^n[s_j\gei]\),容易发现这和原式等价。记\(b_i\)表示\(s\)中不小于\(i\)的数的个数,每次删去第\(x\)小的等价于将所有超过\(n-x+1\)的地方减1,加入\(k\)等价于将\(b_{1,k}\)......
  • 数组中出现次数超过一半的数字整型数组有一个数字出现的次数超过总数的一半,请找出该
    题目描述        数组中出现次数超过一半的数字整型数组有一个数字出现的次数超过总数的一半,请找出该数字,例如长度为9的数组{1,2,3,2,4,2,5,2,2}。由于2出现的次数是5次,超过一半,所以结果为2。代码实现算法1:先排序,然后中间值就是要找的数字 intCmp......
  • C语言实验 一维数组
    时间:2024.12.3一、实验7-1交换最小值和最大值#include<stdio.h>intmain(){intn,a[10],i,min=0,max=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n;i......
  • 题解:AT_abc138_f [ABC138F] Coincidence
    https://www.luogu.com.cn/problem/AT_abc138_f对于\(x\ley\):若\(2x\ley\),则\(y-x>y\bmodx\)。若\(2x>y\),则\(y-x=y\bmodx\)。有\(x\oplusy\gey-x\)。当\(2x\ley\)时,不可能存在\(y\bmodx=x\oplusy\)了。现......