C# study3

知识点:

变量: 就是在内存开辟一个存储空间


数组:数据的组合,相同类型的多个数据的组合,在内存中开辟了一段连续的空间,它是一个容器,属于引用类型
    数组创建之手,数组长度不能改变




数组的三要素:
1.数据成员
2.数据的下标,可以通过下标获取数据的成员
3.数组的类型(成员类型)




声明数组的格式:
数据类型[] 数组名;//声明一个数组类型的变量


声明数组变量,并实例化数据对象
数据类型[] 数据名=new 数据类型[数组的长度];//长度必须指定
new的作用:在堆区创建对象,并为该死对象分配合适的空间,并返回该对象的地址


数组的注意事项:
1.访问数组成员:  数组名[下标],下标从0开始,数组的最大下标length-1
2.常见错误:IndexOutofRangException: 索引越界
3.获取数组的长度:  数组名.Length
4.声明数组时并初始化数组成员
  数据类型[] 数组名=new 数据类型[]{值1,值2,值3.....};
  如果指定了数组的长度,那么{}中成员个数必须与长相一致
  如果没指定数组的长度,则{}中成员个数任意,数组长度为成员的个数
5. 数据类型[] 数组名=new 数据类型[]{值1,值2,值3.....}的简写方式:
   数据类型[] 数组名={值1,值2,值3.....};


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Demo2
{
    class Program
    {
        static void Main(string[] args)
        {
            //保存30个学生的学生成绩
            
            //声明一个int类型的数组
            //int[] ary;//局部变量
            
            //int[] ary=new int[4];
            /*
            int[] ary;  //声明数组变量
            ary=new int[4]; //创建数组对象,并把数组对象的引用赋给ary
            ary[0] = 10;
            ary[1] = 20;
            ary[2] = 30;
            ary[3] = 40;
           // ary[4] = 50;//出现错误,索引越界
             * */

            //int[] ary = new int[] { 6, 7, 8, 9 ,5,6,7,9};
            //int[] ary = { 6,7,8,9};
            //String[] ary = { "aaa","bbb","ccc"};
            //float[] ary = { 4.3f,4.6f,8.8f};  
            //输出数组每个成员
           // for (int i = 0; i < ary.Length; i++) {
           //    Console.WriteLine(ary[i]);
           // }

           /* Console.WriteLine("------------多维数组--------------");
            int[,] ary=new int[2,3];//声明并创建一个二维数组
            ary[0, 0] = 1;
            ary[0, 1] = 2;
            ary[0 ,2] = 3;

            ary[1, 0] = 4;
            ary[1, 1] = 5;
            ary[1, 2] = 6;

            int[,] ary2 = new int[,] { {1,2,3},{4,5,6},{6,7,8}};
            
            //遍历二维数组
            for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    Console.WriteLine(ary[i, j]);
                }
            }*/

            /*
            Console.WriteLine("------------交错数组--------------");
            int[][] ary=new int[3][];//声明交错数组,数组的成员 又是一个数组

            ary[0]=new int[]{1,2,3,4};
            ary[1]=new int[]{5,6};
            ary[2] = new int[] { 7,8,9,10,11};



            for (int i = 0; i < 3; i++) {
                int[] tmp = ary[i];
                for (int j = 0; j < tmp.Length; j++)
                {
                    Console.WriteLine(ary[i][j]);
                }
               
            }
             * */
            

            //对数组进行排序(冒泡排序)
            int[] ary = new int[] {8,40,10000,4,7 };
            Console.WriteLine("---------排序前:---------");
            for (int i = 0; i < ary.Length; i++) {
                Console.Write(ary[i]+"\t");
            }

            //比较的轮数(length-1轮)
            for (int i = 0; i < ary.Length-1;i++ )
            {
                //每轮要比较的次数
                for (int j = 0; j < ary.Length-1-i; j++) {
                    if (ary[j] > ary[j + 1]) { //前面大于后面的,则交换位置
                        int tmp = ary[j];
                        ary[j] = ary[j + 1];
                        ary[j + 1] = tmp;
                    }
                }
            }
            Console.WriteLine("---------排序前:---------");
            for (int i = 0; i < ary.Length; i++)
            {
                Console.Write(ary[i] + "\t");
            }
            
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Demo3
{
    /*结果使用HashTable保存:key为姓氏 value该姓氏的人数
     1.遍历集合
     2.获取每个人的姓氏
     3.判断HashTable是否存在指定的姓氏
          a.不存在: 该姓氏第一次出现,在hashTable添加该姓氏的信息,值为1
          b.存在:从HashTable获取之前的姓氏人数,该人数再加一,更新HashTable中对应姓氏的人数
     4.输出结果
     */
    class Program
    {
        static void Main(string[] args)
        {
            Hashtable result = new Hashtable();//用于保存结果

            ArrayList list = new ArrayList();
            list.Add("zhang san");
            list.Add("zhao xiao long");
            list.Add("li xiao long");
            list.Add("zhao san");
            list.Add("zhang xiao long");
            list.Add("zhang xiao qiong");
            list.Add("li xiao long");
            list.Add("zhang da qiong");
            list.Add("zhao san");
            list.Add("li xiao long");
            list.Add("wang wu");


             //1.遍历集合
            for (int i = 0; i < list.Count; i++) {
                //  2.获取每个人的姓氏
                string xing = list[i].ToString().Split(' ')[0];
                // 3.判断HashTable是否存在指定的姓氏                                  
                if (result.ContainsKey(xing))
                {
                    //存在
                    int count = Convert.ToInt32(result[xing]) + 1;
                    //更新结果
                    result[xing] = count;
                }
                else { 
                    //不存在
                    result.Add(xing,1);
                }
            }

            IDictionaryEnumerator ide=result.GetEnumerator();
            while (ide.MoveNext()) {
                 Console.WriteLine(ide.Key+"\t"+ide.Value);
            }
        }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值