黑马程序员 自学10C#编程基础之结构和数组

来源:互联网 发布:2017青少年吸毒数据 编辑:程序博客网 时间:2024/05/18 03:47
 ------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------


结构

2014/3/31

解决两个问题:

1.      变量名重复定义;

2.      不会混淆这些变量。

为什么要使用结构:

1.      比如存储一个人的信息,要声明一组变量。当我们要存储n个人的信息时,就要声明n组变量。

2.      存储一个人信息的这几个变量间没有关系(eg:name= ;sex= ;)容易记乱。

 

语法:

(在namespace下写)

访问修饰符 struct 结构名

{

 定义结构成员

}

 

步骤一:

eg:public(访问权限最高,目前暂用这个)struct(新的数据类型名)Person(定义一个名称叫Person的结构)

{

(结构类型)  (数据类型)

 public string name;

       (自枚)

 public Gender sex;

 public int age;

}  //↑这三个为结构成员

 

 

定义了一个结构类型类似定义一个变量(int a ;)(在类下面和Main方法下写)

步骤二:

Person onePerson;

↑新的数据类型名(无论是枚举还是结构,都是一种新的数据类型名)

 

 

定义好一个结构后,就可以直接声明相应的变量了,声明好变量后,

通过:变量名.成员来访问结构的成员。

访问结构成员:(相当于三个类型中又包含三个小变量)

步骤三:onePerson.name=”zhangsan”;

                onePerson.age=20;

                onePerson.sex=Gender.;→枚举类型

再声明一个,就可以直接来输入要填入的值(不同人的age,name,sex)

Person secPerson;

secPerson.name=”lisi”;

secPerson.age=26;

secPerson.sex=Gender.男;

 

这样就定义了一套可以存储这个人三个信息的变量,不用再每个人定义不同的变量了,然后每个人的名字不会对错别人的年龄了。

 

号外:

在计算机中最小的单位叫做“位”bit 比特(b) (0 1 两个bit)

最小的处理单位:八个二进制位一组(0-11111111)=255(28-1)

八个二进制位叫做字节。Byte(B)

210=1024.

B→计算机处理的最小单位

KB=1024B 210进制

1M=1024KB 1G=1024M 1T=1024GB

1M个字节 1Gb=128MB!=1GB

bps网络带宽 即b/s (每秒通过的比特数)速度单位

255→FF(16进制)

 

数组

数组:可以帮我们一次声明多个同类型的变量,这些变量在内存中是连续存储的(C#不涉及指针)

 

语法:(数组声明)

(最基本)

数据类型 [] 数组名 = new 数据类型 [数组长度];

数组长度:就是声明多少个变量(1~N)

eg:

int[] score = new int [5];

声明了一个程度为五的数组,数组叫score

(其实就是声明一个数组,里面包含了5个int类型的变量。数组名叫:scroe,里面的五个int类型的变量叫做:数组的元素)

 

如何访问数组:

通过下标(索引器)来访问数组。

比如:我们要向第0个元素赋一个3:

数组名[编号]

eg:Score[0]=3;

 

int[] score = new int[5];

score[0]=10;

score[4]=20;

socre[5]=50;//0~4=[5]

Console.WriteLine(score[0]);10

Console.WriteLine(score[3]);0

Console.ReadKey();

 

Int类型数组一旦声明,里面的每一个元素初始化成0


通过“数组名.Length”可以获得数组的长度(数组内的元素个数[0]~[7]number.Length=8

eg:

int[]score=new int[数组长度];

//循环输入int类型数字,直到达到数组长度。

for(int i=0;i<score.Length;i++)

{

 //对数组中每一个元素进行赋值:

  Score[i]=Convert.ToInt32(Console.ReadLine());

 //sum=sum+score[i];

}

Or

通过一个循环,求一个数组中所有元素的和

For(int i=0; i<score.Length;i++)

{

 Sum+=score[i];

}

 

输出数组中每一个元素的值:

For(int i=0;i<score.Length;i++)

{

 Console.WriteLine(score[i]);

}

 

 

 

Console.Clear();→指令为清屏

 

其他声明方法

Int[]score={5,3,8}; (声明并赋值)

不建议: int[]score=new int[3]{5,3,8};//数组长度(元素个数)和声明必须一致

Int[]score=new int[]{5,3,8};

 

 

 

词汇小结:

Digital:数字

Row(s):行

Column:列,柱

Continue:继续

Enum:枚举

Parse:解析

Person:人

Struct:结构

Public:公共

Length:长度

 

练习:

练习一:
    public struct MyColor//定义一个结构,用来统一变量类型从而在这个类型内定义变量名称。    {                    //而定义一个枚举类型是为了限定变量的值,也有间接限制变量名称的作用。         public int red;        public int green;        public int blue;    }static void Main(string[] args)        {            MyColor oneColor;//red            oneColor.red = 255;            oneColor.green = 0;            oneColor.blue = 0;            MyColor secondColor;//green            secondColor.red = 0;            secondColor.green = 255;            secondColor.blue = 0;            MyColor thirdColor;//blue            thirdColor.red = 0;            thirdColor.green = 0;            thirdColor.blue = 255;

练习二:
 public struct Person            {                public string name;                public sex sex ;                public int age;            }    public enum sex    {        男, 女    } static void Main(string[] args)        {//定义一个结构类型person,三个成员,name,sex,age        sex zs;        zs = sex.男;        sex 小兰;        小兰 = sex.女;                Person firstPerson;        firstPerson.name="zhangsan";        firstPerson.sex =  sex.男;        firstPerson.age = 18;        Console.WriteLine("我叫{0},性别{1},今年{2}岁",firstPerson.name,firstPerson.sex,firstPerson.age);        Person secondPerson;        secondPerson.name = "小兰";        secondPerson.sex = sex.女;        secondPerson.age = 16;        Console.WriteLine("我叫{0},性别{1},今年{2}岁", secondPerson.name, secondPerson.sex, secondPerson.age);        Console.ReadKey();        }

练习三:
            int n = 0;            int[] number = { 3, 5, 10, 80, 70 };            for (int i = 0; i < 5; i++)            {                if (n < number[i])                    n = number[i];            }            Console.WriteLine(n);            Console.ReadKey();            int[] number = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };            int sum = 0;            for (int i = 0; i < number.Length; i++)//由此可见number.Length=int[10]!=number[i=9]            {                sum += number[i];            }            Console.WriteLine(sum);            Console.ReadKey();

练习四:
            int[] number = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };            int sum = 0;            for (int i = 0; i < number.Length; i++)//由此可见number.Length=int[10]!=number[i=9]            {                sum += number[i];            }            Console.WriteLine(sum);            Console.ReadKey();            string[] name = new string[9];            name[0] = "王菲";            name[1] = "林忆莲";            name[2] = "苏打绿";            name[3] = "张亚东";            name[4] = "张悬";            name[5] = "朱哲琴";            name[6] = "窦唯";            name[7] = "Queen";            name[8] = "0";            Console.Write("我喜欢的歌手有:");            for (int i = 0; i < name.Length; i++)            {                if (i < name.Length - 1)                    Console.Write(name[i] + "|");                else                    Console.Write(name[i]);            }            Console.ReadKey();            int[] number = { -2, -1, 0, 0, 1, 2, 3 };            for (int i = 0; i < number.Length; i++)            {                if (number[i] < 0)                    Console.WriteLine(number[i] - 1);                else if (number[i] == 0)                    Console.WriteLine(number[i]);                else                    Console.WriteLine(number[i] + 1);            }            Console.ReadKey();

练习五:(数组元素翻转显示)
            string[] symbol = { "3", "a", "8", "haha", "fk" };            //这个写法实际上是倒写。            //for (int i = 1; i <=symbol.Length; i++)            //{             //    Console.Write(symbol[symbol.Length-i]);            //}            //for (int i = 0; i < symbol.Length; i++)            //{            //    string temp = symbol[i];            //    symbol[i] = symbol[symbol.Length - 1 - i];            //    symbol[symbol.Length - 1 - i] = temp;            //    if (i < symbol.Length / 2)//|| i == symbol.Length/2)犯过的错!            //        Console.Write(symbol[i]);            //    else//如果存在要交换的字符位数=总位数的一半情况,那么这个中间字符最好算在交换后的输出范围内。这样做可以避免数组长度变更带来输出错误。            //        Console.Write(symbol[symbol.Length - 1 - i]);//symbol[temp]            //}            //或者这样写:这个版本其实就是拆开循环分交换和输入两部分,实际上是合在一起循环运行的。            for (int i = 0; i < symbol.Length / 2; i++)            {                string temp = symbol[i];                symbol[i] = symbol[symbol.Length - 1 - i];                symbol[symbol.Length - 1 - i] = temp;            }            for (int i = 0; i < symbol.Length; i++)            {                Console.Write(symbol[i]);            }            Console.ReadKey();

练习六:
            int[] number = new int[10];            int sum = 0, temp = 0;            for (int i = 0; i < 10; i++)            {                Console.WriteLine("输入要计算的十个数");                Console.Write("数字{0}:", i + 1);                try                {                    number[i] = Convert.ToInt32(Console.ReadLine());                    sum += number[i];                    if (temp < number[i])                        temp = number[i];                }                catch                {                    Console.WriteLine("请输入正确的数字");                    i--;                }            }            Console.WriteLine("平均数为{0},最大数为{1},和为{2}", sum / number.Length, temp, sum);            Console.ReadKey();



 ------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
0 0
原创粉丝点击