结构体和枚举

Posted 斐雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体和枚举相关的知识,希望对你有一定的参考价值。

结构体:
在内存中临时存储数据的方式
1、变量、常量
2、数组,可以存储固定长度统一类型的数据
3、集合
4、结构体

结构体含义:就是将生活中的一些个体,封装成一个特殊的类型

结构体是:用户自定义数据类型

创建:
创建的位置:main函数之外
struct Student
{
  public int Code;
  public string Name;
  public string Sex;
  public int Old;
  public DateTime Birthday;
}

定义:声明
Student s = new Student(); //实例化

赋值:
s.Code = 1;
s.Name = "张三";
s.Sex = "男";
s.Old = 18;
s.Birthday = Convert.ToDateTime("1999-1-1");

取值:
s.Code //放在等号左边就是给它赋值,放在右边就是使用它的值

枚举

枚举的作用:统一,规范化的开发,个人用处不大,一般是团队开发时常用。

枚举也是一种用户自定义类型;

创建赋值: enum
public enum Sex
{
  男,
  女
}

取值:
Sex.值

练习

请输入学生个数:n
请输入第1个学生的姓名:
请输入第1个学生的性别:
请输入第1个学生的年龄:
请输入第1个学生的成绩:
...
n
****************************
学生的总成绩为:xxx,平均分为:xxx。
****************************
年龄排名(由大到小):
姓名:xxx,性别:xxx,年龄:xxx,成绩:xxx。
...
n
****************************
成绩排名(由高到低):
姓名:xxx,性别:xxx,年龄:xxx,成绩:xxx。
...
n

            //输入学生个数
            Console.Write("请输入学生的个数:");
            int a = Convert.ToInt32(Console.ReadLine());
            ArrayList arr = new ArrayList();
            decimal end = 0;
            //输入学生姓名,性别,年龄,成绩。并判断是否正确
            for (int i = 0; i < a; i++)
            {
                student s = new student();
                Console.Write("请输入" + (i + 1) + "个学生的名字:");
                s.name  = Console.ReadLine();
                while (true)
                {
                    if (s.name ==""||s.name==" ")
                    {
                        Console.Write("姓名输入错误!请重新输入:");
                        s.name = Console.ReadLine();
                    }
                    else
                    {
                        break;
                    }
                }
                Console.Write("请输入" + (i + 1) + "个学生的性别:");
                s.sex = Console.ReadLine();
                while(true)
                {
                    if (s.sex == "" || s.sex == "")
                    {
                        break;
                    }
                    else
                    {
                        Console.WriteLine("性别输入错误!请重新输入:");
                        s.sex = Console.ReadLine();
                    }
                }
                Console.Write("请输入" + (i + 1) + "个学生的年龄:");
                while (true)
                {
                    try
                    { 
                        s.old = Convert.ToInt32(Console.ReadLine());
                        break;
                    }
                    catch
                    {
                        Console.Write("输入的不是数字,请重新输入:");
                    }
                }
                Console.Write("请输入" + (i + 1) + "个学生的成绩:");
                while (true)
                {
                    try
                    {
                        s.result = Convert.ToDecimal(Console.ReadLine());
                        break;
                    }
                    catch
                    {
                        Console.Write("输入的不是数字,请重新输入:");
                    }
                }
                arr.Add(s);
                end += s.result;
            }
            Console.WriteLine("*********************************************************");
            //打印总分和平均分
            Console.WriteLine("总分是:" + end + ",平均分是:" + end / a + "");
            Console.WriteLine("*********************************************************");
            //打印分别按照年龄和成绩从大到小的排序
            for (int i = 0; i < a; i++)
            {
                for (int j = i + 1; j < a; j++)
                {
                    student s=(student)arr[i];
                    student ss =(student)arr[j];
                    if (s.old < ss.old)
                    {
                        object zhong = arr[i];
                        arr[i] = arr[j];
                        arr[j] = zhong;
                    }
                }
            }
            foreach (student c in arr)
            {
                Console.WriteLine("姓名:"+c.name+",性别:"+c.sex+",年龄:"+c.old+",成绩:"+c.result+"");
            }
            Console.WriteLine("*********************************************************");
            for (int i = 0; i < a; i++)
            {
                for (int j = i + 1; j < a; j++)
                {
                    student s = (student)arr[i];
                    student ss = (student)arr[j];
                    if (s.result < ss.result)
                    {
                        object zhong = arr[i];
                        arr[i] = arr[j];
                        arr[j] = zhong;
                    }
                }
            }
            foreach (student c in arr)
            {
                Console.WriteLine("姓名:" + c.name + ",性别:" + c.sex + ",年龄:" + c.old + ",成绩:" + c.result + "");
            }
                Console.ReadLine();    

运算结果

 

以上是关于结构体和枚举的主要内容,如果未能解决你的问题,请参考以下文章

C#语言基础——结构体和枚举类型

结构体共用体和枚举类型

Swift中结构体和类的区别

《程序设计基础(B)II》实验1--结构体共用体和枚举

《程序设计基础(B)II》实验1--结构体共用体和枚举

Swift 结构体和类的区别