C#数组详解:一维二维与交错数组

二维数组和交叉数组


一,一维数组

int\[\] i1 = new int\[\] {1,2,3,};//一维数组

int\[\] i2 = {1,2,3}; //一维数组

int\[\] i3 = new int3; //v

二,二维数组

1,二维数组定义

int , i4 = new int2,4; //代表两行四列

赋值方式

i40, 0 = 10;
i40, 1 = 20;
i40, 2 = 30;
i40, 3 = 40;
i41, 0 = 10;
i41, 1 = 20;
i41, 2 = 30;
i41, 3 = 40;


例子1,20名学生,3门成绩

Random r = new Random();

int, i5 = new int20, 3;
Console.WriteLine("学号\t\t姓名\t\tDB\t\tC#\t\tVP");
for (int i = 0; i < i5.GetLength(0); i++) // 循环行数 i5.GetLength(0)获取一唯的长度
{

Console.Write((i + 1) < 10 ? "00" + (i + 1) : "0" + (i + 1));
Console.Write("\t\t鲁班7号" + "\t\t");

for (int j = 0; j < i5.GetLength(1); j++)// 循环列数
{

i5i, j = r.Next(0, 101); //给第几行第几列赋值
Console.Write(i5i, j + "\t\t");
}
Console.WriteLine("");

输出结果:


例子2;bool的二维数组 20行5列 001已售完 002有空座

bool, b1 = new bool20, 5;

//给b1数组进行赋值
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 5; j++)
{
b1i, j = r.Next(0, 2) == 1 ? true : false;
string str = string.Format("{0:D3}{1}\t\t", i * 5 + 1 + j, b1i, j == true ? "有空座" : "已售完");
Console.Write(str);
}
Console.WriteLine("");
}

int num = int.Parse(Console.ReadLine()); //60
int row = (num - 1) / 5;
int colume = (num - 1) % 5;
if (b1row, colume)
{
Console.WriteLine("有空座位");
}
else
{
Console.WriteLine("已售完");
}

注意:
如果在visual studio中运行需要调整一些设置,否则会报错 :

解决办法:

找到解决方案管理器------>右键当前项目名称 ,找到属性,调整如下内容:

将输出类型调整 ,Windows应用程序------>控制台应用程序

代码运行结果如下:


三, 交错数组

1,

与多维数组的区别

  • 内存结构:交错数组的子数组独立分配,多维数组是连续内存块。
  • 灵活性:交错数组的子数组长度可动态调整,多维数组每维长度固定。
  • 性能:多维数组访问可能更快(缓存友好),交错数组适合不规则数据。
2,交错数组 大数组嵌套小数组

//arr = \[1,2,3,4,5,6,7] //取出7 :arr20
int\[\]\[\] i1 = new int3\[\]; //外层数组长度3 内层数组长度不固定

//初始化定义数组元素 外层数组长度为3 内层数组元素不固定
int\[\]\[\] i2 = new int3\[\]
{
new int\[\] { 1, 2},
new int\[\] { 3, 4},
new int\[\] { 5, 6},
};
//取出元素
Console.WriteLine(i220);

//{},{},{}//每个大括号代表1个对象

//动态添加元素
int\[\]\[\] i3 = new int3\[\];
for (int i = 0; i < i3.Length; i++)
{
int\[\] n1 = new int4;//定义内层数组
for (int j = 0; j < n1.Length; j++)
{
n1j = j;//添加内层数组的元素
}
i3i = n1;//给外层数组添加元素
}

//遍历数组
for (int i = 0; i <i3.Length; i++)//遍历外层数组
{
for (int j = 0; j < i3i.Length; j++)//遍历内层数组
{
Console.Write(i3ij + "==========");
}
Console.WriteLine("");

}

//外层数组10个长度 ,内层1数组存放1 ,内层2数组存放2,3,
// 内层3数组存放456,
//内层10数组存放..... ,

int\[\]\[\] i4 = new int10\[\];
int num = 0;
for (int i = 0;i < i4.Length; i++)
{
int\[\] n2 = new inti+1;//内层数组元素
for (int j = 0;j < n2.Length; j++)
{
num++;
n2j = num;
}
i4i = n2;
}
//遍历数组
for (int i = 0; i < i4.Length; i++)//遍历外层数组
{
for (int j = 0; j < i4i.Length; j++)//遍历内层数组
{
Console.Write(i4ij);
}
Console.WriteLine("");

}

相关推荐
weixin_440730501 分钟前
playwright实战-渠道应用操作
开发语言·前端·python
陈年老古董7 分钟前
Python模拟MapReduce分治思想 | 从单文件统计到大文件拆分聚合 学习笔记
开发语言·hadoop·笔记·python·学习
quantdash_cc7 分钟前
数据 API 的稳定性应该如何长期监控?从量化数据监控体系到 QuantDash 实践
开发语言·python·数据分析·量化交易·股票数据·quantdash
佳児素花痴╮19 分钟前
C++速通2
开发语言·c++·算法
似水এ᭄往昔23 分钟前
【Qt】--常用控件(输入类控件)
开发语言·qt
江湖人称菠萝包36 分钟前
【Windows】《深入浅出Windows API程序设计:编程基础篇》笔记-Chapter9-对话框
windows·笔记
David猪大卫39 分钟前
【C++修炼】异常
开发语言·c++·经验分享·笔记·学习·考研·面试
reasonsummer39 分钟前
【办公类-146-07】20260906《总园大班6个班级四大教育》(优化版:标题excle+复制AI文字+Python占位符录入)
人工智能·python·c#
玖玥拾1 小时前
Lua 基础语法(六)xLua Lua 调用 C# 交互
开发语言·unity·c#·lua
Joolun商城源码_Java1 小时前
Java 商城技术栈怎么选:单体、微服务还是前后端分离多端?
java·开发语言·微服务