C#学习笔记(六):循环嵌套、复杂数据类型和枚举

复杂数据类型

默认情况:0,1,2,3
赋值情况:0,3,4,5;//修改初始值,后面都会改变
定义在class外面,作用域更大
定义在class里面(类种类),只能在类里使用
枚举作用:方便把不同角色的属性归类,避免混淆
只有枚举项是用逗号分隔
非排他性—标志性枚举
enum(关键字) 枚举名(自定义的类型名称)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace m1w2d2_complex_datatype
{
    enum QQSta
    {
        Qme,
        Online,
        Office,
        Leave,
        Busy,
    }
    enum GameSta
    {
        MenuSta = 1,
        PlaySta = 2,
        ExitSta = 3,
    }
    enum Occupation
    {
        战士 = 1,
        道士 = 2,
        法师 = 3,
    }
    class Program
    {
        static void Main(string[] args)
        {
            #region 枚举
            //基本数据类型
            //1、定义变量,2、使用变量
            //复杂数据类型
            //1,定义类型,2、定义这个类型的变量、2、使用变量
            //枚举:一般情况我们用枚举来表示一组状态的集合
            //定义类型 一般情况下我们都放在类外面定义
            // enum 自定义枚举名
            //{
            //成员(枚举项),
            //成员(枚举项),
            //}
            //每个枚举项都可以赋整数值
            //如果没有赋值,他的值是前一枚举项的值+1
            //第一个枚举项如果不赋值,默认值0
            //赋值原因:给枚举项建立数学联系(属性相克)
            //定义这个类型的变量时,枚举的值,只能是所规定的枚举项
            //自定义枚举名 变量名 = 自定义枚举名.某一枚举项
            //定义QQ状态的枚举,Qme,Online,Office,Leave,Busy
            //提示用户选择一个在线状态,我们接受,并将用户的输入转换成枚举类型。
            //整型 int a;a是一个int型的变量,int是整型
            //enum QQSta myQQSta;myQQSta是一个QQSta型的变量,QQSta是enum
            QQSta myQQSta = QQSta.Leave;
            while (true)
            {
                Console.WriteLine("请输入用户状态:1、Qme,2、Online,3、Office,4、Leave,5、Busy");
                bool isRightInput = false;
                string input = Console.ReadLine();
                switch (input)
                {
                    case "1": myQQSta = QQSta.Qme; isRightInput = true; break;
                    case "2": myQQSta = QQSta.Online; isRightInput = true; break;
                    case "3": myQQSta = QQSta.Office; isRightInput = true; break;
                    case "4": myQQSta = QQSta.Leave; isRightInput = true; break;
                    case "5": myQQSta = QQSta.Busy; isRightInput = true; break;
                    default:
                        Console.WriteLine("操作错误,请重新输入");
                        Console.WriteLine();
                        break;
                }
                if (isRightInput) break;
            }
            Console.WriteLine("操作正确");
            Console.WriteLine("操作正确,你现在的状态是{0}", myQQSta);
            #endregion
            #region 枚举的练习
            //定义一个游戏的状态,MenuSta,PlaySta,ExitSta,
            //1、定义一个枚举类型
            //最好在类的外面
            //成员就是我们需要的状态
            //成员之间用逗号分割
            //2、定义一个变量
            GameSta myGameSta = GameSta.MenuSta;
            //状态都是排他的状态
            //标志枚举:可以做非排他状态
            //3、使用这个变量
            while (true)
            {
                Console.WriteLine("请输入游戏状态:1、MenuSta,2、PlaySta,3、ExitSta");
                bool isRightInput = false;
                string input = Console.ReadLine();
                switch (input)
                {
                    case "1": myGameSta = GameSta.MenuSta; isRightInput = true; break;
                    case "2": myGameSta = GameSta.PlaySta; isRightInput = true; break;
                    case "3": myGameSta = GameSta.ExitSta; isRightInput = true; break;
                    default:
                        Console.WriteLine("操作错误,请重新输入");
                        Console.WriteLine();
                        break;
                }
                if (isRightInput) break;
            }
            Console.WriteLine("操作正确,你现在的状态是{0}", myGameSta);
            #endregion
            #region 枚举的转换
            //枚举与整型之间的转换
            //通过强制转换符可以将枚举和整型进行转换
            //如果将一个整型 转成 枚举 而没有对应的枚举项
            GameSta myGameSta = GameSta.MenuSta;
            int a = (int)myGameSta;
            Console.WriteLine(a);
            myGameSta = (GameSta)2;
            Console.WriteLine(myGameSta);
            Console.WriteLine("请输入游戏状态:1、menusta,2、playsta,3、exitsta");
            GameSta myGameSta = (GameSta)int.Parse(Console.ReadLine());
            string strGameSta = myGameSta.ToString();
            Console.WriteLine("操作正确,你现在的状态是{0}", strGameSta);
            #endregion
            #region 枚举与字符串之间的转换
            //枚举转字符串
            //对应的变量,调用toString()方法,可以将枚举转字符串
            //将字符串转成枚举
            //我们用Parse()可以将字符串转成枚举
            //由于自定义类型中没有Parse(),所以我们需要调用Enum.Parse();
            //Enum.Parse()不会知道你是需要转换到哪个自定义的枚举类
            //我们要将自定义的枚举类型告诉他,作为他的第一个参数,使用到typeof();
            //typeof()在C#中用于取类型
            //Enum.Parse()在参数齐备的情况会将字符串转成object
            //我们用强制转换符可以把这个object转换成对应的枚举
            //如果你给定的字符串在对应的枚举项中没有,会转换错误
            Occupation gameSta = (Occupation)Enum.Parse(typeof(Occupation), "道士");
            Console.WriteLine(gameSta);
            #endregion
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace m1w2d2_exercise
{
    class Program
    {
        static void Main(string[] args)
        {
            //在控制台上输出九九乘法表
            //1 * 1 = 1 ?
            //2 * 1 = 2 ? 2 * 2 = 4 ?
            //3 * 1 = 3 ? 3 * 2 = 6 ? 3 * 3 = 9 ?
            //4 * 1 = 4 ? 4 * 2 = 8 ? 4 * 3 = 12 ? 4 * 4 = 16 ?
            //5 * 1 = 5 ? 5 * 2 = 10 ? 5 * 3 = 15 ? 5 * 4 = 20 ? 5 * 5 = 25 ?
            //6 * 1 = 6 ? 6 * 2 = 12 ? 6 * 3 = 18 ? 6 * 4 = 24 ? 6 * 5 = 30 ? 6 * 6 = 36 ?
            //7 * 1 = 7 ? 7 * 2 = 14 ? 7 * 3 = 21 ? 7 * 4 = 28 ? 7 * 5 = 35 ? 7 * 6 = 42 ? 7 * 7 = 49 ?
            //8 * 1 = 8 ? 8 * 2 = 16 ? 8 * 3 = 24 ? 8 * 4 = 32 ? 8 * 5 = 40 ? 8 * 6 = 48 ? 8 * 7 = 56 ? 8 * 8 = 64 ?
            //9 * 1 = 9 ? 9 * 2 = 18 ? 9 * 3 = 27 ? 9 * 4 = 36 ? 9 * 5 = 45 ? 9 * 6 = 54 ? 9 * 7 = 63 ? 9 * 8 = 72 ? 9 * 9 = 81
            for (int i = 1; i < 10; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write("{0} * {1} = {2} \t ", i, j, (i * j));//符号\t是制表符
                }
                Console.WriteLine();
            }
            //猜数字游戏:要求用户1输入一个数字(0<x<=100)
            //游戏规则:
            //a.用户只能猜10次,十次内每次根据用户输入的数据提示用户当前猜的值是太
            //大了还是太小了,如果在前5次用户猜中则提示用户:“你太厉害了,第_次就猜中了。”
            //b.如果用户猜中了,但是超过5次则提示用户:“不错,不错,猜对了!”
            //c.如果用户在最后一次猜中了则提示用户:“海底捞针啊,你真是太幸运了!”
            //d.如果用户超过十次都没有猜中则提示用户:“对不起,你已经猜了10次了,
            //不能再猜了。”
            Random roll = new Random();
            int numRandom;
            numRandom = roll.Next(1, 101);
            Console.Write(numRandom);
            int times = 0;
            bool isRight = false;
            Console.WriteLine("请用户1输入一个数字(0<x<=100)");
            int numInput = int.Parse(Console.ReadLine());
            for (int i = 1; i <= 10; i++)
            {
                times++;
                if (numInput == numRandom)
                {
                    isRight = true; break;
                }
                else if (numInput > numRandom)
                {
                    Console.Write("当前猜的值大了");
                    Console.WriteLine();
                    numInput = int.Parse(Console.ReadLine());
                }
                else if (numInput < numRandom)
                {
                    Console.Write("当前猜的值小了");
                    Console.WriteLine();
                    numInput = int.Parse(Console.ReadLine());
                }
            }
            if (isRight)
            {
                if (times <= 5)
                {
                    Console.Write("你太厉害了,第{0}次就猜中了。", times);
                }
                else if (5 < times && times < 10)
                {
                    Console.Write("不错,不错,猜对了!");
                }
                else if (times == 10)
                {
                    Console.Write("海底捞针啊,你真是太幸运了!");
                }
            }
            else
            {
                Console.Write("对不起,你已经猜了10次了,不能再猜了");
            }
            Random roll = new Random();
            int numRandom;
            numRandom = roll.Next(1, 101);
            Console.Write(numRandom);
            int times = 0;
            bool isRight = false;
            Console.WriteLine("请用户1输入一个数字(0<x<=100)");
            int numInput = int.Parse(Console.ReadLine());
        }
    }
}

 

posted @ 2019-02-11 16:39  vuciao  阅读(920)  评论(0编辑  收藏  举报