版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C#编程基础《C#程序设计基础入门教程(第3版)》学习目标/Target掌握C#的基本语法,能够编写出符合语法规则的C#程序。
掌握C#中变量的用法,能够根据需求完成不同类型变量的定义与操作。掌握C#中运算符的用法,能够使用不同的运算符进行各种运算。掌握选择语句的用法,能够使用选择语句实现程序的选择逻辑。学习目标/Target掌握循环语句的用法,能够使用循环语句实现程序的循环逻辑。
掌握方法的定义与重载,能够根据需求定义方法实现功能的封装。掌握数组的定义与用法,能够使用数组实现数据的批量处理。章节概述/Summary第1章讲解了.NET及C#程序开发环境搭建等知识,并演示了如何编写一个简单的程序。所谓千里之行始于足下,学好C#基本语法是掌握C#语言非常重要的一步,本章将对C#编程的基础知识进行讲解。目录/Contents010203C#的基本语法C#中的常量C#中的运算符04选择语句目录/Contents010203循环语句方法数组C#的基本语法2.1每一种编程语言都有一套自己的语法规范,C#语言也不例外,同样需要遵守一定的语法规范,如代码的书写、标识符的定义、关键字的应用等。本节将对C#的基本语法进行详细讲解。2.1C#的基本语法2.1.1C#代码的基本格式
掌握C#的基本语法,能够编写出符合语法规则的C#程序。学习目标2.1.1C#代码的基本格式
编写C#程序时,代码需要放在一个类的内部,在定义类时需要用到关键字class。语法格式[修饰符]class类名{程序代码}用于控制类的访问权限2.1.1C#代码的基本格式
1.C#程序中的代码可分为结构定义语句和功能执行语句,其中,结构定义语句用于声明类或方法,功能执行语句用于实现具体的功能。每条功能执行语句的最后都必须添加分号(;),例如。注意事项Console.WriteLine("这是第一个C#程序!");需要注意的是,上述代码末尾的分号(;)是英文格式的,如果写成中文格式的分号(;),编译器会报错。2.1.1C#代码的基本格式
2.C#是严格区分大小写的。例如,定义类时,不能将关键字class写成Class,否则编译器会报错。在程序中可同时定义computer和Computer。computer和Computer是两个完全不同的符号,在使用时务必注意。注意事项2.1.1C#代码的基本格式
3.在编写C#代码时,为了便于阅读,通常会使用缩进格式,但这不是必须的;还可以在两个单词或符号之间任意换行。例如下面这段代码的编排方式也是可以的。注意事项publicclassHelloWorld{publicstaticvoidMain(string[]args){Console.WriteLine("这是第一个C#程序!");}}2.1.1C#代码的基本格式
虽然C#没有严格要求用什么样的格式来编排程序代码,但是考虑到代码的可读性,代码应该整齐美观、层次清晰,例如下面代码的格式是规范的。注意事项publicclassHelloWorld{ publicstaticvoidMain(string[]args){ Console.WriteLine("这是第一个C#程序!"); }}2.1.2C#中的注释掌握C#的基本语法,能够描述C#中的3种注释。学习目标在编写程序时,为了使代码易于阅读,通常会在实现功能的同时为代码添加一些注释。注释是对程序中某个功能或者某行代码的解释说明,程序编译时,编译器不会编译这些注释信息。2.1.2C#中的注释C#中的注释有3种类型,具体如下。单行注释A多行注释B文档注释C2.1.2C#中的注释单行注释通常用于对程序的某一行代码进行解释,以符号“//”开头,“//”后面是注释的内容,具体示例如下。单行注释intc=102.1.2C#中的注释定义一个整型变量。多行注释中的内容可以为多行,以符号“/*”开头,以符号“*/”结尾,具体示例如下。多行注释/*intc=10;intx=5;*/2.1.2C#中的注释文档注释用于对类或方法进行说明和描述。在类或方法前面连续输入3个“/”,就会自动生成相应的文档注释,用户需要手动填写类或方法的描述信息,以完成文档注释。文档注释具体示例如下。文档注释///<summary>///在集合中添加元素///</summary>staticvoidAdd(){}2.1.2C#中的注释用于对共有类型的类、方法、属性或字段进行解释在C#中,有的注释可以嵌套使用,有的则不可以,下面列出两种具体的情况。/*intc=10;
intx=5;*/2.1.2C#中的注释注释的嵌套使用(1)多行注释“/*…*/”中可以嵌套单行注释“//”,例如:定义一个整型变量c/* /*intc=10;*/ intx=5;*/2.1.2C#中的注释注释的嵌套使用(2)多行注释“/*…*/”中不能嵌套多行注释“/*…*/”,例如:上面的代码无法通过编译,原因在于第一个“/*”会与第一个“*/”进行配对,而第二个“*/”则找不到匹配的“/*”。2.1.3C#中的关键字掌握C#的基本语法,能够描述C#中常用的关键字。学习目标2.1.3C#中的关键字abstractasbaseboolbreakbytecasecatchcharcheckedclassconstcontinuedecimaldefaultdelegatedodoubleelseenumeventexplicitexternfalsefinallyfixedfloatforforeachgotoifimplicitinintinterfaceinternalislocklongnamespacenewnullobjectoperatoroutoverrideparamsprivateprotectedpublicreadonlyrefreturnsbytesealedshortsizeofstackallocstaticstringstructswitchthisthrowtruetrytypeofuintulonguncheckedunsafeushortusingvirtualvoidvolatilewhile关键字是编程语言中事先定义好并赋予了特殊含义的单词,也称作保留字。与其他语言一样,C#中保留了许多关键字,例如class、public等。下面列举的是C#中常用的关键字:上面所列举的关键字都有其特殊的作用。2.1.4C#中的标识符掌握C#的基本语法,能够描述C#中标识符。学习目标在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如类名、方法名、参数名、变量名等,这些符号被称为标识符。标识符由大小写字母、数字、下画线(_)和“@”符号组成,但不能以数字开头,且不能是C#中的关键字。2.1.4C#中的标识符合法标识符usernameusername123user_name_userName2.1.4C#中的标识符不合法标识符123usernameclass98.3HelloWorld标识符必须严格遵守上面列出的规则,否则程序在编译时会报错。除了上面列出的规则,为了增强代码的可读性,建议初学者在定义标识符时遵循以下规范。2.1.4C#中的标识符
类名、方法名和属性名中的每个单词的首字母要大写。1
类名、方法名和属性名中的每个单词的首字母要大写。2常量名中的所有字母都大写,单词之间用下画线连接。3在程序中,应该尽量使用有意义的英文单词来定义标识符,使程序便于阅读。42.1.5C#中的常量掌握C#的基本语法,能够描述C#中常量。学习目标常量就是在程序中固定不变的值,是不能改变的数据。例如,数字1、字符'a'、浮点数3.2等。在C#中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。下面对这些常量进行详细讲解。2.1.5C#中的常量整型常量是整数类型的数据,主要有二进制、八进制、十进制和十六进制4种表示形式,每种进制的含义具体如下。2.1.5C#中的常量1.整型常量1234二进制:由数字0和1组成的数字序列。八进制:以0开头并且其后是由0~7之间(包括0和7)的整数组成的数字序列。十进制:由0~9之间(包括0和9)的整数组成的数字序列。十六进制:以0x或者0X开头并且其后是由0~9、A~F(包括0和9、A和F)组成的数字序列。需要注意的是,在程序中,不同进制的数据都有其特定的标识。八进制数必须以0开头,例如0711、0123;十六进制数必须以0x或0X开头浮点数常量就是数学中的小数,有float(单精度浮点数)和double(双精度浮点数)两种。其中,单精度浮点数以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数常量时也可以不在结尾处加任何后缀,此时系统会默认为双精度浮点数。浮点数常量还可以通过指数形式来表示。2.1.5C#中的常量2.浮点数常量示例代码2e3f3.6d0f3.84d5.022e+23f字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号('')引起来,它可以是英文字母、数字、标点符号以及由转义序列表示的特殊字符。2.1.5C#中的常量3.字符常量示例代码'a''1''&''\r''\u0000'表示一个空白字符字符串常量用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号("")引起来,一个字符串常量可以包含一个或多个字符,也可以不包含任何字符,即长度为零。2.1.5C#中的常量4.字符串常量示例代码"HelloWorld""123""Welcome\nXXX"""布尔常量即布尔型的两个值true和false,该常量用于区分一个事物的真与假。2.1.5C#中的常量5.布尔常量null常量只有一个值null,表示对象的引用为空。6.null常量C#中的常量2.22.2.1常量的定义掌握C#中变量的用法,能够根据需求完成不同类型常量的定义。学习目标在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在内存单元中,每个内存单元都用一个标识符来标识。这些内存单元称为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。2.2.1常量的定义假设用一个变量x存储数值3,则变量x在内存中的存储方式如图。2.2.1常量的定义要想使用变量,必须先定义变量。定义格式数据类型变量名;2.2.1常量的定义上述变量定义格式中,数据类型是指表示数据类型的关键字,如int、char、float等,表示要定义哪种类型的变量。可以在定义变量时为其赋值(初始化),也可以在后续使用时再赋值。定义格式inta; charch='a'; 2.2.1常量的定义变量的定义。定义一个int类型的变量a,未赋值定义一个char类型的变量ch,变量值为字符'a'定义变量intx=0,y;y=x+3;
2.2.1常量的定义下面通过具体的代码来学习变量的定义。定义了两个变量x和y为变量赋值2.2.1常量的定义在执行第二行代码时,程序首先取出变量x的值,与3相加后,将结果赋给变量y,此时变量x和y在内存中的状态发生了变化,如图。变量x和y在内存中的状态变量x和y在内存中的状态变化2.2.2变量的数据类型掌握C#中变量的用法,能够根据需求完成不同类型变量的定义。学习目标2.2.2变量的数据类型C#是一门强类型的编程语言,它对变量的数据类型有严格的限定。在定义变量时必须声明变量的类型,在为变量赋值时必须赋予和变量同一类型的值,否则程序会报错。在C#中,变量的数据类型可分为两大类,即值类型和引用类型。这两大类包含很多数据类型,如图。2.2.2变量的数据类型下面对数据类型的数值型、字符型和布尔型变量进行详细讲解。值类型中的其他数据类型以及引用类型比较复杂。2.2.2变量的数据类型整数类型变量用来存储整数数值,即没有小数部分的值。在C#中,为了给不同取值范围的整数合理地分配存储空间,整数类型分为4种:字节型(byte)、短整型(short)、整型(int)和长整型(long)。4种整数类型所占存储空间的大小和取值范围如表。2.2.2变量的数据类型类型名占用空间取值范围byte8位(1字节)-27~27-1short16位(2字节)-215~215-1int32位(4字节)-231~231-1long64位(8字节)-263~263-11.整数类型变量在为long类型的变量赋值时需要注意,所赋的值的后面要加上一个字母“L”(或小写字母“l”),说明变量为long类型。如果赋的值未超出int类型的取值范围,则可以省略字母“L”(或小写字母“l”)。1.整数类型变量2.2.2变量的数据类型定义格式longnum=2200000000L;longnum=198L;longnum=198;所赋的值超出了int类型的取值范围,后面必须加上字母L所赋的值未超出int类型的取值范围,后面可以加上字母L所赋的值未超出int类型的取值范围,后面可以省略字母L浮点数类型变量用来存储小数数值。在C#中,浮点数类型变量分为两种:单精度浮点数(float)、双精度浮点数(double)。double类型所表示的浮点数比float类型所表示的浮点数更精确,两种浮点数所占存储空间的大小以及取值范围如表。2.浮点数类型变量2.2.2变量的数据类型类型名占用空间取值范围float32位(4字节)1.4E-45~3.4E+38,0.0,-3.4E+38~-1.4E-45double64位(8字节)4.9E-324~1.7E+308,0.0,-1.7E+308~-4.9E-324在C#中,小数默认为double类型,因此为float类型的变量赋值时需要在所赋值的后面加上字母“F”或“f”,而为double类型的变量赋值时,可以在所赋值的后面加上字母“D”或“d”,也可以不加。2.浮点数类型变量2.2.2变量的数据类型示例代码floatf=123.4f; doubled1=100.1; doubled2=199.3d;为一个float类型的变量赋值,后面必须加上字母f为一个double类型的变量赋值,后面可以省略字母d为一个double类型的变量赋值,后面可以加上字母d字符型变量用于存储单一字符,用char表示。char类型的变量占用2字节。为char类型的变量赋值时,需要用一对英文半角格式的单引号('')把字符引起来。3.字符型变量2.2.2变量的数据类型示例代码charc='a';为一个char类型的变量赋值布尔型变量用来存储布尔值,用bool表示,该类型的变量只有两个值,即true和false。4.布尔型变量2.2.2变量的数据类型示例代码boolflag=false; flag=true; 声明一个bool类型的变量,初始值为false修改flag变量的值为true2.2.3变量的类型转换掌握C#中变量的用法,能够根据需求完成不同类型变量的类型转换。学习目标在C#程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。根据转换方式的不同,数据类型转换可分为自动类型转换和强制类型转换两种。自动类型转换强制类型转换2.2.3变量的类型转换自动类型转换也叫隐式类型转换,是指两种数据类型在转换的过程中不需要进行显式声明。要实现自动类型转换,必须同时满足两个条件:①两种数据类型彼此兼容,②目标类型的取值范围大于原类型的取值范围。1.自动类型转换示例代码byteb=3;intx=b; 把byte类型的变量b转换成int类型,无须特殊声明2.2.3变量的类型转换除了上述示例演示的情况,还有很多类型之间可以进行自动类型转换,下面列出3种可以进行自动类型转换的情况。1.自动类型转换2.2.3变量的类型转换1整数类型之间可以实现自动类型转换。2整数类型转换为float类型。3其他类型转换为double类型。强制类型转换也叫显式类型转换,是指两种数据类型之间的转换需要进行显式声明。当两种类型彼此不兼容,或者目标类型的取值范围小于原类型时,无法进行自动类型转换,这时就需要进行强制类型转换。2.2.3变量的类型转换2.强制类型转换强制类型转换。具体格式目标类型变量=(目标类型)值
2.2.3变量的类型转换2.强制类型转换在上述格式中,等号右边的值可以转换为括号中的目标类型,该值被转换为指定类型后,被赋给等号左边的变量。定义一个float类型的变量f,其值为3.2;再定义一个double类型的变量d,其值为1.6;将变量d的值赋给变量f,可以使用强制类型转换实现。具体代码floatf=3.2f;doubled=1.6;f=(float)d;Console.WriteLine(f);2.2.3变量的类型转换2.强制类型转换输出f的值为1.6在对变量进行强制类型转换时,如果将取值范围较大的数据类型强制转换为取值范围较小的数据类型,会造成数据精度的丢失。例如,定义一个int类型的变量b,其值为298;再定义一个byte类型的变量a,将变量b强制转换为byte类型,并赋值给变量a。具体代码intb=298;bytea;a=(byte)b;Console.WriteLine(a);2.2.3变量的类型转换2.强制类型转换输出a的值为42定义byte类型的变量a定义int类型的变量bint类型变量强制转换为byte类型的过程如图。2.2.3变量的类型转换2.强制类型转换在解决方案Chapter02中创建一个项目名为Program01的控制台应用程序,具体代码如例。2.2.3变量的类型转换2.强制类型转换点击查看编译程序,运行结果如图。2.2.3变量的类型转换2.强制类型转换2.2.4变量的作用域掌握C#中变量的用法,能够根据需求完成变量的作用域的操作。学习目标在前面介绍过,变量需要先定义后使用,但这并不意味着在变量定义之后的语句中一定可以使用该变量。只有在变量的作用范围内变量才可以被使用,这个作用范围称为变量的作用域。在程序中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。2.2.4变量的作用域下面通过一个代码片段来分析变量的作用域。示例代码publicstaticvoidMain(string[]args){intx=4;{inty=9;y的作用域x的作用域
…}…{
2.2.4变量的作用域下面通过一个案例进一步熟悉变量的作用域。假设我们正在开发一个应用程序,应用程序有默认的背景颜色(全局配置),同时允许用户选择他们喜欢的背景颜色(个人配置)。全局配置与个人配置就可以使用全局变量与局部变量解决。2.2.4变量的作用域在解决方案Chapter02中创建一个项目名为Program03的控制台应用程序,具体代码如例。点击查看2.2.4变量的作用域再次编译运行,程序不会再报错,运行结果如图。2.2.4变量的作用域C#中的运算符2.3在程序中经常出现一些特殊符号,如+、-、*、=、>等,这些符号用于进行各种运算,因此被称作运算符。在C#中,运算符可分为算术运算符、赋值运算符、比较运算符、逻辑运算符和位运算符。本节将对这些运算符逐一进行讲解。2.3C#的运算符2.3.1算术运算符掌握C#中运算符的用法,能够使用算术运算符进行运算。学习目标在数学运算中最常见的就是加、减、乘、除,它们被称作四则运算。C#中的算术运算符就是用来处理四则运算的符号。C#中的算术运算符及其用法如表。2.3.1算术运算符运算符运算范例结果+正号+33-负号b=4;-b;-4+加5+510-减6-42*乘3*4122.3.1算术运算符运算符运算范例结果/除5/51%取模(即算术中的求余数)7%52++自增(前)a=2;b=++a;a=3;b=3;++自增(后)a=2;b=a++;a=3;b=2;--自减(前)a=2;b=--a;a=1;b=1;--自减(后)a=2;b=a--;a=1;b=2;算术运算符看似简单,也很容易理解,但在实际使用时还有很多需要注意的问题,下面就对其中比较重要的几点进行详细讲解,具体如下。2.3.1算术运算符1.在进行自增(++)和自减(--)运算时,如果自增或自减运算符(++或--)放在操作数的前面则先进行自增或自减运算,再进行其他运算。反之,如果自增或自减运算符放在操作数的后面则先进行其他运算,再进行自增或自减运算。2.3.1算术运算符示例代码intnum1=1;intnum2=2;intres=num1+num2++;Console.WriteLine("num2="+num2);Console.WriteLine("res="+res);
num2的值为3res的值为32.在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果会是一个小数。例如,2510/1000属于整数之间相除,会忽略小数部分,得到的结果是2,而2.5/10的实际结果为0.25。2.3.1算术运算符请思考下面表达式的结果是多少3500/1000*10002.3.1算术运算符3.在进行取模(%)运算时,运算结果的正负取决于被模数(“%”左边的数)的符号,与模数(“%”右边的数)的符号无关。如(-5)%3=-2,而5%(-3)=2。2.3.1算术运算符2.3.2赋值运算符掌握C#中运算符的用法,能够使用赋值运算符进行运算。学习目标赋值运算符的作用是将常量、变量或表达式的值赋给某一个变量。C#中的赋值运算符及其用法如表。2.3.2赋值运算符运算符运算范例结果=赋值a=3;b=2;a=3;b=2;+=加等于a=3;b=2;a+=b;a=5;b=2;-=减等于a=3;b=2;a-=b;a=1;b=2;*=乘等于a=3;b=2;a*=b;a=6;b=2;/=除等于a=3;b=2;a/=b;a=1;b=2;%=模等于a=3;b=2;a%=b;a=1;b=2;在赋值过程中,运算顺序从右往左,将右边表达式的结果赋给左边的变量。在使用赋值运算符时,需要注意以下几个问题。2.3.2赋值运算符(1)在C#中可以通过一条赋值语句对多个变量进行赋值。具体格式intx,y,z;x=y=z=5;
2.3.2赋值运算符定义int类型变量x、y、z同时为x、y、z这3个变量赋值intx=y=z=5;
错误写法(2)在C#中的赋值运算符及其用法的表中,除了“=”,其他都是特殊的赋值运算符,以“+=”为例,x+=3就相当于x=x+3,首先会进行加法运算x+3,再将运算结果赋给变量x。“-=”“*=”“/=”“%=”赋值运算符都可以此类推。2.3.2赋值运算符2.3.3比较运算符掌握C#中运算符的用法,能够使用比较运算符进行运算。学习目标比较运算符用于对两个数值或变量进行比较,其结果是一个布尔值,即true或false。C#中的比较运算符及其用法如表。2.3.3比较运算符运算符运算范例结果==等于4==3false!=不等于4!=3true<小于4<3false>大于4>3true<=小于等于4<=3false>=大于等于4>=3true需要注意的是,在使用比较运算符时,不能将比较运算符“==”误写成赋值运算符“=”。2.3.4逻辑运算符掌握C#中运算符的用法,能够使用逻辑运算符进行运算。学习目标逻辑运算符用于对布尔值进行操作,其结果仍是一个布尔值。C#中的逻辑运算符及其用法如表。2.3.4逻辑运算符运算符运算范例结果&
与
true&truetruetrue&falsefalsefalse&falsefalsefalse&truefalse|或true|truetruetrue|falsetruefalse|falsefalsefalse|truetrue2.3.4逻辑运算符运算符运算范例结果^
异或
true^truefalsetrue^falsetruefalse^falsefalsefalse^truetrue!
非
!truefalse!falsetrue2.3.4逻辑运算符运算符运算范例结果&&
短路与
true&&truetruetrue&&falsefalsefalse&&falsefalsefalse&&truefalse||
短路或
true||truetruetrue||falsetruefalse||falsefalsefalse||truetrue注意细节2.3.4逻辑运算符(1)逻辑运算符可以对结果为布尔值的表达式进行运算。(2)运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。当运算符“&”和“&&”的右边为表达式时,两者在使用上有一定的区别。在使用“&”进行运算时,不论左边为true还是false,右边的表达式都会进行运算。如果使用“&&”进行运算,当左边为false时,右边的表达式不会进行运算,因此“&&”被称作短路与。下面通过一个案例来深入了解运算符“&”和“&&”的区别,在解决方案Chapter02中创建一个项目名为Program04的控制台应用程序,具体代码如例。点击查看2.3.4逻辑运算符运行代码,运行结果如图。2.3.4逻辑运算符注意细节2.3.4逻辑运算符(3)运算符“|”和“||”都表示或操作,只要运算符两边的操作数有一个的值为true,其结果就为true,当两边的值都为false时,其结果才为false。同与运算类似,“||”表示短路或,当运算符“||”左边的表达式的结果为true时,右边的表达式不会进行运算,示例代码如下。ntnum1=0;intnum2=0;boolres=num1==0||num2++>0;
注意细节2.3.4逻辑运算符(4)运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。当运算符两边的布尔值不相同时,其结果为true。2.3.5位运算符掌握C#中运算符的用法,能够使用位运算符进行运算。学习目标位运算符是对二进制数的每一位进行操作的运算符,专门针对数字0和1进行操作。C#中的位运算符及其用法如表。2.3.5位运算符运算符运算范例结果&
按位与
0&000&101&111&00|按位或0|000|111|111|012.3.5位运算符运算符运算范例结果~取反~01~10^
按位异或
0^000^111^101^012.3.5位运算符运算符运算范例结果<<左移
00000010<<20000100010010011<<201001100>>
右移01100010>>20001100011100010>>211111000下面通过一些具体示例对表C#中的位运算符及其用法描述的位运算符进行详细介绍,为了方便描述,下面的运算都是针对byte类型的数,也就是1字节大小的数,具体如下。2.3.5位运算符示例演示例如,对6与11进行按位与运算,数字6对应的二进制数为00000110,数字11对应的二进制数为00001011,具体演算过程如下所示。2.3.5位运算符1.位运算符“&”可对参与运算的两个二进制数按位进行与运算,如果两个二进制数相应位都为1,则该位的运算结果为1,否则为0。运算结果为00000010,对应十进制数为2。示例演示例如,对6与11进行按位或运算,具体演算过程如下。2.3.5位运算符2.位运算符“|”可对参与运算的两个二进制数按位进行或运算,只要二进制位上有一个值为1,该位的运行结果就为1,否则为0。运算结果为00001111,对应十进制数为15。示例演示例如,对6进行按位取反运算,具体演算过程如下。2.3.5位运算符3.位运算符“~”只针对一个操作数进行操作,如果二进制位是0,则结果为1;如果是1,则结果为0。运算结果为11111001,对应十进制数为-7。示例演示例如,对6与11按位进行异或运算,具体演算过程如下。2.3.5位运算符4.位运算符“^”可对参与运算的两个二进制数按位进行异或运算,如果二进制位相同,则值为0,否则为1。运算结果为00001101,对应十进制数为13。示例演示例如,数字11用二进制表示为00001011,将它左移一位,具体演算过程如下。2.3.5位运算符5.位运算符“<<”可将操作数所有二进制位向左移动指定位数。运算时,右边的空位补0,左边移走的部分舍去。运算结果为00010110,对应十进制数为22。示例演示例如,数字11用二进制表示为00001011,将它右移一位,具体演算过程如下。2.3.5位运算符6.位运算符“>>”可将操作数所有二进制位向右移动指定位数。运算时,左边的空位根据原数的符号位补0或者1(原来是负数就补1,是正数就补0)。运算结果为00000101,对应十进制数为5。2.3.6运算符的优先级掌握C#中运算符的用法,能够使用运算符的优先级进行运算。学习目标在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,这种顺序称作运算符的优先级。C#中运算符的优先级如表所示,数字越小优先级越高。2.3.6运算符的优先级优先级运算符1.[]()2++--~!(数据类型)3*/%4+-5<<>>>>>6<><=>=7==!=2.3.6运算符的优先级优先级运算符8&9^10|11&&12||13?:(三元运算符)14=*=/=%=+=-=<<=>>=>>>=&=^=|=根据表C#中运算符的优先级,分析下面代码的运行结果。示例代码1inta=2;intb=a+3*a;Console.WriteLine(b);
2.3.6运算符的优先级运行结果为8。由于运算符“*”的优先级高于运算符“+”,因此先运算3*a,得到的结果是6,再将6与a相加,得到的结果为8。示例代码2inta=2;intb=(a+3)*a;Console.WriteLine(b);
2.3.6运算符的优先级运行结果为10,由于运算符“()”的优先级最高,因此先运算括号内的a+3,得到的结果是5,再将5与a相乘,得到的结果为10。选择语句2.4在实际生活中经常需要做出一些判断,例如开车来到一个十字路口,这时需要对红绿灯进行判断,如果前面是红灯,就停车等候,如果是绿灯,就通行。C#中有一种特殊的语句,即选择语句,用于对一些条件做出判断,从而决定执行哪一段代码。选择语句分为if条件语句和switch条件语句。下面对选择语句进行详细讲解。2.4选择语句2.4.1if条件语句掌握选择语句的用法,能够使用if条件语句实现程序的选择逻辑。学习目标if条件语句有3种语法格式,每一种格式都有其特点,下面分别进行讲解。2.4.1if条件语句if语句是指如果满足某种条件,就进行某种处理。例如,小明妈妈跟小明说“如果你考试得了100分,星期天就带你去游乐场玩”。1.if语句2.4.1if条件语句伪代码如果小明考试得了100分 妈妈星期天带小明去游乐场
“如果”相当于C#中的关键字if,“小明考试得了100分”是判断条件,需要用()括起来,“妈妈星期天带小明去游乐场”是执行语句,需要放在{}中。修改后的伪代码如下:1.if语句2.4.1if条件语句伪代码if(小明考试得了100分){
妈妈星期天带小明去游乐场}
上面的例子说明了if语句的用法,在C#中,if语句的具体语法格式如下:1.if语句2.4.1if条件语句语法格式if(条件语句){
执行语句}
if语句流程图如图。1.if语句2.4.1if条件语句下面通过一个案例来学习if语句的具体用法,本案例要求判断某一年是否为闰年。闰年是历法中的名词,它是为了弥补因人为历法规定造成的年度天数与地球公转周期的时间差而设立的,闰年的计算方法:四年一闰,百年不闰,四百年再闰。它的含义如下所示。1.if语句2.4.1if条件语句1普通年份:世纪年份:能被4整除,但不能被100整除,该年为闰年,如2004年就是闰年。2能被400整除,该年为闰年,如2000年为闰年,1900年不是闰年。在解决方案Chapter02中创建一个项目名为Program05的控制台应用程序,具体代码如例。点击查看2.4.1if条件语句1.if语句运行代码,运行结果如图。2.4.1if条件语句1.if语句if…else语句是指如果满足某种条件,就进行某种处理,否则就进行另一种处理。例如,要判断一个正整数的奇偶,如果该数字能被2整除则是偶数,否则该数字就是奇数:2.if…else语句2.4.1if条件语句语法格式if(判断条件){
执行语句1 …}else{
执行语句2 …}
if…else语句流程图如图。2.if…else语句2.4.1if条件语句下面通过一个案例演示if…else语句的用法,在该案例中,用户需要输入正确的用户名和密码才能登录软件,我们需要验证用户输入的用户名和密码是否正确。在解决方案Chapter02中创建一个项目名为Program06的控制台应用程序,具体代码如例。2.if…else语句2.4.1if条件语句点击查看运行程序,根据提示,输入正确的用户名和密码,运行结果如图。2.4.1if条件语句2.if…else语句再次运行程序,根据提示,输入错误的用户名或密码,运行结果如图。if…elseif…else语句用于对多个条件进行判断,进行多种不同的处理。例如,对学生的考试成绩进行等级划分,如果分数大于等于80分,等级为优;如果分数小于80分大于等于70分,等级为良;如果分数小于70分大于等于60分,等级为中;否则,等级为差。2.4.1if条件语句3.if…elseif…else语句if…elseif…else语句具体语法格式如下。3.if…elseif…else语句2.4.1if条件语句语法格式if(判断条件1){
执行语句1}elseif(判断条件2){
执行语句2}...elseif(判断条件n){
执行语句n}else{
执行语句n+1}
if…elseif…else语句流程图如图。2.4.1if条件语句3.if…elseif…else语句下面通过一个案例演示if…elseif…else语句的用法,本案例要求计算BMI(BodyMassIndex,身体质量指数)以判断身体的胖瘦程度,BMI是国际上常用的衡量人体胖瘦程度以及是否健康的一个重要指标,BMI与身高和体重相关。2.4.1if条件语句语法格式BMI=体重(kg)/身高(m)/身高(m)
3.if…elseif…else语句如果知道了一个人的身高和体重,便可以按照上面的公式计算出其BMI。我国制定的BMI分类标准如表。2.4.1if条件语句3.if…elseif…else语句BMI分类<18.5体重过轻18.5≤BMI<24体重正常24≤BMI<28超重28≤BMI≤32肥胖>32重度肥胖在解决方案Chapter02中创建一个项目名为Program07的控制台应用程序,具体代码如例。2.4.1if条件语句点击查看3.if…elseif…else语句运行代码,运行结果如图。2.4.1if条件语句3.if…elseif…else语句在C#中有一种特殊的运算,即三元运算,它和if…else语句类似,语法如下:2.4.1if条件语句三元运算符判断条件?表达式1:表达式2
进行三元运算会得到一个结果,通常用于为某个变量赋值,当判断条件成立时,运算结果为表达式1的值,否则结果为表达式2的值。示例代码例如求两个数x、y中的较大者,如果用if…else语句来实现。2.4.1if条件语句三元运算符intx=0;inty=1;intmax;if(x>y){ max=x;}else{ max=y;} 运行上面的代码之后,变量max的值为1。如果用三元运算符来替换if…else语句。2.4.1if条件语句三元运算符示例代码intx=0;inty=1;intmax;max=x>y?x:y; 2.4.2switch条件语句掌握选择语句的用法,能够使用switch条件语句实现程序的选择逻辑。学习目标switch条件语句也是一种很常用的选择语句,不同于if条件语句,它只能对某个表达式的值做出判断,从而决定程序执行哪一段代码。2.4.2switch条件语句例如,在程序中使用数字1~7来表示星期一到星期天,如果想根据输入的数字来输出对应中文格式的星期几,可以通过下面的一段伪代码来描述。伪代码用于表示星期的数字 如果等于1,则输出星期一 如果等于2,则输出星期二 如果等于3,则输出星期三 如果等于4,则输出星期四 如果等于5,则输出星期五 如果等于6,则输出星期六 如果等于7,则输出星期天 如果不是1~7,则输出此数字为非法数字
2.4.2switch条件语句为此,C#提供了switch条件语句,在switch条件语句中使用关键字switch来描述一个表达式,使用关键字case来描述目标值,当表达式的值和某个目标值匹配时,会执行对应case后面的语句。上述需求的实现伪代码如下。点击查看2.4.2switch条件语句上面的伪代码描述了switch条件语句的基本语法格式,具体格式如下。点击查看2.4.2switch条件语句下面通过一个案例演示switch条件语句的用法,在解决方案Chapter02中创建一个项目名为Program08的控制台应用程序,具体代码如例。点击查看2.4.2switch条件语句运行结果如图。2.4.2switch条件语句将第4行代码替换为“intweek=8;”,再次运行程序,运行结果如图。下面编写程序来实现上面描述的情况,在解决方案Chapter02中创建一个项目名为Program09的控制台应用程序,具体代码如例。点击查看2.4.2switch条件语句运行代码,运行结果如图。2.4.2switch条件语句循环语句2.5在实际生活中经常会将同一件事情重复做很多次。例如,在做眼保健操的第二节轮刮眼眶时,会重复刮眼眶的动作;打乒乓球时,会重复挥拍的动作等。在C#中有一种用于重复执行语句的语句,被称为循环语句。循环语句分为while循环语句、do…while循环语句和for循环语句3种。下面对这3种循环语句分别进行讲解。2.5循环语句2.5.1while循环语句掌握循环语句的用法,能够使用while循环语句实现程序的循环逻辑。学习目标while循环语句和2.4节讲到的选择语句有些相似,都是根据条件判断的结果来决定是否执行大括号内的执行语句。区别在于,while循环语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。语法结构while(循环条件){
执行语句
...}
2.5.1while循环语句while循环的流程图如图。2.5.1while循环语句下面通过一个案例演示while循环语句的使用。2.5.1while循环语句案例演示有一个大家非常熟悉的关于数学家高斯的故事,在他10岁时,数学老师出了一道算术题:求1+2+3+…+100的值。刚学算术的学生们都觉得题目比较难,在一个数一个数地进行加法运算,但没1分钟,一个学生就公布了答案为5050,这个学生就是高斯。老师对于高斯快速计算出结果而感到吃惊,问其算法,原来高斯经过仔细观察,找到了一个规律,他发现1+100、2+99、3+98、4+97……每次相加的和都为101,100个数正好有50组101,于是他得出101×50=5050,而高斯发现的这个规律正是等差级数的对称性。
在解决方案Chapter02中创建一个项目名为Program07的控制台应用程序,具体代码如例。点击查看2.5.1while循环语句2.5.2do…while循环语句掌握循环语句的用法,能够使用do…while循环语句实现程序的循环逻辑。学习目标do…while循环语句和while循环语句功能类似,二者的不同之处在于,while循环语句需要先判断循环条件,然后根据循环条件的结果来决定是否执行大括号中的执行语句,而do…while循环语句先要执行一次大括号内的执行语句再判断循环条件。语法结构do{
执行语句
...}while(循环条件);
2.5.2do…while循环语句do…while循环的流程图如图。2.5.2do…while循环语句下面使用do…while循环语句改写Program10中的代码,改写后的代码如例。点击查看2.5.2do…while循环语句运行程序,运行结果如图。2.5.2do…while循环语句2.5.3for循环语句掌握循环语句的用法,能够使用for循环语句实现程序的循环逻辑。学习目标前面小节中分别讲解了while循环语句和do…while循环语句。在程序开发中,还经常会使用另一种循环语句——for循环语句,它通常用于循环次数已知的情况,其语法格式如下:语法结构for(初始化表达式;循环条件;操作表达式){
执行语句
...}
2.5.3for循环语句下面分别用①表示初始化表达式,②表示循环条件,③表示操作表达式,④表示循环体,通过序号来具体分析for循环的执行流程。语法结构for(①;②;③){ ④}第一步,执行①第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步第三步,执行④第四步,执行③,然后继续执行第二步第五步,退出循环
2.5.3for循环语句下面通过一个案例介绍for循环语句的用法,在解决方案Chapter02中创建一个项目名为Program12的控制台应用程序,具体代码如例。点击查看2.5.3for循环语句运行程序,运行结果如图。2.5.3for循环语句为了让初学者熟悉整个for循环的执行过程,现将例Program12\Program.cs运行期间每次循环中变量sum和i的值罗列出来,如表。2.5.3for循环语句循环次数sumi第一次11第二次32第三次63第四次104下面通过一个实际应用场景演示for循环语句的用法。我国古代数学史书《孙子算经》中,有这样一道题目。2.5.3for循环语句今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何。答曰:二十三
上述题目的含义为,有一个数,用3除余数为2,用5除余数为3,用7除余数为2,问这个数是多少。答案是23。如果通过编程解决上述问题,例如找出1000以内满足“物不知数”条件的所有数,要求解的数须同时满足以下3个条件。2.5.3for循环语句(1)对3取模,余数为2。(2)对5取模,余数为3。(3)对7取模,余数为2。
可以使用if条件语句对这3个条件进行判定。如果要查找1000以内满足条件的数,则需要循环1~1000的数,此时,可以使用for循环语句求解答案。在解决方案Chapter02中创建一个项目名为Program13的控制台应用程序,具体代码如例。点击查看2.5.3for循环语句运行程序,运行结果如图。2.5.3for循环语句2.5.4循环嵌套掌握循环语句的用法,能够使用循环嵌套实现程序的循环逻辑。学习目标有时为了解决一个较为复杂的问题,需要在一个循环中再定义一个循环,这样的方式被称作循环嵌套。例如使用“*”来输出三角形时,需要先定义一个循环语句控制输出的行数,然后定义一个循环语句用于控制每行中“*”的个数。2.5.4循环嵌套在C#中,while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,其中最常见的就是在for循环语句中嵌套for循环语句。语法结构for(初始化表达式;循环条件;操作表达式){ ... for(初始化表达式;循环条件;操作表达式){
执行语句
... } ...}
2.5.4循环嵌套下面通过输出九九乘法表演示循环嵌套的应用。九九乘法表起源于我国,是我国古人的智慧结晶,春秋战国时期的《战国策》《荀子》《管子》等书中均有“六六三十六”“三九二十七”等记载。九九乘法表如图。2.5.4循环嵌套在编程输出九九乘法表时,行列都需要循环,因此需要使用两次循环。又由于列与行有相互作用的关系,列的循环受到行的限制,因此列循环需要嵌套在行循环之内。语法结构1.设定外层循环为行,内层循环为列,则外层循环1~9,内层循环1~9,可以用for循环语句嵌套实现。2.使用变量i控制行数,则i的初始值为1,循环条件为i<=9。3.使用变量j控制列数,则j的初始值为1。由于每一行中列数小于等于行数,因此其循环条件应当为j<=i。4.为了让九九乘法表呈现三角形状,在每一次内层循环结束时换行。5.为让每列之间保持相等的距离,在内层循环的输出语句后加上\t调整列间距。
2.5.4循环嵌套在解决方案Chapter02中创建一个项目名为Program14的控制台应用程序,具体代码如例。点击查看2.5.4循环嵌套运行程序,运行结果如图。2.5.4循环嵌套2.5.5跳转语句掌握循环语句的用法,能够使用跳转语句实现程序的循环逻辑。学习目标跳转语句用于实现循环执行过程中程序流程的跳转,C#中的跳转语句有break语句、goto语句和continue语句。2.5.5跳转语句break语句goto语句Continue语句在C#中,while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,其中最常见的就是在for循环语句中嵌套for循环语句。语法结构for(初始化表达式;循环条件;操作表达式){ ... for(初始化表达式;循环条件;操作表达式){
执行语句
... } ...}
2.5.5跳转语句1.break语句2.5.5跳转语句在switch条件语句和循环语句中都可以使用break语句。当break语句出现在switch条件语句中时,其作用是终止某个case并跳出switch结构。当它出现在循环语句中时,作用是跳出当前循环语句,执行后面的代码。1.break语句2.5.5跳转语句下面通过一个猜数字的游戏演示break语句的用法。在猜数字游戏中,游戏会设定一个范围内的数字,假设本案例中要猜的数字范围为1~100,由玩家来猜,一共有5次机会。如果玩家猜中,则输出“恭喜您猜中了!”;如果玩家猜的数字比答案要小,则输出“很遗憾,您猜小了”;如果玩家猜的数字比答案要大,则输出“很遗憾,您猜大了”。在解决方案Chapter02中创建一个项目名为Program15的控制台应用程序,具体代码如例。点击查看2.5.5跳转语句1.break语句运行程序,根据提示输入数字,运行结果如图。2.5.5跳转语句1.break语句2.goto语句2.5.5跳转语句当break语句出现在嵌套循环中的内层循环时,它只能用于跳出内层循环,如果想跳出外层循环则需要对外层循环添加标记,然后使用goto语句。下面通过一个案例演示如何使用goto语句,在解决方案Chapter02中创建一个项目名为Program16的控制台应用程序,具体代码如例。点击查看2.5.5跳转语句2.goto语句运行程序,运行结果如图。2.5.5跳转语句2.goto语句3.continue语句2.5.5跳转语句在循环语句中,如果希望立即终止本次循环,并执行下一次循环,可以使用continue语句。下面通过对1~100的奇数求和的案例来演示continue语句的具体用法,在解决方案Chapter02中创建一个项目名为Program17的控制台应用程序,具体代码如例。点击查看2.5.5跳转语句3.continue语句运行程序,运行结果如图。2.5.5跳转语句3.continue语句方法2.62.6.1什么是方法掌握方法的定义与重载,能够描述方法的概念。学习目标假设有一个游戏程序,程序在运行过程中要不断地发射炮弹,而发射炮弹的动作需要编写100行代码来实现。设想一下,如果在每个实现发射炮弹功能的地方都编写这100行代码,程序势必会变得很臃肿,可读性也非常差。为了解决这种代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,这样只需在每个发射炮弹的地方通过这个名字来调用发射炮弹的代码。2.6.1什么是方法在C#语言中定义方法需要遵循一些语法规范。语法格式[修饰符]返回值类型方法名([[参数类型参数名1],[参数类型参数名2],…]){
方法体
return返回值;}
2.6.1什么是方法上述语法格式中,有几个重要组成部分,具体说明如下。2.6.1什么是方法1修饰符:返回值类型:方法的修饰符比较多,有对访问权限进行限定的。2用于描述方法返回值的数据类型,如果方法没有返回值,此处可以使用void。方法名:3方法名与变量的命名规则一样,不同的是方法名使用的是大驼峰命名法,即每一个单词的首字母都要大写。2.6.1什么是方法4参数类型:参数名:用于限定调用方法时传入参数的数据类型。6用于接收调用方法时传入的数据,方法在定义时的参数称为形参,当方法被调用时用于初始化形参的表达式或变量称为实参。关键字return:3用于结束方法以及返回方法指定类型的值。返回值:3被return语句返回的值,该值会返回给调用者。通过前面的讲解大家对方法已有了基本的了解。在解决方案Chapter02中创建一个项目名为Program18的控制台应用程序,具体代码如例。点击查看2.6.1什么是方法运行程序,运行结果如图。2.6.1什么是方法2.6.2方法的重载掌握方法的定义与重载,能够完成方法的重载。学习目标程序中有时会出现针对同一个方法需要传入不同参数的情况,例如在实现对数字进行求和的方法时,由于参与求和的数字个数和类型都不确定,因此需要设计不同的求和方法。2.6.2方法的重载下面演示一个求和的案例,通过3个方法分别实现两个整数相加、3个整数相加以及两个小数相加的功能。在解决方案Chapter02中创建一个项目名为Program20的控制台应用程序,具体代码如例。点击查看2.6.2方法的重载运行程序,运行结果如图。2.6.2方法的重载需要注意的是,方法的重载与返回值类型无关,它需要满足的条件只有两个,一是方法名相同,二是参数个数或参数类型不相同。下面采用方法重载的方式对例Program20\Program.cs中的代码进行修改,修改后的代码如例。点击查看2.6.2方法的重载运行程序,运行结果如图。2.6.2方法的重载方法重载可以让程序变得更加灵活,要想在程序中快速地判断方法重载,可以按照以下步骤进行。快速判断方法重载2.6.2方法的重载1.将方法名前面的修饰符、返回值类型以及后面的方法体去掉。2.将方法参数列表中的参数名去掉。3.比较两个方法,首先名称不相同的一定不是重载方法,其次如果名称相同,其他部分不相同则构成重载,相同则不是重载的方法。接下来通过具体的代码来演示如何使用上述方法判断方法重载。快速判断方法重载2.6.2方法的重载publicstaticintFunc(intnum){…} publicstaticboolFunc(intnum1,intnum2){…} publicstaticstringFunc(strings1,strings2){…} publicstaticstringFunc(strings2,strings1){…} 示例代码下面将方法中的方法体和方法名前面的修饰符以及返回值类型去掉。快速判断方法重载2.6.2方法的重载Func(intnum) Func(intnum1,intnum2) Func(strings1,strings2) Func(strings2,strings1) 修改后代码下面将上述方法参数列表中的参数名去掉。快速判断方法重载2.6.2方法的重载Func(int) Func(int,int) Func(string,string) Func(string,string) 修改后代码这样一来判断方法重载就非常容易了,以上不相同的方法构成重载。因此,方法3和方法4不能构成方法重载。方法重载的关键因素是方法名和参数,在C#中由方法名和参数列表(参数的类型和顺序)组成的部分称为方法的签名,判断方法是否构成重载,只需比较方法的签名部分。。数组2.7假设要实现一个员工信息管理的程序,以统计公司员工的工资情况,例如计算平均工资、最高工资等。假设某公司有50名员工,用前面所学的知识,程序首先需要声明50个变量来分别存储每位员工的工资,这样做会很麻烦。在C#中,可以使用一个数组来存储这50名员工的工资。数组是一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。数组可分为一维数组和多维数组,本节将围绕数组进行详细讲解。2.7数组2.7.1数组的定义掌握数组的定义,能够完成数组的创建。学习目标在C#中,可以使用下面的语句来定义一个数组。语法格式int[]x=newint[100];
在内存中定义了100个int类型的变量。2.7.1数组的定义为了更好地理解数组的这种定义方式,可以将上面的代码分成两句来写。示例代码int[]x; x=newint[100];声明一个int[]类型的变量创建一个长度为100的数组2.7.1数组的定义在程序运行期间可以使用变量x来引用数组,这时内存中的状态会发生变化,如图。内存状态(1)内存状态(2)2.7.1数组的定义下面通过一个案例来演示如何定义数组以及访问数组中的元素,在解决方案Chapter02中创建一个项目名为Program22的控制台应用程序,具体代码如例。点击查看2.7.1数组的定义运行程序,运行结果如图。2.7.1数组的定义根据元素类型的不同,默认的初始值也不同,具体如表数组中元素的默认初始值所示。2.7.1数组的定义数据类型默认初始值byte、short、int、long0float、double0.0char一个空字符,即'\u0000'boolfalse引用类型null,表示变量不引用任何对象面通过一个案例来演示如何为数组中的元素设置初始值。在解决方案Chapter02中创建一个项目名为Program23的控制台应用程序,具体代码如例。点击查看2.7.1数组的定义运行程序,运行结果如图。2.7.1数组的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大型企业保安队长的管理与职责及其对应招聘面试全解
- 教育行业智能设备销售顾问的面试攻略
- 环保行业技术岗位面试问题详解
- 技术支持团队如何快速响应客户需求的
- 教育科技公司产品经理岗位职责解析
- 打造职业高峰:注册会计师生存宝典
- 健康科技行业人事管理专家就业技巧与面试全攻略
- 物流公司的仓储管理职位的应聘技巧与策略
- 宠物美容专业职业前景
- 澳洲人工智能本科教育
- 大学美育 课件 绪论
- 植物纤维化学
- 物业费债权转让协议范本
- 山东第一医科大学生理学(本)期末复习题
- DZ∕T 0130.6-2006 地质矿产实验室测试质量管理规范 第6部分:水样分析(正式版)
- 患者安全风险管理
- HGT 4754-2014 钢制发酵容器技术条件
- 外研版(三起)英语六年级下册全册模块整体教案(表格式)
- 消毒供应室操作流程及规范
- 超声科科普知识宣传
- 《学校管理学》课件
评论
0/150
提交评论