----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
l 常量
l 枚举
l 结构
l 数组及其元素交换
l 冒泡排序
1.常量
概念:从最初定义时赋值后就不会再改变,定值。
基本语法:
const 数据类型常量名=值 ;
定义常量是为了防止之后的程序中被不小心赋值,而且也方便了以后常量的更新。
2.枚举
理解:确定数量,确定值的一个空间。
枚举可以自己定义,在定义时,需要制定枚举类型(枚举名称)和其内包含的值。
基本语法:
enum 自定枚举名称 {值1,值2,值3......自定义值的集合};
枚举的使用范围取决它定义的级别,定义在类级别就可以在同一个命名空间下所有类中使用,定义在类中,就能在该类中所有方法下使用。一般枚举定义到与类同一个级别中。
枚举的作用:
1)限制用户和程序员在特定条件下只能用定义的枚举中的枚举数赋值。
2)编程时,不需要输入具体的枚举数,只需要输入枚举名称即可选择,如下:
Gender为定义的枚举名称,输入后按.可选择枚举中的值。
枚举定义的条件及特点:
1)定义枚举时,其枚举数不能为int等数值类型。
2)默认情况下,枚举中的每个枚举数都被排列标号,所以说所有的枚举数都可以强制转换成int等数值类数据类型。
字符串类型转换成自定义枚举类型的基本语法:
(自定枚举)(Enum.Parse(typeof(自定枚举),”待转换字符串”));
(自定枚举)(Enum.Parse(typeof(自定枚举),“待转换字符串”));
注意字母大小写不能改变(Enum是类,enum是关键字)
例子:
enumGender //自定义枚举,Gender既是枚举名称,又是枚举类型
{
男,女
}
classProgram
{
staticvoid Main(string[] args)
{
Gender sex;
do
{
Console.WriteLine("请输入您的姓名");
string name =Console.ReadLine();
Console.WriteLine("请输入您的性别");
string input =Console.ReadLine();
try //因为自定枚举的值都确定,所以try catch更显重要
{
sex = (Gender)(Enum.Parse(typeof(Gender), input)); //将输入转换成自定枚举类型
if (sex ==Gender.男) //不加限定条件,输入数字也会通过
{Console.WriteLine("{0}先生您好!", name); break; }
elseif (sex ==Gender.女)
{Console.WriteLine("{0}女士您好!", name); break; }
else
{Console.WriteLine("您的输入有误,请重新输入"); }
}
catch
{
Console.WriteLine("您的输入有误,请重新输入");
}
}
while (true);
Console.ReadKey();
}
}
3.结构
基本语法: 访问修饰符 struct 结构名
{
定义结构成员
}
访问修饰符可加可不加,只要保证其内定义的结构成员可以被访问到即可。
结构的作用和特点:
1)定义一组变量,之后在声明的过程中可通过调取该结构中变量加以修饰组成不容易发生混乱的变量。变量名.成员名 声明该结构类型的变量后,可通过此语法调出结构中的变量。(若是成员由static修饰,通过结构名.成员名调用)
2)结构和枚举区别之一就是枚举中的成员是特定的值,而结构中的成员是变量(可以是不同数据类型,而枚举中的值不能是数值类型)或者方法/构造方法。
例如:
enumGender
{
男,女
}
structPerson //当此处定义访问级别为public级别时,上边自枚也得设定为public级别
{
publicstring name;
public Gender sex;
publicint age;
}
classProgram
{
staticvoid Main(string[] args)
{
Person firperson;
firperson.name ="张三";
firperson.sex =Gender.男;
firperson.age = 18;
Person secperspn;
secperspn.name ="小兰";
secperspn.sex =Gender.女;
secperspn.age = 16;
Console.WriteLine("{0}\n{1}\n{2}岁",firperson.name,firperson.sex,firperson.age);
}
}
通过自定义结构,避免了每次都要声明多个变量的麻烦,虽然我感觉这么写更麻烦:,(ˇˍˇ)想~
4.数组
一次声明多个同类型变量,这些变量在内存中是连续存储的,并且默认依次标号0,1,2,3....
1))基本语法:
数据类型 [] 数组名=new数据类型[数组长度];
简写:
数据类型 [] 数组名={变量1,变量2...}
数组长度就是要声明的变量的个数。
例如:int[] score = newint[5]; //声明了一个叫score的数组,其中包含5个int类型的变量,这些变量又叫做数组元素。
2))通过下标(索引)来访问数组:数组名[编号]
例如: int[] score =new int[5];
score[0]=1; //访问数组中编号为0的变量并对其赋值1
score[1] = 2;
Console.WriteLine(score[0]);
也可以直接对其赋值:int [] score = newint []{1,2,3}; 简写:int [] score = {1,2,3}; //[]中为变量个数,可以不写但提取的时候,必须对照好其默认编号:
Console.WriteLine(score[0]); //输出的是1
Console.WriteLine(score.Length); //输出的是数组长度/变量个数3
Console.WriteLine(score[2]); //输出的是3
Int等数值类型的数组在声明时初始化每个变量的值为0.
3))数组名.length 可以获得数组名长度
例如:
double [] score =new double [5];
score[0]=1;
score[1] = 2;
Console.WriteLine(score[0]);
Console.WriteLine(score.Length); //输出后可知道其数组长度/变量个数为5
4))对数组元素做出不同改变后,保留原值.
int[] number = { -14, -45, 1243, 2355, 0, -45, 445, 0 };
for (int i = 0; i < number.Length; i++)
{
int[] number1 =newint[number.Length];
number1[i] = number[i]; //再次定义一个数组让其一次赋值
if (number[i] > 0)
{
number[i]++;
}
elseif (number[i] < 0)
{
number[i]--;
}
else
{
}
Console.WriteLine("第{0}个数的原值为{1},新值为{2}", i + 1,number1[i], number[i]);
}
4.数组中N个元素进行交换:
1)交换N/2次(取整数)。
2)在一个数组中,第i个元素与第length-i-1个元素交换。如下:
string[] number = {"1","2","3","4","5"};
string c;
for (int i = 0; i<number.Length/2; i++)
{
c = number[i];
number[i] = number[number.Length - i-1];
number[number.Length - i-1] = c;
}
for (int i = 0; i < number.Length; i++)
{
Console.Write(number[i]);
}
6.冒泡排序
让数组中的元素比较(第i个和i+1个比较),经过多次两两比较,数组中的数按预期规律排序。
从大到小比较排序,用<; 从小到大比较排序,用>。
n个数进行比较,需要比较n-1趟,第t趟比较n-t次。
例如:
从大到小排序:
int[] number = {23,34,12,34,24,545,0,-123,56,76,89,346,908 };
for (int i = 0; i < number.Length - 1; i++)
{
for (int j = 0; j < number.Length - 1 - i; j++) // number.Length-1-i为单趟中比较次数
{
if (number[j] < number[j + 1]) //如果是从小到大,则此处条件为 { //number[j]>number[j+1]
int c = number[j]; //交换赋值
number[j] = number[j + 1];
number[j + 1] = c;
}
}
}
Console.WriteLine("从大到小排序大小为:");
for (int i=0;i<number.Length;i++)
{
Console.Write("{0} ",number[i]);
}
Console.ReadKey();
---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------