一.二維數組數組
二維數組:
一維數組----豆角
二維數組----表格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