C#基础之复杂数据类型练习

1.枚举与int、string之间的转换

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

namespace _01test
{
    public enum QQState
    {
        OnLine=1,
        OffLine,
        Leave,
        Busy,
        QMe
    }

    public enum Gender
    {
        男,
        女
    }
    class Program
    {
        static void Main(string[] args)
        {
            #region 将枚举类型强转成int类型
            //QQState state = QQState.OnLine;
            枚举类型默认可以跟int类型互相转换  枚举类型跟int类型是兼容的
            //int n = (int)state;
            //Console.WriteLine(n);
            //Console.WriteLine((int)QQState.OffLine);
            //Console.WriteLine((int)QQState.Leave);
            //Console.WriteLine((int)QQState.Busy);
            //Console.WriteLine((int)QQState.QMe);
            //Console.ReadKey();
            #endregion
            #region 将int类型强转为枚举类型

            //int n1 = 3;

            //QQState state = (QQState)n1;
            //Console.WriteLine(state);
            //Console.ReadKey();
            #endregion
            #region 将枚举类型转换成字符串类型
            //所有的类型都能够转换成string类型
            // int n1 = 10;
             double n1 = 3.14;
            // decimal n1 = 5000m;
            // string s = n1.ToString();
            // Console.WriteLine(s);
            // Console.ReadKey();

            //QQState state = QQState.OnLine;
            //string s = state.ToString();
            //Console.WriteLine(s);
            //Console.ReadKey();
            #endregion
            #region 将字符串类型转换为枚举类型
            //string s = "ABCDEFG";
            将s转换成枚举类型
            Convert.ToInt32()  int.parse()  int.TryParse()
            调用Parse()方法的目的就是为了让它帮助我们将一个字符串转换成对应的枚举类型
            
            //QQState state = (QQState)Enum.Parse(typeof(QQState), s);
            //Console.WriteLine(state);
            //Console.ReadKey();
            #endregion



            //枚举练习
            //提示用户选择一个在线状态,我们接受,并将用户的输入转换成枚举类型。
            //再次打印到控制台中

            Console.WriteLine("请选择您的qq在线状态 1--OnLine 2--OffLine 3--Leave 4--Busy 5--QMe");
            string input = Console.ReadLine();
            switch (input)
            {
                case "1": QQState s1 = (QQState)Enum.Parse(typeof(QQState), input);
                    Console.WriteLine("您选择的在线状态是{0}",s1);
                    break;
                case "2": QQState s2 = (QQState)Enum.Parse(typeof(QQState), input);
                     Console.WriteLine("您选择的在线状态是{0}",s2);
                    break;
                case "3": QQState s3 = (QQState)Enum.Parse(typeof(QQState), input);
                     Console.WriteLine("您选择的在线状态是{0}",s3);
                    break;
                case "4": QQState s4 = (QQState)Enum.Parse(typeof(QQState), input);
                    Console.WriteLine("您选择的在线状态是{0}", s4);
                    break;
                case "5": QQState s5 = (QQState)Enum.Parse(typeof(QQState), input);
                    Console.WriteLine("您选择的在线状态是{0}", s5);
                    break;
            }
            Console.ReadKey();
        }
    }
}

2.结构练习

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

namespace _02test
{

    public struct MyColor
    {
        public int _red;
        public int _green;
        public int _blue;
    }


    public enum Gender
    { 
        男,
        女
    }


    public struct Person
    {
        public string _name;
        public int _age;
        public Gender _gender;
    }




    class Program
    {
        static void Main(string[] args)
        {
            //1 定义一个结构叫MyColor,有三个成员,分别定义为int类型的red,green,blue
             //声明一个 MyColor类型的变量,并对其成员赋值.使MyColor可以表示成一个红色.
            //MyColor mc;
            //mc._red = 255;
            //mc._blue = 0;
            //mc._green = 0;


            //2 定义一个结构类型Person,有三个成员,分别为姓名,性别,年龄 性别用枚举类型
            //声明两个Person类型的变量,分别表示 张三 男  18岁/ 小兰 女 16岁


            Person zsPerson;
            zsPerson._name = "张三";
            zsPerson._gender = Gender.男;
            zsPerson._age = 18;


            Person xlPerson;
            xlPerson._name = "小兰";
            xlPerson._gender = Gender.女;
            xlPerson._age = 16;

            
            Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生",zsPerson._name,zsPerson._age,zsPerson._gender);
            Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生",xlPerson._name,xlPerson._age,xlPerson._gender);
            Console.ReadKey();

        }
    }
}

3.数组练习

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

namespace _03test
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 练习1
            练习1:从一个整数数组中取出最大的整数,最小整数,总和,平均值
            声明一个int类型的数组 并且随意的赋初值
            //int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            声明两个变量用来存储最大值和最小值
            //int max = int.MinValue;//nums[3];
            //int min = int.MaxValue;//nums[0];
            //int sum = 0;
            循环的让数组中的每个元素跟我的最大值、最小值进行比较

            //for (int i = 0; i < nums.Length; i++)
            //{
            //    //关于在循环中nums[i]的理解方式
            //    //1、代表数组中当前循环到的元素
            //    //2、代表数组中的每个元素
            //    //如果数组中当前循环到的这个元素 比我的max还要大,则把当前这个元素赋值给我的max
            //    if (nums[i] > max)
            //    {
            //        max = nums[i];
            //    }

            //    if (nums[i] < min)
            //    {
            //        min = nums[i];
            //    }
            //    sum += nums[i];
            //}
            //Console.WriteLine("这个数组的最大值是{0},最小值是{1},总和是{2},平均值是{3}", max, min, sum, sum / nums.Length);
            //Console.ReadKey(); 
            #endregion

            #region 练习2
            //练习2:将一个整数数组的每一个元素进行如下的处理:
            //如果元素是正数则将这个位置的元素的值加1,
            //如果元素是负数则将这个位置的元素的值减1,如果元素是0,则不变。

            //int[] nums = { 1, -2, 3, -4, 5, 6, 0 };
            解题思路:通过一个循环,获得数组中的每一个元素。
            对每一个元素进行判断
            //for (int i = 0; i < nums.Length; i++)
            //{
            //    if (nums[i] > 0)
            //    {
            //        nums[i] += 1;
            //    }
            //    else if (nums[i] < 0)
            //    {
            //        nums[i] -= 1;
            //    }
            //    else
            //    {
            //        //nums[i] = 0;
            //    }
            //}

            //for (int i = 0; i < nums.Length; i++)
            //{
            //    Console.WriteLine(nums[i]);
            //}
            //Console.ReadKey();

            #endregion



            //练习3:将一个字符串数组的元素的顺序进行反转。{“我”,“是”,”好人”} {“好人”,”是”,”我”}。第i个和第length-i-1个进行交换。
            string[] names = { "a", "b", "c", "d", "e", "f", "g" };
            for (int i = 0; i < names.Length / 2; i++)
            {
                string temp = names[i];
                names[i] = names[names.Length - 1 - i];
                names[names.Length - 1 - i] = temp;
            }

            for (int i = 0; i < names.Length; i++)
            {
                Console.WriteLine(names[i]);
            }
            Console.ReadKey();


            //{"好人","是","我"};
        }
    }
}

4.冒泡排序

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

namespace _09sort
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] nums = { 1, 4, 3, 9, 6, 8, 11 };
            //只能针对数组做一个升序的排列
            //Array.Sort(nums);

            //对数组进行反转
            Array.Reverse(nums);

            //for (int i = 0; i < nums.Length - 1; i++)
            //{
            //    for (int j = 0; j < nums.Length - 1-i ; j++)
            //    {
            //        if (nums[j] > nums[j + 1])
            //        {
            //            int temp = nums[j];
            //            nums[j] = nums[j + 1];
            //            nums[j + 1] = temp;
            //        }
            //    }
            //}


            for (int i = 0; i < nums.Length; i++)
            {
                Console.WriteLine(nums[i]);
            }
            Console.ReadKey();



        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挑战不可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值