C#——数组

C#——数组

一、数组的声明

例如:int[]nums = {5,3,8} 类型后加[],就是这个类型的数组类型

int[] nums =new int[3]{5,3,8} 注意:个数和声明数必须一致。

二、数组的循环
数组的循环有两种:
第一种:for循环
第一种:foreach循环(具体语法结构如下图)
二者的区别:for循环可以逐个遍历,foreach循环逐个遍历
对图中例子foreach循环的解释如下:
string[] names = {"job","jerry","lily"};
声明一string类型的数组

foreach (string name in names)
对于数组names中的每一个元素进行循环,循环的变量名叫name
{ }表示:对每一个元素执行{}中的操作
{
Console.WriteLine("我的名字{0}",name);
}

三、实例

例1:数据的声明

namespace 数据 { class Program { static void Main(string[] args) { //声明三个int类型的变量i1,i2,i3 int i1 = 20; int i2 = 30; int i3 = 50; //声明一个int类型的数组(里面包含三个元素,其等价于上面的变量) int[]values={20,30,50}; //类型后加[],就是这个类型的数组类型 } } }


int[]values = {20,30,50} 表明声明int类型的数组,有三个无素20,30,50。

例2:对数组值元素进行赋值

namespace 数据 { class Program { static void Main(string[] args) { int[] values = { 20, 30, 50 };//类型后加[],就是这个类型的数组类型(声明一个int类型的数组) Console.WriteLine(values.Length); Console.WriteLine(values[0]); values[2] = values[2] * 2; Console.WriteLine(values[2]); Console.ReadKey(); } } }

数组循环for


例3:访问数组元素

namespace 数据 { class Program { static void Main(string[] args) { //声明一个int类型的数组 int[]values={20,30,50}; //类型后加[],就是这个类型的数组类型 //访问数组中的每一个元素 for (int i = 0; i < values.Length; i++)//是<,而不是<=,length和最后一个元素的序号相差1, { Console.WriteLine(values[i]); } Console.ReadKey(); } } }

注意:数组元素的序号是从0开始的。


数组循环foreach

例4:打印数据中的每一元素

namespace foreach循环 { class Program { static void Main(string[] args) { string[] names = {"job","jerry","lily"}; foreach (string name in names) { Console.WriteLine("我的名字{0}",name); } Console.ReadKey(); } } }

练习4:将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素的值减1。

namespace 数据练习04 { class Program { static void Main(string[] args) { //将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素的值减1 int[] values = { 30, -5, 90, 100, 0, -9 }; for (int i = 0; i < values.Length; i++) //遍历数组中的每一个元素 { if (values[i] > 0) { values[i]++; } else if (values[i] < 0) { values[i]--; } } for (int i = 0; i < values.Length; i++) //int i=0 ,体现了变量的作用域问题(大括号{}圈定了变量的使用范围) { Console.WriteLine(values[i]); } Console.ReadKey(); } } }

练习5:有一个整数数组,请声明一个字符串数组,将整数数组中的每一个元素的值转换为字符串数组中。

namespace 数组练习05 { class Program { static void Main(string[] args) { //有一个整数数组,请声明一个字符串数组,将整数数组中的每一个元素的值转换为字符串数组中。 int[] values = {20,25,-50,9}; string[] strs = new string[values.Length]; for (int i = 0; i < values.Length; i++) { strs[i] = Convert.ToString(values[i]); //整数数组中的每一个元素的值转换为字符串数组中 } for (int i = 0; i < strs.Length; i++) //遍历字符串数组 { Console.WriteLine(strs[i]); } Console.ReadKey(); } } }

练习5:将一个字符串数组的元素的顺序进行反转,{"3","a","8","haha"}。

namespace 数组练习06 { class Program { static void Main(string[] args) { //将一个字符串数组的元素的顺序进行反转,{"3","a","8","haha"}。 string[]strs={"3","a","8","haha"}; for (int i = 0; i < strs.Length / 2; i++) //计算机中的整数运算7/2=3,因为是整除 { string temp = strs[i]; strs[i]=strs[strs.Length-1-i]; strs[strs.Length - 1- i] = temp; } for (int i = 0; i < strs.Length; i++) { Console.WriteLine(strs[i]); } Console.ReadKey(); } } }


练习5:将一个字符串数组的元素的顺序进行反转,{"3","a","8","haha"}。

问题的关键

将一个字符串数组的元素的顺序进行反转,字符串的数组元素无论是奇数个还是偶数个?都是 i , length-1-i这两个位置的元素进行交换。

字符串的数组元素是奇数个:{"3","a",“0”,"8","haha"}

字符串的数组元素是偶数个:{"3","a","8","haha"}

元素反转的位置:i , length-1-i

反转的个数:length/2

如下图:

(2)与“两个变量值交换”思路相同,都是寻求中间变量

namespace 数组练习06 { class Program { static void Main(string[] args) { //交换两个变量的值 int i1 = 3; int i2 = 5; int i = i1; //保存i1的值,这样不会因为i1=i2而丢失i1原先的值。 i1 = i2; i2 = i; Console.WriteLine("i1={0},i2={1}",i1,i2); Console.ReadKey(); } } }

思想:“数组的元素的顺序进行反转”和“两个变量的值的交换”解题思想是相同的,体现了复杂都是从简单中演变来的。



### C# 中正确输出数组的方法 在 C# 中,可以通过多种方式输出数组的内容。以下详细介绍几种常用的方式及其对应的示例代码。 #### 使用 `Console.WriteLine` 和索引逐一输出 通过访问数组的每个元素并使用其索引来逐个打印到控制台。这种方式适用于任何类型的数组: ```csharp int[] numbers = new int[] { 1, 2, 3, 4, 5 }; for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers[i]); } ``` 上述代码展示了如何利用 `for` 循环遍历整型数组,并将每个元素单独打印出来[^1]。 --- #### 使用 `foreach` 遍历数组 对于更简洁的语法,可以采用 `foreach` 循环来迭代数组中的每一个元素: ```csharp int[] numbers = new int[] { 1, 2, 3, 4, 5 }; foreach (int number in numbers) { Console.WriteLine(number); } ``` 此方法无需手动管理索引变量,适合快速处理简单数据结构的情况。 --- #### 将数组转换为字符串后一次性输出 如果希望以某种特定格式(如逗号分隔)显示整个数组,则可借助 `string.Join()` 方法实现这一功能: ```csharp List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; string output1 = string.Join(",", list); // 用逗号连接各元素 Console.WriteLine(output1); string output2 = string.Join("\n", list); // 每个元素占一行 Console.WriteLine(output2); ``` 这里不仅演示了如何把列表转成单行或多行形式展示,还体现了灵活性——可以根据实际需求调整分隔符[^2]。 --- #### 对字节数组按固定大小分割后再输出 当面对较大的二进制数据集时,可能需要按照一定规则对其进行划分再分别呈现。下面的例子说明了怎样每隔两个字节就换一次新行: ```csharp byte[] result = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; using (StreamWriter writer = new StreamWriter("output.txt")) { for (int i = 0; i < result.Length; i += 2) // 按照每两字节一组进行切割 { byte[] tempArray = new byte[2]; int length = Math.Min(2, result.Length - i); Array.Copy(result, i, tempArray, 0, length); writer.WriteLine(BitConverter.ToString(tempArray).Replace("-", " ")); } } MessageBox.Show("写入成功"); ``` 该片段特别强调了对大容量字节数组的操作技巧以及文件流的应用场景[^4]。 --- ### 总结 以上介绍了四种不同的 C# 数组输出策略,涵盖了基本循环机制、高级集合工具运用以及复杂数据类型特殊化处理等方面的知识点。开发者应根据具体项目环境和个人偏好选取最合适的方案实施编码工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值