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


    一.二维数组

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

    定义:
    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  

  • 相关阅读:
    未来房价经济管窥(崩溃不行,疯涨也不行,所以只能冰冻。房产税的开征是个关键转折点,也是判断未来房价的重要指标。大城市的房租还会继续涨,以后不愁没房子住,虽然仍然买不起)
    QT使用UAC(经过验证)
    ALT+数字,可输入汉字或拉丁字母 good
    RUST叫系统编程语言,而GO是网络编程语言
    最近学习了下BI(商业智能)做报表
    选择优势股票,动态配置
    对加密方式(公钥私钥)的形象理解(以http和https为例)
    SQLServer重建索引
    怎么样成为一个全栈程序员(请把一个能力发展到90,如果你还有余力把另一个能力发展到90,否则就是平庸的废材)
    如何才能学到Qt的精髓——信号槽之间的无关性,提供了绝佳的对象间通讯方式,QT的GUI全是自己的一套,并且完全开源,提供了一个绝好机会窥视gui具体实现
  • 原文地址:https://www.cnblogs.com/kellybutterfly/p/5426040.html
Copyright © 2020-2023  润新知