C#数据类型和三大结构

学习目的:不做前端,只写服务器端接口和操作数据库。
学编程不是看书,不是听老师讲,而是自己动手敲代码!
程序中每行代码都是有用的,要知道每行代码的作用。
程序中不允许出现大量重复的代码,否则为代码冗余按照模块来学习
.Net是一种平台技术。写注释是程序员的好习惯。
学习一种编程语言其实就是在学习一种语法规则。
学习技术没有速成的,需要慢慢积累的技术。慢慢来,自己还年轻。
你学的和工作中使用的是不一样的,一定要接受这种落差。
调试功能、文件读写功能、服务器端文件上传下载框架,如何把应用程序发布到服务器上
关键是对业务逻辑的理解,怎样用代码实现这段业务逻辑
多想,多看,多练,多余人交流。如此,提升那是相当的快的。其实有一个很重要的问题是,如果你碰到了贵人相助,那一定会事半功倍。
学习重在循序渐进,刚开始时遇到很多困难那是必须地啊,但是遇到的问题越多,那么你的成长速度也就越快,因为这些问题就是自己成长的肥料
——————————————————————————— —————————————————————————————————————>
学习路线图:

——————————————————————————— —————————————————————————————————————>
和java的区别:
string的定义,方法名首字母大写,比较字符串相等直接使用==,bool类型   
———————————————————— ——————— ———————————————————— ————— ————————————>
常用的快捷键,特别好用
Ctrl+Shift+N:新建项目(会弹出新建项目面板s)

Ctrl+Alt+L:打开解决方案管理器面板
Ctrl+L:删除一行代码
Ctrl+X:剪贴一行代码
Ctrl+K,Ctrl+D:主要用于格式化代码
Ctrl+K,Ctrl+C:注释代码
Ctrl+S: 保存当前打开的文件
Ctrl+Shift+S:保存所有文件
Ctrl+C,Ctrl+V:向下复制一行,没有直接实现的快捷键,不用移动光标直接复制
可以自动生成try-catch{}代码块,按下tab键就好了。
Ctrl+. 这是vs中的辅助键(万能键)
条件判断结构if--else可以通过tab键快速自动生成
for 循环结构能够自动生成 tab键
———————————————————— ————— ———————————————————— ————— —— ————————————>
常用的类名以及关键字的作用:
Console 控制台操作类 WriteLine("") 表示向控制台写入字符串后换行 ReadKey() 获取用户按下的下一个字符或功能键,按下的键显示在控制台窗口中。
当程序执行到ReadKey()的时候,程序就会停到这里,等待用户从键盘上输入一个键,用户键入这个键之后,程序才继续执行。
Console.Write() 表示向控制台直接写入字符串,不进行换行,可继续接着前面的字符写入。(主要是换行与不换行的区别)
Console.ReadLine() 当应用程序执行到这句话,就会暂停,然后等待用户输入一句话,按下回车程序将继续执行。ReadLine()方法是有返回值的,可以定义变量接收用户的输入。凡是用户输入的内容,全部当做字符串处理。定义变量接收用户的输入
Convert类 将一个基本数据类型转化为另一基本数据类型,方法是以to开头 toInt32("待转换的字符串")将字符串转化成int类型;
const
bool、break、continue、enum、struct关键字用于定义结构体
Console.Clear() 清屏命令 上面的输出结果不打印到控制台
int.parse()方法,把数字类型的字符串解析成int类型
———————————————————— ——————— ———————————————————— ————— ————————————>
C#与.net两个概念的区别:
1)C#(sharp):是一种编程语言,可以开发基于.net平台的应用.
2).net/dotnet:一般指.Net Framework框架,它是一种平台,一种技术.。
3)Java即是一种技术又是一种编程语言.在.net平台上我们可以使用C#语言开发应用程序。

.net都能做什么?
Internet应用程序:ASP.NET(主要用于这个,开发网络应用程序,说白了就是网站,通过浏览器访问的应用程序)
桌面应用程序:Winform
手机开发:wp7

.Net开发学习路线
C#语言----->简单的WinForm----->基本的.net FrameWork----->数据库开发ADO.Net----->前端js,JQuery
----->HttpHandler方式开发ASP.Net----->Ajax。

Visual Studio 2015 简介:
一套完整的开发工具集
用于开发桌面应用程序、ASP.NET Web 应用程序、XML、Web Service、移动应用程序;为快速开发提供强大支持。
MSDN 的全称是 Microsoft Developer Network。这是微软公司面向软件开发者的一种信息服务。
MSDN 实际上是一个以 Visual Studio 和 Windows 平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载(几乎全部的操作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、Blog、BBS、MSDN WebCast、与 CMP 合作的 MSDN 杂志等等一系列服务。
一句话概括就是:vs使用的帮助文档。

Visual Studio使用介绍:
新建项目----->控制台应用程序(ASP.NET Web应用程序)----->选择.net平台的版本4.5.2----->项目名称、位置----->解决方案名称。
一个解决方案中可以包含多个项目,一个项目中可以包含多个文件(双击打开文件),而文件就是我们写的程序。
让开发工具恢复默认状态:窗口----->重置窗口的布局;工具菜单----->导入导出----->重置所有设置即可。
视图菜单----->解决方案管理器
开发环境:解决方案管理器面板:里面展示的是项目结构
菜单栏、工具栏(常用的功能)
解决方案、项目和源文件的图标不一样.
C#源文件(类)一般以cs结尾(类文件是以.cs结尾的).
C#程序的入口是Main函数,在Main中写代码就行.
using:引用命名空间----->namespace:定义一个名称为XXX的命名空间;命名空间的作用范围----->class:用来定义类的。
在文件中可以定义命名空间,在命名空间中可以定义类,类中可以包含方法。
右键单击解决方案名----->在资源管理器中打开文件----->在本地找到自己编写的demo
vs关闭了,如何打开项目----->找到解决方案文件.sln----->直接双击打开即可
设置字体及行号显示:工具菜单---->选项----->字体与颜色/文本编辑器----->所有语言----->行号
创建多个项目:添加新建项目;当解决方案管理器面板有多个项目时,运行黑体显示的项目。右键单击解决方案名----->属性----->设置启动项目。
启动项目设置
项目的加载与卸载

Main方法
Main方法是程序的入口,当计算机执行程序时,会首先找到Main方法,从Main方法的第一句程序开始执行,当Main方法执行完毕,应用程序就结束了,所以写程序一般写在Main方法里面。
一般情况下,一个程序有且仅有一个Main方法,可以没有Main方法。
程序在Main()中冲上到下一次执行。
代码:
Console.WriteLine("Hello,World!"); 主要用于在控制台输出变量的值
Console.ReadKey();
cw 然后按下tab键
语法:
1)在C#中每一行代码以;号结束;
2)C#语言是区分大小写的,自能提示;
3)运行一下生成的.exe程序.在项目文件夹下.会生成.exe程序,在bin----->debug目录下(先生成.exe文件----->再运行.exe文件)
4)你修改完代码,.exe应用程序并没有修改。
F5 先生成.exe文件,然后再运行。启动调试,如何运行应用程序?
F6 生成.exe文件;目的主要是:帮助我们检查语法错误。
停止调试:Shift+F5
点击生成的时候,解决方案管理器中的所有项目都会生成,如果只想生成某一个特定的项目,可以把其他的项目卸载掉。
右键单击项目名----->卸载----->项目名后面显示(不可用);如果想要加载项目----->重新加载项目
被卸载的项目,仍然存在磁盘上,只是点击生成时,不在对它进行语法检查,不在进行编译。就算此项目有错误,也不会影响其他的项目运行。
错误列表面板:主要显示语法错误。
解决方案管理器面板:主要显示项目目录结构。

C#中的注释符:对我们写的程序进行解释
单行注释// 工具栏是有注释按钮的 快捷键ctrl+k ctrl+c  取消单行注释ctrl+k ctrl+u
多行注释/**/
文档注释用于对类和方法进行注释,在类或者方法前面联系输入三个///就会生成文档注释

Home键:可以使光标跳转到这一行的最前面。
End键:可以使光标跳转到这一行的最后面。
Shift键:主要用于帮助选中代码块。
如果弹出了一个错误对话框,可以复制里面的内容到百度,去寻找这个错误的解决方法。
Ctrl+Z 撤销键
以后遇到异常,先把这话这句异常读一遍,看看自己能否理解这句话。因为有些错见得太多了,所以看一眼就知道。
折叠代码使用 #region,#endregion,会出现折叠代码的减号

.Net Framework框架为我们的开发提供函数库、类库。
.Net是一种多语言的平台,可以使用多种语言。
软件系统依赖关系:操作系统----->公共语言运行库CLR----->.Net Framework框类库FCL----->使用编程语言开发应用程序
使用编程语言开发应用程序----->.Net Framework框类库FCL----->公共语言运行库CLR----->操作系统(中间的两步把.Net程序翻译给操作系统,这样操作系统才能够执行)
.Net简介:平台无关,只要安装CLR都可以跑.exe程序;语言无关。.Net是如何实现语言无关性的。
MSIL:微软中间语言,计算机不用了解。

C#中的数据类型,变量的使用:
1)变量一定要先声明,后赋值,最后才能使用(把变量所代表的内存中的数据读取出来).
2)声明了变量,如果不使用,就会浪费内存空间,影响程序的性能,就会出现代码警告.
计算机使用内存来存储数据.内存的特点断电后里面的东西会消失.
变量代表着一块内存空间 ,我们可以通过变量名向内存存/读数据.有变量就不需要我们记忆复杂的内存地址.
int a=1000;声明变量的语法格式:数据类型 变量名。
计算机中有各种各样的数据类型:数值类型(int整形 double非整形)非数字类型(char String)
char用于存储字符类型,只能存储一个字符,并且这个字符要用单引号引起来;
double表示的有效位数为15位左右,而decimal表示的有效位数为28位,有效数字比较大。
decimal用于存储金钱;精确度比double高;后面必须要写m/M,用于标识这个数据是decimal类型,如果不加m,就会提示语法错误;
String字符串要求使用双引号引起来;“”空字符串
在C#开发中,直接写一个有小数点的数字,这个数字是double类型。

变量的命名规则:
1)必须以“字母”、_或@符号开头.--不能以数字开头
2)后面可以跟任意“字母”、数字、下划线.
注意:
1)你起的变量名不要与c#系统中的关键字重复.
2)在c#中,大小写是敏感的.
3)同一个变量名不允许重复定义.
定义变量时,变量名要有意义,见名知意
C# 变量命名编码规范——Camel 命名法:
1)首个单词的首字母小写,其余单词的首字母大写。
2)如果使用到英文单词的缩写,全部用大写! 
studentName zsAge name

c#中的运算符:
1)赋值运算符,赋值表达式,变量可以重复赋值,到那时一旦赋了新的值,旧的值就不存在了。
2)+可以连接字符串,这里的+号表示连接作用,不是算术运算符。
3)C#中占位符的使用,相当于填坑。以逗号分隔,占位符从0开始,用变量替换占位符,{2}代表后面的第三个变量
4)算术运算符以及算术表达式 /除取整数 %获取余数.进行算术运算全部使用小括号,程序中只有小括号.
参与运算(算术运算和赋值运算)的操作数和结果类型必须一致. 当不一致时,满足下面条件时,系统自动完成类型转换:
a:两种类型兼容 例如:int 和 double 兼容 目标类型大于源类型 例如:double > int 
b:对于表达式 如果一个操作数为double型,则整个表达式可提升为double型
()的优先级比算术运算符高。
C#开发中的转义字符:转变符号的意思,当我们需要输入一些特殊字符的时候需要使用到转义字符

常见的转移字符:\n \b \t \\ \
如何在控制台输出双引号?如何输出换行?
转义字符是一个字符,他有一个\+一个字母组成具有特殊意义的符号。表示特殊符号
数据类型的自动转换:
求10/3获取3.333的结果:*1.0即可,有一个操作数转化成double类型

强制数据类型转换:
只有数字类型才能强制转换,数据类型一定要相兼容,不能String强转为int类型。
一切女类型都可以转化成String类型 .ToString()方法的使用

C#中的异常捕获机制:
try{可能出现错误的代码块}catch{如果出现了错误就执行catch代码块中的内容}
如果try中的代码没有错误,程序正常执行。
自加自减运算符:++ --
一元运算符比二元运算符+-的优先级高。

C#中的关系运算符:
>、<、==、!=、>=、<=
bool类型 :(一定要记住这个关键字)
值只有两个true和false
关系运算符的结果是bool类型
逻辑运算符:和java中的一样 &&、!、||

三大结构:条件结构、循环结构、顺序结构
if条件结构:用一对{}组成语句块,根据判断的结果去执行程序
if-else结构
看到否则一般是选择结构。
80<num<90,程序中不能这样写,bool值和int类型不能比较
if-else判断与switch-case的使用场合区别:定值比较和范围判断;相同点是都可以是分支结构。
switch(判断条件,表达式或者变量){case 值1:{}break;default: {}break;}
定义一个循环变量,循环结构:先判断再执行。循环条件、循环体、循环变量的增减。
do{}while()循环,很少用的:先执行一遍循环体,在进行判断。
for循环语句for(表达式1;表达式2;表达式3){循环体};
一般情况下,表达式1是定义循环变量并对循环变量赋值,表达式二是循环语句,表达式三用于改变循环变量的值。
break关键字用于循环结构中,退出当前循环。
continue:结束本次循环,立即进入下一次循环。
for循环的嵌套

vs程序调试:(程序出了错误能不能再最快的时间准确定位并进行处理)
调试快捷键:
1)调试(启动):F5; 
监视面板:监视变量的变化,需要手动输入变量名。
在调试时,程序执行到这行代码 userName = Console.ReadLine(); 控制权就给用户了,用户就需要输入内容。 
设置断点(程序运行到断点处,就会被拦截,停止运行)----->单步运行----->观察变量(变量面板)
语法错误:编译会检查语法错误,双击错误列表中的错误,就可以快速定位到错误行。把错误读一遍。
逻辑错误:运行时错误,编译检查不出来,这就需要进行断点调试。错误可能出现在哪几句话。
2)调试(逐语句):F11;  逐语句,就是每次执行一行语句,如果碰到函数调用,它就会进入到函数里面。 
3)调试(逐过程):F10;  逐过程,碰到函数时,不进入函数,把函数调用当成一条语句执行。
4)设置断点:F9;在行号前面单击可以添加断点

C#中的枚举、常量、结构:
常量:不可改变的量,它的值是固定的,定义格式:const int age=1;
在定义变量的前面加一个const关键字即可,防止值意外的被修改。
枚举:让我们定义一种枚举类型并且在定义这种类型时,我们要指定这个类型的所有值
关键字是enum,枚举的定义一般和类的定义在同一级别,这样,同一个命名空间下的所有类都可以使用这个枚举了。在类中也可以定义枚举
枚举的作用:1)限制用户不能随意赋值,只能在枚举常量中进行选择;2)不需要死机每一个值是什么,只需要选择相应的值即可。
枚举类型都可以强制准换成一个int类型,枚举值是有默认编号的,编号从0开始。
把一个字符串转化成枚举类型。
定义结构体的语法:结构名大写
访问修饰符 struct 结构名
       定义结构成员
}

数组:(数组的类型)
int[] person = new int[10];  
一次性声明多个相同类型的变量,这些变量在内存中的存储是连续的。
访问数组元素:nums[0]、nums[1]。 索引从0开始取到的元素的类型就是数组元素的类型。还可以对数组元素进行赋值。
数组的常见操作:数组的声明定义, 数组的赋值与取值, 常见问题:求平均值,求最大值,求和,排序。需要对数组进行循环遍历。
//声明一个长度为10的数组,数组名为person,通俗讲就是声明了一个数组,里面包含了5个int类型的变量。
//数组名,数组元素,数组长度,索引器,数组下标。

c#中的 方法(函数)介绍 :(定义格式、参数、返回值、完成某项具体功能,访问修饰符、方法体、静态方法)
函数就是将一堆代码进行重用的一种机制。函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值。一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我们。要求的数据就叫参数,返回的执行结果就是返回值。
string s=Console.ReadLine()就是一个有返回结果的函数;
Console.WriteLine("hello")就是一个有执行参数的函数,只有告诉WriteLine被打印的数据它才知道如何打印;
int i=Convert.ToInt32("22")则是一个既有参数又有返回值的函数。
有了函数写代码就像拼积木,C#中的各种各样的技术其实就是通过for、if等这些基础的语法 将不同的函数按照一定的逻辑组织起来
方法的定义:
[访问修饰符] [static] 返回值类型 方法名()
{
方法体;
}
注意事项:
1) 命名规则: 方法名开头大写参数名开头小写参数名、变量名要有意义
2)方法的调用, 对于静态方法 ,如果在同一个类中,直接写名字调用就行了.
3)return可以立即退出方法.
4)方法一般定义在类中 .
5)如果方法没有返回值,直接写void .
6)静态方法:有static修饰的方法
常见的方法:
Console.WriteLine();
Console.Write();
Console.ReadLine();
Console.ReadKey();
Convert.ToInt32(string);

方法的调用:
1)对于由static修饰的方法,使用:类名.方法名()调用.
2)如果在类中调用自己的由static修饰的方法,可以省略类名.

变量的作用域:(局部变量,作用域)
在方法中定义的变量称为局部变量,其作用域从定义开始,到其所在的大括号结束为止.
在一个方法中想要访问另一个方法中的变量 ,怎么办? 使用 参数和返回值
一个变量一旦被定义在方法的外部,就是这个类的字段,能够被本类所有的方法所共享;但是静态方法只能访问静态字段。

为什么要有方法的重载?
一般在同一个类中,方法名相同,但是方法的参数个数不同,或者对应位置上的参数类型不同,才能构成方法的重载。
构成重载的条件:参数类型不同或者参数个数不同,与返回值无关。

out 关键字是用来传出值的
out则是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所。(需要有多个返回值)
Ref关键字:即可以用来传出值,又可以用来传入值。
在传递参数的过程中,如果参数有out或者ref修饰,那么改变方法中参数变量的值,调用者方法中变量的值也会跟着发生改变。


代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 练习1
{
    class Program
    {
        static void Main(string[] args)
        {
            //练习一:编程实现几天是几周零几天?如59天是多少周零几天
            //Console.WriteLine("请您输入要计算的天数:");
            //int day;
            //try
            //{
            //    day = Convert.ToInt32(Console.ReadLine());
            //}
            //catch
            //{
            //    day = 0;
            //}
            //int week = day / 7;
            //int yu = day % 7;
            //Console.WriteLine("是" + week + "周和" + yu + "天");
            //Console.ReadKey();

            //练习二:编程实现几天是几月几周零几天?如3330天是多少月多少周零几天,假设一个月30天
            //Console.WriteLine("请输出要计算的天数:");
            //int day;
            //try
            //{
            //    day = Convert.ToInt32(Console.ReadLine());
            //    int month = day / 30;
            //    int week = day % 30 / 7;
            //    int yu = day % 30 % 7;
            //    Console.WriteLine("是" + month+"月,是"+week + "周和" + yu + "天");
            //    Console.ReadKey();
            //}
            //catch {
            //    Console.WriteLine("对不起,您输入的天数有误");
            //}

            //练习三:编程实现107653s是几天几小时和几秒
            //int second = 107653;
            //int day=second / (24 * 60 * 60);
            //int hour= second % (24 * 60 * 60)/60/60;
            //int month = (second - hour * 3600 - day * 3600 * 24)/60;
            //int  s= (second - hour * 3600 - day * 3600 * 24) % 60;
            //Console.WriteLine("是" + day + "天,是" + hour + "小时和" + month + "分钟"+ s + "秒");
            //Console.ReadKey();

            //练习四:bool类型
            //int firstAge = 20;
            //int lastAge = 30;
            //bool isLarge = (lastAge <= firstAge);
            //Console.WriteLine(isLarge);
            //Console.ReadKey();

            //练习五:逻辑表达式与关系表达式练习题,输入成绩,判断一下说法是否正确     
            //Console.WriteLine("请输入你的语文成绩:");
            //int chinese = Convert.ToInt32(Console.ReadLine());
            //Console.WriteLine("请输入您的数学成绩:");
            //int math = Convert.ToInt32(Console.ReadLine());
            两个成绩都大于90
            //bool isLarger1 = chinese > 90 && math > 90;
            //Console.WriteLine(isLarger1);
            至少有一科成绩大于90
            //bool isLarger2 = chinese > 90 || math > 90;
            //Console.WriteLine(isLarger2);
            //Console.ReadKey();

            //练习六:盖茨买了一箱鸡蛋,如果坏鸡蛋数量少于5个,他就吃点,否则就去退货
            //Console.WriteLine("请您输入您买的鸡蛋中有几个是坏的:");
            //String input = Console.ReadLine();
            //int num = Convert.ToInt32(input);
            //if (num > 5)
            //{
            //    Console.WriteLine("我去退货!");
            //}
            //else
            //{
            //    Console.WriteLine("吃掉吧!");
            //}
            //Console.ReadKey();

            //练习七:要求用户输入两个整数,如果a能被b整除或者a+b的值大于100,就输出a的值,否则就输出b的值
            //Console.WriteLine("请输入数字a:");
            //String a = Console.ReadLine();
            //int A = Convert.ToInt32(a);
            //Console.WriteLine("请输入数字b:");
            //String b = Console.ReadLine();
            //int B = Convert.ToInt32(b);
            //if (A + B > 100 || A % B == 0)
            //{
            //    Console.WriteLine(A);
            //}
            //else
            //{
            //    Console.WriteLine(B);
            //}
            //Console.ReadKey();

            //练习八:对学员的考试成绩进行测评
            //Console.WriteLine("请输入您的成绩:");
            //String input = Console.ReadLine();
            //int num = Convert.ToInt32(input);
            //if (num > 90)
            //{
            //    Console.WriteLine("您的成绩评级为A");
            //}
            //else if (num >= 80 || num < 90)
            //{
            //    Console.WriteLine("您的成绩评级为B");
            //}
            //else if (num >= 70 || num < 80)
            //{
            //    Console.WriteLine("您的成绩评级为C");
            //}
            //else if (num >= 60 || num < 70)
            //{
            //    Console.WriteLine("您的成绩评级为D");
            //}
            //else
            //{
            //    Console.WriteLine("您的成绩评级为E");
            //}
            //Console.ReadKey();

            //练习九:提示用户输入密码,如果是8888,就提示用户输入正确,否则让用在此输入一次,密码为8888,就提示正确
            //Console.WriteLine("请您输入密码:");
            //String input = Console.ReadLine();
            //int content = Convert.ToInt32(input);
            //if (content == 8888)
            //{
            //    Console.WriteLine("登录成功!");
            //}
            //else
            //{
            //    Console.WriteLine("您刚刚输入的密码不正确,请重新输入密码:");
            //    input = Console.ReadLine();
            //    content = Convert.ToInt32(input);
            //    if (content == 8888)
            //    {
            //        Console.WriteLine("登录成功!");
            //    }
            //    else
            //    {
            //        Console.WriteLine("密码不正确!");
            //    }
            //}
            //Console.ReadKey();

            //练习十:提示用户输入用户名和密码,如果用户名是admin密码是8888,就提示用户输入正确,
            //否则用户名不是admin就提示用户名错误,如果名户名正确密码错误就提示密码错误
            //Console.WriteLine("请输入您的用户名:");
            //String userName = Console.ReadLine();
            //Console.WriteLine("请输入密码:");
            //String password = Console.ReadLine();
            //if (userName == "admin" && password == "8888")
            //{
            //    Console.WriteLine("登录成功!");
            //}
            //else if (userName != "admin")
            //{
            //    Console.WriteLine("用户名不存在!");
            //}
            //else
            //{
            //    Console.WriteLine("密码错误!");
            //}
            //Console.ReadKey();

            /*
             * 练习十一:提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于10岁,则告知不允许查看,
             * 如果大于等于10岁并且小于18,则提示用户是否继续查看(yes、no),如果输入的是yes则提示用户请查看,
             * 否则提示"退出,你放弃查看"。
            */
            Console.WriteLine("请输入您的年龄:");
            String input = Console.ReadLine();
            int age = Convert.ToInt32(input);
            if (age > 18)
            {
                Console.WriteLine("你可以继续观看");
            }
            else if (age >= 10)
            {
                Console.WriteLine("你确定要观看吗?(输入yes看,其他的退出)");
                String content = Console.ReadLine();
                if (content == "yes")
                {
                    Console.WriteLine("请继续观看!");
                }
                else
                {
                    Console.WriteLine("你放弃了观看!");
                }
            }
            else
            {
                Console.WriteLine("你的年两太小,不能观看!");
            }
            Console.ReadKey();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 练习3
{
    /// <summary>
    /// 定义了一个Gender的枚举类型,它的值只有两个:男和女。Gender类型
    /// 结构,枚举,数组
    /// </summary>
    public enum Gender
    {
        男, 女
    }

    //定义一个名叫Person的结构,结构是和类是一个级别的
    public struct Person
    {
        //定义这个结构的成员:成员变量和成员方法
        public String name;
        public int age;
        public Gender sex;

    }

    class Program
    {
        static void Main(string[] args)
        {
            //枚举类型名.枚举常量,定义了一个枚举类型,
            //Gender sex = Gender.女;
            //Console.WriteLine(sex);
            //Console.ReadKey();

            //如何来访问结构的成员?通过结构变量名.成员名来访问结构的成员
            Person p;
            p.name = "陈如水";
            p.age = 22;
            p.sex = Gender.男;

            Person p2;
            p2.name = "陈诗音";
            p2.age = 11;
            p2.sex = Gender.女;

            //数组的使用:
            int[] student = new int[10];
            //1)不能在变量声明中指明数组大小,一定要注意,变量的声明,变量的赋值。

            int[] nums = { 5, 3, 8 };
            //个数和声明数必须一致
            int[] nums1 = new int[3] { 5, 3, 2 };
            //可以省略数组中的中元素个数
            int[] nums2 = new int[] { 5, 5, 5, 5, 6, 6, 4, 5 };


            //声明一个长度为10的数组,数组名为person,通俗讲就是声明了一个数组,里面包含了5个int类型的变量。
            //数组名,数组元素,数组长度,索引器,数组下标。
            int[] person = new int[10];
            person[0] = 10;
            person[9] = 100;
            Console.WriteLine(person[0]);
            Console.WriteLine(person[9]);
            //数组有默认初始值,数组元素为int类型,初始值为0
            Console.WriteLine(person[1]);
            //打印数组长度
            Console.WriteLine(person.Length);
            Console.Clear();

            //声明String类型的数组,起始下标必须从0开始
            String[] names = { "陈如水", "陈诗音", "陈诗悦" };
            for (int i = 0; i < names.Length; i++)
            {
                Console.WriteLine(names[i]);
            }
            Console.Clear();

            //数组练习题:
            //练习1:从一个整数数组中取出最大和最小的整数
            int[] number = { 55, 55, 5, 6, 48, 52, 8, 14, 1, 8, 18, 18, 18 };
            //假设其第一个元素是最大的,一次和后面的元素进行比较
            int max = number[0];
            int min = number[0];
            int sum = 0;
            for (int i = 0; i < number.Length; i++)
            {

                //求最大值
                if (number[i] > max)
                {
                    //每哥数组元素都和最大的数字进行比较
                    max = number[i];
                }
                //求最小值
                if (number[i] < min)
                {
                    min = number[i];
                }
                //对数组进行求和
                sum += number[i];
            }
            Console.WriteLine(max);
            Console.WriteLine(min);
            Console.WriteLine(sum);
            Console.Clear();

            //练习2:将一个字符串数组输出为|分割的形式,比如“梅西|卡卡|郑大世”
            //关键是对逻辑的理解,总共分两种情况
            String[] str = { "梅西", "卡卡", "郑大世" };
            String content = "";
            for (int i = 0; i < str.Length; i++)
            {
                //最后一个元素不在进行拼接
                if (i == str.Length - 1)
                {
                    content += (str[i]);
                }
                else
                {
                    content += (str[i] + "|");
                }
            }
            Console.WriteLine(content);
            Console.ReadKey();

        }

    }
}


代码如下:
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值