二維數組,鋸齒數組和集合

一.二維數組數組

二維數組:
一維數組----豆角
二維數組----表格spa

定義:
1.一維數組:
數據類型[] 數組變量名 = new 數據類型[數組長度];
數據類型[] 數組變量名 = new 數據類型[數組長度]{1,2,3....};code

2.二維數組:
數據類型[,] 數組變量名 = new 數據類型[行數,列數];
int[,] a = new int[3,4];blog

賦值:
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("學號\t語文\t數學\t英語\t總分\t名次");
55             for (int i = 0; i < 6; i++)
56             {
57                 Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{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}\t{1}\t{2}",sum1/6,sum2/6,sum3/6);
72            
73         }

二.鋸齒數據,數組的數組。
定義:
第一步:定義大數組
數據類型[][] a = new 數據類型[行數][];
第二步:定義小數組
數據類型[] a1 = new 數據類型[列數];
數據類型[] a2 = new 數據類型[列數];
......
第三步:把小數組放到大數組中
a[0] = a1;
a[1] = a2;
....數學

舉例:string

 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]+"\t");
19                 }
20                 Console.Write("\n");
21             }
22 
23         }

注意:it

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

 

三.集合:

1、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         }

運行結果:

2、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         }

運行結果:

3、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         }

運行結果:


4、棧,隊列 知道就好了
棧:先進後出,不能隨機取其中任意一個值。
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  

相關文章
相關標籤/搜索