二维数组,锯齿数组和集合

一.二维数组

二维数组:
一维数组----豆角
二维数组----表格

定义:
1.一维数组:
数据类型[] 数组变量名 = new 数据类型[数组长度];
数据类型[] 数组变量名 = new 数据类型[数组长度]{1,2,3....};

2.二维数组:
数据类型[,] 数组变量名 = new 数据类型[行数,列数];
int[,] a = new int[3,4];

赋值:
a[行下标,列下标] = 值 下标都是从0开始的
取值:
a[行下标,列下标]

题目:一个班6个人,从键盘输入每个学号语文,数学,外语成绩(不需输入学号)。输出:学生成绩表(包括每个人的总分),每科的平均分。
附加1:试着,把不及格的用红字显示。
附加2:试着按照总分排序,显示名次出来。

代码:

 1  static void Main(string[] args)
 2         { 
 3         //输入6个学生的语文,数学,英语成绩,输出总分和名次
 4             int[,] a=new int[6,5];
 5             //输入
 6             for (int i = 0; i <6; i++)
 7             {
 8                 Console.Write("请输入第{0}个学生的语文成绩:",i+1);
 9                 int yw = Convert.ToInt32(Console.ReadLine());
10                 Console.Write("请输入第{0}个学生的数学成绩:", i+1);
11                 int sx = Convert.ToInt32(Console.ReadLine());
12                 Console.Write("请输入第{0}个学生的英语成绩:", i + 1);
13                 int yy = Convert.ToInt32(Console.ReadLine());
14 
15                 a[i, 0] = i + 1;//学号
16                 a[i, 1] = yw;
17                 a[i, 2] = sx;
18                 a[i, 3] = yy;
19                 a[i, 4] = yw + sx + yy;
20                 
21             }
22 
23             //排序
24             for (int i = 0; i <6; i++)
25             {
26                 for (int j = i; j <5; j++)
27                 {
28                     if (a[i,4]<a[j+1,4])
29                     {
30                         int txh = a[j + 1, 0];
31                         a[j + 1, 0] = a[i, 0];
32                         a[i, 0] = txh;
33 
34                         int tyw = a[j + 1, 1];
35                         a[j + 1, 1] = a[i, 1];
36                         a[i, 1] = tyw;
37 
38                         int tsx = a[j + 1, 2];
39                         a[j + 1, 2] = a[i, 2];
40                         a[i, 2] = tsx;
41 
42                         int tyy = a[j + 1, 3];
43                         a[j + 1, 3] = a[i, 3];
44                         a[i, 3] = tyy;
45 
46                         int tzf = a[j + 1, 4];
47                         a[j + 1, 4] = a[i, 4];
48                         a[i, 4] = tzf;
49                     }
50                 }
51             }
52             Console.Clear();
53             //输出
54             Console.WriteLine("学号	语文	数学	英语	总分	名次");
55             for (int i = 0; i < 6; i++)
56             {
57                 Console.WriteLine("{0}	{1}	{2}	{3}	{4}	{5}",a[i,0],a[i,1],a[i,2],a[i,3],a[i,4],i+1);
58             }
59             int sum1 = 0, sum2 = 0, sum3 = 0;
60             for (int i = 0; i < 6; i++)
61             {
62                 
63                 sum1 += a[i, 1];
64                  
65                 sum2 += a[i, 2];
66                  
67                 sum3 += a[i, 3];
68                 
69                 
70             }
71             Console.WriteLine("平均分:{0}	{1}	{2}",sum1/6,sum2/6,sum3/6);
72            
73         }

二.锯齿数据,数组的数组。
定义:
第一步:定义大数组
数据类型[][] a = new 数据类型[行数][];
第二步:定义小数组
数据类型[] a1 = new 数据类型[列数];
数据类型[] a2 = new 数据类型[列数];
......
第三步:把小数组放到大数组中
a[0] = a1;
a[1] = a2;
....

举例:

 1 static void Main(string[] args)
 2         { 
 3         //锯齿数组
 4             int[][] a = new int[3][];
 5             int[] a1 = new int[] {3,4,5,6,7};
 6             int[] a2 = new int[] {1,2,3};
 7             int[] a3 = new int[] {7,8,9,10};
 8 
 9             a[0] = a1;
10             a[1] = a2;
11             a[2] = a3;
12 
13             //显示
14             for (int i = 0; i <a.Length; i++)//a.length=3
15             {
16                 for (int j = 0; j <a[i].Length; j++)
17                 {
18                     Console.Write(a[i][j]+"	");
19                 }
20                 Console.Write("
");
21             }
22 
23         }

注意:

int[,] a = new int [3][4]; //错
int[][] a = new int[3,4]; //错
int[][] a = new int[3][4]; //错
int[,] c = new int[3,4]; //对,这是二维数组

c.length==12

三.集合:

一、ArrayList 链表,没有长度限制,可以随时向时添加或删除元素。
需要在前面加上:using System.Collections;

定义:
ArrayList a = new ArrayList();
操作:
a.Add(数据):添加
a.Insert(索引号,数据):插入
a.RemoveAt(索引号):删除
a.Count 集合中元素的个数

取值:
a[下标]
取出来的值需要进行强制转换。

举例:

 1 static void Main000(string[] args)
 2         {
 3             ArrayList a = new ArrayList();
 4             a.Add(10);
 5             a.Add(20);
 6             a.Add(25);
 7             
 8             a.Insert(1, 15);
 9 
10             a.RemoveAt(2);
11 
12             a[1] = (int)a[1] + 10;
13             
14 
15             for (int i = 0; i < a.Count; i++)
16             {
17                 Console.WriteLine(a[i]);
18             }
19         }

运行结果:

二、List<类型> 链表,,没有长度限制,可以随时向时添加或删除元素。只能放指定类型的数据,取出来也不用强制转换。
定义
List<类型> 变量名 = new List<类型>();
List<int> a = new List<int>();
操作:
a.Add(数据):添加
a.Insert(索引号,数据):插入
a.RemoveAt(索引号):删除
a.Count 集合中元素的个数

a.Sort(); 排序
a.Reverse();反转

取值
a[索引号]

举例

 1  static void Main(string[] args)
 2         {
 3             List<int> a = new List<int>();
 4             a.Add(5);
 5             a.Add(10);
 6             a.Add(20);
 7 
 8             a.Insert(2,15);
 9             a.RemoveAt(1);
10 
11             a.Sort();
12             a.Reverse();
13 
14             for (int i = 0; i < a.Count; i++)
15             {
16                 Console.WriteLine(a[i]);
17             }
18 
19         }

运行结果:

三、Dictionary<key,value>字典或哈希表
定义
Dictionary<int,string> a = new Dictionary<int,string>();

操作:
a.Add(键值,数据);
a.Remove(键值);
a.Count;

取值:
a[键值]

举例:

 1  static void Main(string[] args)
 2         {
 3             Dictionary<int, string> a = new Dictionary<int, string>();
 4             a.Add(101,"haha");
 5             a.Add(103,"hehe");
 6             a.Add(105,"xixi");
 7             a.Add(107,"哈哈");
 8 
 9             a.Remove(103);
10             a[105] = "不许笑";
11             foreach (KeyValuePair<int,string>p in a)
12             {
13                 Console.WriteLine(p.Value);
14             }
15         }

运行结果:


四、栈,队列 知道就行了
栈:先进后出,不能随机取其中任意一个值。
Stack<数据类型> a = new Stack<数据类型>();
a.Push(值);
数据类型 变量名 = a.Pop();

 举例:

 1  static void Main(string[] args)
 2         {
 3             Stack<int> a = new Stack<int>();
 4 
 5             //向集合里推入元素
 6             a.Push(10);
 7             a.Push(20);
 8             a.Push(30);
 9             a.Push(40);
10             //将元素一个个弹出集合,因为stack 没有索引,所以遵循先进后出原则
11             Console.WriteLine(a.Pop());
12             Console.WriteLine(a.Pop());
13             Console.WriteLine(a.Pop());
14             Console.WriteLine(a.Pop());
15 
16         }

运行结果:

队列:先进先出,不能随机取其中任意一个值。
Queue<int> a = new Queue<int>();
a.Enqueue(值);
数据类型 变量 = a.Dequeue();

举例:

 1  static void Main(string[] args)
 2         {
 3             Queue<int> a = new Queue<int>();
 4 
 5             //进入队列
 6             a.Enqueue(10);
 7             a.Enqueue(20);
 8             a.Enqueue(30);
 9             a.Enqueue(40);
10 
11             //出队列,先进先出
12             Console.WriteLine(a.Dequeue());
13             Console.WriteLine(a.Dequeue());
14             Console.WriteLine(a.Dequeue());
15             Console.WriteLine(a.Dequeue());
16         }

运行结果:

2016.4.23  

原文地址:https://www.cnblogs.com/kellybutterfly/p/5426040.html