黑马程序员 自学10C#编程基础之结构和数组
来源:互联网 发布:2017青少年吸毒数据 编辑:程序博客网 时间:2024/05/18 03:47
结构
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();
- 黑马程序员 自学10C#编程基础之结构和数组
- 黑马程序员 自学01C#编程基础之基本概念
- 黑马程序员 自学02C#编程基础之变量
- 黑马程序员 自学07C#编程基础之for循环
- 黑马程序员 自学08C#编程基础之循环复习
- 黑马程序员 自学12C#编程基础之方法调用
- 黑马程序员 自学13C#编程基础之返回值
- 黑马程序员 自学16C#编程基础之飞行棋
- 黑马程序员-C#编程基础之结构-学习笔记
- 黑马程序员-C#编程基础之数组-学习笔记
- 黑马程序员 自学0304C#编程基础之类型的转换与转型
- 黑马程序员 自学05C#编程基础之关系运算符与逻辑运算符
- 黑马程序员 自学06C#编程基础之循环(此文无for循环)
- 黑马程序员 自学09C#编程基础之break continue 枚举
- 黑马程序员 自学11C#编程基础之复习与冒泡排序
- 黑马程序员 自学14C#编程基础之方法重载与out
- 黑马程序员 自学15C#编程基础之ref与质数
- 黑马程序员之C#编程基础学习笔记:计算一个整数数组的所有元素的和。
- 诺基亚WP8.1曝光:重点优化拍照性能
- delete from file$ where file#=5
- 九宫格中联系人字符匹配算法简析
- 【iOS】iOS中CGLayer解释
- 看看SRI的“可穿戴机器人”:能让人跑得更快、负重更多的可穿戴技术(视频)
- 黑马程序员 自学10C#编程基础之结构和数组
- Java学习资料
- 二分搜索及其扩展(循环递增数组的搜索)
- 大势所趋 HTML5成Web开发者最关心的技术
- 向期货说不 当前能买到的八款新品手机
- 《富爸爸穷爸爸》读书笔记(二)
- Linux入门之源码编译安装配置apache---“风一样的软件安装“
- 探讨要不要使用bootstrap foundation等开源框架
- Linux网络驱动源码分析(一)