C# 数组基础

/*
学习数组
数组在有些书里面称之为引用类型 ,更确切的说数组是一种数据结构

*/
using System;


namespace _array
{
class MainClass
{
public static void Main (string[] args)
{
// 最基本的数组
// 数组的定义:存储相同的数据类型的集合
//第一种写法:动态分配内存空间
// int[] intArray = new int[4];//定义了一个长度为4的整型数组,这个数组只可以存储行数据
//第二种写法:
// int[] intArray = new int[]{1,2,3,4};


// 实际上我们int[] 他的原型是Array
// 而int[] 能使用 foreach 的原因归根结底为 Array类实现了IEnumrable这个接口


//注意:初始化数组的时候,要么给定长度,要么初始化数组内的元素个数;
//访问数组的元素
//访问数组第0个位置存储的元素
// Console.WriteLine("数组第0个位置存储的元素为:" + intArray[4]);
//访问数组第4个位置 存储的元素,---- 访问越界(程序奔溃)


//遍历数组1
// for(int i=0;i<intArray.Length;i++){
// Console.WriteLine (intArray [i]);
// }


//遍历数组2
// foreach (var item in intArray) {
// Console.WriteLine (item);
// }


// 赋值
//练习,申明string,char,float,double相应类型的数组,进行遍历访问
// string[] str = {"str","cha","flo","doub"};
// char[] cha = { 'a', 'b' };
// float[] flo = { 12, 12 };
// double[] doub = { 12, 12 };
// for (int i = 0; i < 4; i++) {
// foreach (var item in str) {
// Console.WriteLine (item);
// }
// }


// 练习:分别定义练习1类型对应的Array数组,设置数组元素,并且遍历所有元素
// Array strArray = Array.CreateInstance(typeof(string),3);
// Array intArray = Array.CreateInstance(typeof(int),2);
// Array floArray = Array.CreateInstance(typeof(float),5);
// Array doubArray = Array.CreateInstance(typeof(double),5);
// strArray.SetValue ("haha", 0);
// strArray.SetValue ("haha1", 1);
// strArray.SetValue ("haha2", 2);
//
//
// intArray.SetValue (1, 0);
// intArray.SetValue (2, 1);
// floArray.SetValue (1, 0);
// doubArray.SetValue (1, 0);
//
// foreach (string  item in strArray) {
// Console.WriteLine (item);
// }


// int[] array1 = { 1, 2, 3, 4, 5 };
// int[] array2 = { 6, 7, 8, 9, 10 };
//
// var se = new ArraySegment<int>[2] {
// new ArraySegment<int>(array1,0,1),
// new ArraySegment<int>(array2,2,2)
// };
//
// print (se);


//练习3:找出数组中最大的数,以及最大值所在的位置 


// int[] intArray = { 2, 3, 4, 6, 6, 3, 5, 6, 9 };
// int maxIndex = 0;
// for (int i = 1; i < intArray.Length; i++) {
// if (intArray [maxIndex] < intArray [i])
// maxIndex = i;
// }
// Console.WriteLine ("最大值为 {0},下标为{1}", intArray [maxIndex], maxIndex);


// 练习4:定义一个整型数组,初始化3个整型元素,打印出最大值,最小值,以及平均值
// int[] intArray = {1,2,3};
// int max=intArray[0], min=intArray[0], sum=intArray[0];
// for (int i = 1; i < 3; i++) {
// if (max < intArray [i])
// max = intArray [i];
// if (min > intArray [i])
// min = intArray [i];
// sum += intArray [i];
// }
// Console.WriteLine ("最大值为{0},最小值为{1},平均值为{2}", max, min, sum / 3);


// //练习5:定义一个数组.从键盘上获取三个整形数值,打印出最大值
// int[] array = {1,2,3};
// int max = array [0];
// for (int i = 1; i < 3; i++) {
// if (max < array [i])
// max = array [i];
// }
// Console.WriteLine (max);


//练习6:拼接两个字符串数组,到一个数组,遍历显示
// string[] str1 = {"hahaha","hahaha"};
// string[] str2 = { "aaaaa" };
// var se = new ArraySegment<string>[2] {
// new ArraySegment<string> (str1, 0, str1.Length),
// new ArraySegment<string> (str2, 0, str2.Length)
// };
// print(se);


// string[] str1 = {"hahaha","hahaha"};
// string[] str2 = { "aaaaa" };
// string[] str3 = new string[str1.Length + str2.Length];
// for (int i = 0; i < str1.Length; i++)
// str3 [i] = str1 [i];
// for (int i = str1.Length, j = 0; i < str3.Length; i++,j++)
// str3 [i] = str2 [j];
// for (int i = 0; i < str3.Length; i++)
// Console.WriteLine (str3 [i]);


string[] str1 = {"hahaha","hahaha"};
string[] str2 = { "aaaaa" };
string[] str3 = new string[str1.Length + str2.Length];
for (int i = 0,j=0; i < str3.Length; i++) {
if (i < str1.Length)
str3 [i] = str1 [i];
else {
str3 [i] = str2 [j];
j++;
}


}
for (int i = 0; i < str3.Length; i++)
Console.WriteLine (str3 [i]);
}






static void print(ArraySegment<string>[] segment){
foreach (var seg in segment) {
for (int i = seg.Offset; i < seg.Offset + seg.Count; i++) {
Console.WriteLine (seg.Array [i]);
}
}
}




}
}

猜你喜欢

转载自blog.csdn.net/wzjssssssssss/article/details/53423981