結構體-枚舉類型
一、枚舉類型
枚舉(enum)是值類型的一種特殊形式,它從System.Enum繼承而來,併為基礎類型的值提供替代名稱。枚舉類型有名稱、基礎類型和一組字段。基礎類型必須是一個除char 類型外的內置的有符號(或無符號)整數類型(如Byte、Int32或UInt64)。也可以説,枚舉類型是一組常量的集合。
1、定義:Enum....{E}
枚舉元素的默認基礎類型為int。默認情況下,第一個枚舉數的值為0,後面每個枚舉數的值依次遞增1。例如:
enum meiju://枚舉是常量的集合,一般冒號後面不指定數據類型
{
one=3, //枚舉裏面有默認的索引,也可以指定;如索引3,但在控制枱中不起作用;
two=6,
three,//用逗號隔開
four=two,//如果等於之前的一個常量,那麼就等於這個常量;最後一行的逗號可省略
}
static void Main(string[] args)
{
Console.WriteLine(meiju.one);
Console.ReadLine();
2、用法:
枚舉也可以指定數據類型,一般不指定。
在定義枚舉類型時,可以選擇基類型,但可以使用的基類型僅限於long、int、short和byte。例如:
如: enum meiju:int
二、結構體
結構類型是用户自己定義的一種類型,它是由其他類型組合而成的,可包含構造函數、常數、字段、方法、屬性、索引器、運算符、事件和嵌套類型的值類型。結構在幾個重要方面不同於類:結構為值類型而不是引用類型,並且結構不支持繼承。
用結構的主要思想是用於創建小型的對象,如Point和FileInfo等等。這可以節省內存,因為沒有如類對象所需的那樣有額外的引用產生。例如,當聲明含有成千上萬個對象的數組時,這會引起極大的差異。
結構體是一個變量組,將一組變量放在一起,其實就是一個自定義的集合,裏面可以包含各種類型的數據,用法和集合一樣。
1、定義:
結構體一般定義在Main函數上面,位於Class下面,作為一個類;一般情況Struct定義在Main函數前面,Main函數裏面的地方都可以使用,參數前面加上public代表公用變量。
格式:
struct +結構體的名稱
{
public int+變量名;
public string+變量名;
public int+變量名;
}
以上就是定義一個結構體的格式,裏面包含許多種數據類型,如整形int,字符串string,帶小數點decimal等;
如果結構體定義在Main函數中,再能在Main函數中使用,一般看情況來定義在Main函數前面,Main函數裏面的所有地方都可以使用,參數前面加上public代表公用變量。
格式:
struct student
{
public int no;
public string name;
public int Csharp;
public int web;
public int database;
public int sum;
}
2、用法
1)在Main函數外面定義了一個student類型的結構體,在Main主函數中使用:
2)然後為裏面的每個元素賦值,結構體名+點+結構體裏面變量名稱=值。
3)賦值之後完成之後進行打印。
Student lch=new student();//這句是在Main函數裏定義了一個名為lch的student 類型的結構體。
{
lch.no=1;
lch.name=”李昌輝”;
lch.Cshap=88;
lch.web=90;
lch.database=98;
lch.sum=lch.Cshap+lch.web+lch.database;
}
Console.WriteLine(lch.no,lch.name,lch.Cshap,lch.web,lch.database,lch.sum );
例題:
//定義一個結構體,存放關於車輛的幾個信息 //將所有車的信息都放入集合中 //車型號 價格(W) 軸距 (mm) 油耗(L/100km) //寶馬320Li 38 2920 6.9 //寶馬520Li 43 3108 7.2 //寶馬730Li 89 3210 6.3 //奧迪A4L35TFSI 31 2869 6.2 //奧迪A6L30TFSI 43 3012 7.6 //奧迪A8L45TFSI 89 3122 8.1 //奔馳C200L 35 2920 6.1 //奔馳E260L 48 3014 6.7 //奔馳S320L 93 3165 8
//現在想買一輛價格在50萬以內的車,請給出車的型號以及價格
//買得起豪車,可是很關心油耗,給查一下油耗最低的三輛車的型號以及油耗情況
//買了車之後後座會經常坐人,所有我現在想要軸距大一些的車,前三名即可 //要列出車的型號以及車的軸距
//有錢就是任性,就買最貴的,不買最好的,直接調出來最貴的車的所有信息
//本店有哪幾款寶馬車??列出來所有信息
//本店奔馳車裏面油耗最低的是哪一個?所有信息
//本店在售車輛中軸距最長的是不是奧迪??
//本店在售車輛軸距最長的是不是油耗最高的??
//奔馳車中軸距最長的是哪一輛??
//就只喜歡寶馬,可是沒多少錢,請列出來現有車輛中最便宜的寶馬車的所有信息
struct car
{
public string xinghao;
public double jia;
public double zhou;
public double you;
}
static void Main(string[] args)
{
ArrayList al = new ArrayList();
car car1 = new car();
car1.xinghao = "寶馬320Li";
car1.jia = 38;
car1.zhou = 2920;
car1.you = 6.9;
al.Add(car1);
car1.xinghao = "寶馬520Li";
car1.jia = 43;
car1.zhou = 3108;
car1.you = 7.2;
al.Add(car1);
car1.xinghao = "寶馬730Li";
car1.jia = 89;
car1.zhou = 3210;
car1.you = 6.3;
al.Add(car1);
car1.xinghao = "奧迪A4L35TFSI";
car1.jia = 31;
car1.zhou = 2869;
car1.you = 6.2;
al.Add(car1);
car1.xinghao = "奧迪A6L30TFSI ";
car1.jia = 43;
car1.zhou = 3012;
car1.you = 7.6;
al.Add(car1);
car1.xinghao = "奧迪A8L45TFSI";
car1.jia = 89;
car1.zhou = 3122;
car1.you = 8.1;
al.Add(car1);
car1.xinghao = "奔馳C200L";
car1.jia = 35;
car1.zhou = 2920;
car1.you = 6.1;
al.Add(car1);
car1.xinghao = "奔馳E260L";
car1.jia = 48;
car1.zhou = 3014;
car1.you = 6.7;
al.Add(car1);
car1.xinghao = "奔馳S320L";
car1.jia = 93;
car1.zhou = 3165;
car1.you = 8;
al.Add(car1);
//現在想買一輛價格在50萬以內的車,請給出車的型號以及價格
Console.WriteLine("價格在50萬以內的車的型號:");
for (int i = 0; i < 9; i++)
{
car car2 = new car();
car2 = (car)al[i];
if (car2.jia <= 50)
{
Console.WriteLine("型號" + car2.xinghao + "價格" + car2.jia + "萬。");
}
}
//買得起豪車,可是很關心油耗,給查一下油耗最低的三輛車的型號以及油耗情況
Console.WriteLine();
Console.WriteLine("油耗最低的三輛車的型號以及油耗情況:");
for (int i = 0; i < 9; i++)
{
car car3 = new car();
car3 = (car)al[i];
for (int j = i; j < 9; j++)
{
car car4 = new car();
car4 = (car)al[j];
if (car3.you < car4.you)
{
object zhong = al[i];
al[i] = al[j];
al[j] = zhong;
}
}
}
car car5 = new car();
car5 = (car)al[8];
Console.WriteLine("型號:" + car5.xinghao + "油耗:" + car5.you);
car car6 = new car();
car6 = (car)al[7];
Console.WriteLine("型號:" + car6.xinghao + "油耗:" + car6.you);
car car7 = new car();
car7 = (car)al[6];
Console.WriteLine("型號:" + car7.xinghao + "油耗:" + car7.you);
//買了車之後後座會經常坐人,所有我現在想要軸距大一些的車,前三名即可,要列出車的型號以及車的軸距
Console.WriteLine();
Console.WriteLine("軸距最大的三輛車:");
for (int i = 0; i < 9; i++)
{
car car2 = new car();
car2 = (car)al[i];
for (int j = i; j < 9; j++)
{
car car3 = new car();
car3 = (car)al[j];
if (car2.zhou < car3.zhou)
{
object zhong = al[i];
al[i] = al[j];
al[j] = zhong;
}
}
}
car car8 = new car();
car8 = (car)al[0];
Console.WriteLine("型號:" + car8.xinghao + "軸距:" + car8.zhou);
car car9 = new car();
car9 = (car)al[1];
Console.WriteLine("型號:" + car9.xinghao + "軸距:" + car9.zhou);
car car10 = new car();
car10 = (car)al[2];
Console.WriteLine("型號:" + car10.xinghao + "軸距:" + car10.zhou);
//有錢就是任性,就買最貴的,不買最好的,直接調出來最貴的車的所有信息
Console.WriteLine();
for (int i = 0; i < 9; i++)
{
car car2 = new car();
car2 = (car)al[i];
for (int j = i; j < 8; j++)
{
car car3 = new car();
car3 = (car)al[j];
if (car2.jia < car3.jia)
{
object zhong = al[i];
al[i] = al[j];
al[j] = zhong;
}
}
}
car car11 = new car();
car11 = (car)al[0];
Console.WriteLine("最貴的車的型號:{0},價格:{1}, 軸距:{2},油耗:{3}。", car11.xinghao, car11.jia, car11.zhou, car11.you);
//本店有哪幾款寶馬車??列出來所有信息
Console.WriteLine();
Console.WriteLine("本店有以下幾款寶馬車系:");
for (int i = 0; i < 9; i++)
{
car car2 = new car();
car2 = (car)al[i];
if (car2.xinghao.Contains("寶馬"))
{
Console.WriteLine("型號:" + car2.xinghao + ",價格:" + car2.jia + ",軸距:" + car2.zhou + ",油耗:" + car2.you);
}
}
//本店奔馳車裏面油耗最低的是哪一個?所有信息
Console.WriteLine();
Console.WriteLine("油耗最低的奔馳車:");
ArrayList ben = new ArrayList();
for (int k = 0; k < 9; k++)
{
car car2 = new car();
car2 = (car)al[k];
if (car2.xinghao.Contains("奔馳"))
{
ben.Add(car2);
}
for (int i = 0; i <ben.Count; i++)
{
car car3 = new car();
car3 = (car)ben[i];
for (int j = i; j < ben.Count; j++)
{
car car4 = new car();
car4 = (car)ben[j];
if (car3.you > car4.you)
{
object zhong = ben[i];
ben[i] = ben[j];
ben[j] = zhong;
}
}
}
}
car car12 = new car();
car12 = (car)ben[0];
Console.WriteLine("型號:" + car12.xinghao + ",價格:" + car12.jia + ",軸距:" + car12.zhou + ",油耗:" + car12.you);
//本店在售車輛中軸距最長的是不是奧迪??
Console.WriteLine();
for (int i = 0; i < 9; i++)
{
car car2 = new car();
car2 = (car)al[i];
for (int j = i; j < 9; j++)
{
car car3 = new car();
car3 = (car)al[j];
if (car2.zhou < car3.zhou)
{
object zhong = al[i];
al[i] = al[j];
al[j] = zhong;
}
}
}
car car14=new car();
car14=(car)al[0];
if (car14.xinghao.Contains("奧迪"))
{
Console.WriteLine("本店在售車輛中軸距最長的是奧迪車系");
}
else
{
Console.WriteLine("本店在售車輛中軸距最長的不是奧迪車系");
}
//本店在售車輛軸距最長的是不是油耗最高的??
Console.WriteLine();
for (int i = 0; i < 9; i++)
{
car car2 = new car();
car2 = (car)al[i];
for (int j = i; j < 9; j++)
{
car car3 = new car();
car3 = (car)al[j];
if (car2.zhou < car3.zhou)
{
object zhong = al[i];
al[i] = al[j];
al[j] = zhong;
}
}
}
car car15 = new car();
car14 = (car)al[0];
for (int i = 0; i < 9; i++)
{
car car3 = new car();
car3 = (car)al[i];
for (int j = i; j < 9; j++)
{
car car4 = new car();
car4 = (car)al[j];
if (car3.you < car4.you)
{
object zhong = al[i];
al[i] = al[j];
al[j] = zhong;
}
}
}
car car16 = new car();
car16=(car)al[0];
if (car15.xinghao == car16.xinghao)
{
Console.WriteLine("本店在售車輛軸距最長的是油耗最高的");
}
else
{
Console.WriteLine("本店在售車輛軸距最長的不是油耗最高的");
}
//奔馳車中軸距最長的是哪一輛??
Console.WriteLine();
Console.Write("奔馳車中軸距最長的是:");
ArrayList ben1 = new ArrayList();
for (int k = 0; k < 9; k++)
{
car car2 = new car();
car2=(car)al[k];
if (car2.xinghao.Contains("奔馳"))
{
ben1.Add(car2);
}
for (int i = 0; i <ben1.Count; i++)
{
car car3 = new car();
car3 = (car)ben1[i];
for (int j = i; j < ben1.Count; j++)
{
car car4 = new car();
car4 = (car)ben1[j];
if (car3.zhou < car4.zhou)
{
object zhong = ben1[i];
ben1[i] = ben1[j];
ben1[j] = zhong;
}
}
}
}
car car17=new car();
car17=(car)ben1[0];
Console.WriteLine(" 型號:"+car17.xinghao);
//就只喜歡寶馬,可是沒多少錢,請列出來現有車輛中最便宜的寶馬車的所有信息
Console.WriteLine();
Console.Write("寶馬車系中最便宜的寶馬:");
ArrayList bao = new ArrayList();
for (int k = 0; k < 9; k++)
{
car car2 = new car();
car2=(car)al[k];
if (car2.xinghao.Contains("寶馬"))
{
bao.Add(car2);
}
for (int i = 0; i < bao.Count; i++)
{
car car3 = new car();
car3 = (car)bao[i];
for (int j = i; j < bao.Count; j++)
{
car car4 = new car();
car4 = (car)bao[j];
if (car3.jia > car4.jia)
{
object zhong=bao[i];
bao[i] = bao[j];
bao[j] = zhong;
}
}
}
}
car car18 = new car();
car18=(car)bao[0];
Console.Write("型號:"+car18.xinghao+",價格:"+car18.jia+",軸距:"+car18.zhou+",耗油:"+car18.you);
}