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

2016-04-23  20:46:26

 

一.二维数组:

 

一维数组----豆角

二维数组----表格

 

1)定义:

一维数组:

数据类型[] 数组变量名 = new 数据类型[数组长度];

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

 

2)二维数组:

数据类型[,] 数组变量名 = new 数据类型[行数,列数];

int[,] a = new int[3,4];

 

赋值:

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

取值:

    a[行下标,列下标]

 

☆.题目:一个班6个人,从键盘输入每个学号语文,数学,外语成绩(不需输入学号)。输出:学生成绩表(包括每个人的总分),每科的平均分。

附加1:试着,把不及格的用红字显示。

附加2:试着按照总分排序,显示名次出来。

int [,]a=new int [6,5];
        for (int i = 0; i < 6;i++ )
        {
            Console.WriteLine("输入第{0}位同学的语文成绩:",i+1);
            int 语文成绩 = Convert.ToInt32(Console .ReadLine ());
            Console.WriteLine("输入第{0}位同学的数学成绩:", i + 1);
            int 数学成绩 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("输入第{0}位同学的英语成绩:", i + 1);
            int 英语成绩 = Convert.ToInt32(Console.ReadLine());

            a[i, 0] = 语文成绩;
                a[i,1]=数学成绩 ;
                a[i, 2] = 英语成绩;
                a[i,3] = 语文成绩 + 数学成绩 + 英语成绩;

        }
        for (int i = 0; i < 6;i++ )
        {
            for (int j = i; j < 5;j++ )
            { 
            if (a[i,3]>a[j+1,3])
            {
                int v = a[i, 3];
                a[i, 3] = a[j + 1, 3];
                a[j + 1, 3] = v;

                int m = a[i, 0];
                a[i, 0] = a[j + 1, 0];
                a[j + 1, 0] = m;

                int n = a[i, 1];
                a[i, 1] = a[j + 1, 1];
                a[j + 1, 1] = n;

                int b= a[i, 2];
                a[i, 2] = a[j + 1, 2];
                a[j + 1, 2] = b;

               
            }
            
            }
        }
        int sum语文 = 0, sum数学 = 0, sum英语 = 0, avg语文, avg数学, avg英语;


        Console.Write("语文	数学	英语	总分	排序");
        Console.WriteLine();
        for (int i = 0; i < 6;i++ )
        {
            Console.WriteLine("{0}	{1}	{2}	{3}	{4}", a[i, 0], a[i, 1], a[i, 2], a[i, 3],i+1);
            sum语文 = sum语文 + a[i, 0];
            sum数学 = sum数学 + a[i, 1];
            sum英语 = sum英语 + a[i, 2];
        }
        avg语文 = sum语文 / 6;
        avg数学 = sum数学 / 6;
        avg英语 = sum英语 / 6;
        Console.WriteLine("平均分:语文{0}	数学{1}	英语{2}",avg语文 ,avg数学 ,avg英语 );

二.锯齿数据,数组的数组。

定义:

第一步:定义大数组

数据类型[][] a = new 数据类型[行数][];

第二步:定义小数组

数据类型[] a1 = new 数据类型[列数];

数据类型[] a2 = new 数据类型[列数];

......

第三步:把小数组放到大数组中

a[0] = a1;

a[1] = a2;

....

代码:

     int[][] a = new int[3][];
            int[] a0 = new int[] { 1, 2, 3, 4, 5 };
            int[] a1 = new int[] { 6, 7, 8 };
            int[] a2 = new int[] { 9, 10 };

            a[0] = a0;
            a[1] = a1;
            a[2] = a2;

            //显示

            for (int i = 0; i < a.Length; i++)//a.length=3
            {
                for (int j = 0; j < a[i].Length; j++)
                {
                    Console.Write(a[i][j] + "	");
                }
                Console.WriteLine();
            }

★ 拓展

 

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[下标]

取出来的值需要进行强制转换。

 代码举例

    ArrayList a = new ArrayList();
            a.Add(110);
            a.Add(120);
            a.Add(500);
            a.Add("汤圆");
            a.Add(true );
            a.Insert(1,"chihuo");//插入第2条为“chihuo”
            a.RemoveAt(3);//删除第四行 500


            for (int i = 0; i < a.Count;i++ )
            {
                Console.WriteLine(a[i]);
            }

结果显示

2、List<类型> 链表,,没有长度限制,可以随时向时添加或删除元素。只能放指定类型的数据,取出来也不用强制转换。

定义

List<类型> 变量名 = new List<类型>();

List<int> a = new List<int>();

操作:

a.Add(数据):添加

a.Insert(索引号,数据):插入

a.RemoveAt(索引号):删除

a.Count     集合中元素的个数

 

a.Sort();   排序

a.Reverse();反转

 

取值

a[索引号]

示例:

       List <int > a=new List<int> ();
        a.Add(10);
        a.Add(100);
        a.Add(1000);
        a.Add(500);

        a.Insert(2, 123);
        a.RemoveAt(3);

        for (int i = 0; i < a.Count;i++ )
        {
            Console.WriteLine(a[i]);
        }
        

结果显示

集合中的集合:

  List<List<int>> a = new List<List<int>>();
            
            List<int> a1 = new List<int>();
            a1.Add(10);
            a1.Add(12);
            a1.Add(15);

            List<int> a2 = new List<int>();
            a2.Add(20);
            a2.Add(23);
            a2.Add(28);

            a.Add(a1);
            a.Add(a2);

3.Dictionary<key,value>字典或哈希表

定义

Dictionary<int,string> a = new Dictionary<int,string>();

 

操作:

a.Add(键值,数据);

a.Remove(键值);

a.Count;

 

取值:

a[键值]

代码示例

4、栈,队列  

栈:先进后出,不能随机取其中任意一个值。

Stack<数据类型> a = new Stack<数据类型>();

a.Push(值);

数据类型 变量名 = a.Pop();

 

队例:先进先出,不能随机取其中任意一个值。

Queue<int> a = new Queue<int>();

a.Enqueue(值);

数据类型 变量 = a.Dequeue();

原文地址:https://www.cnblogs.com/pangchunlei/p/5425521.html