版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章C#开发入门《C#程序设计基础入门教程(第3版)》学习目标/Target了解.NET框架,能够说出.NET框架的核心组成部分以及发展历史
。
了解C#语言,能够说出C#语言的特点。掌握C#开发环境的搭建,能够独立完成VisualStudio2022的下载安装。掌握C#程序的编写,能够在VisualStudio2022中编写一个简单的C#程序。了解C#程序的运行机制,能够说出C#程序的运行过程。章节概述/Summary对编程初学者而言,学习任何一门语言都需要先认识它的运行平台。C#语言及其编译和运行都依赖于.NET平台。本章将对.NET平台、C#语言、C#开发环境搭建、C#程序的编写以及C#程序的运行机制进行讲解。目录/Contents010203.NET基础知识开发环境搭建编写C#程序04C#程序运行机制.NET基础知识1.11.1.1.NETFramework了解.NET框架,能够说出.NET框架的核心组成部分。学习目标1.1.1.NETFramework什么是.NETFramework?1.1.1.NETFramework微软公司为开发应用程序.NETFramework是一个全新的、集成的、面向对象的开发平台创建桌面应用程序Web应用程序Web服务和其他各种类型的应用程序1.1.1.NETFramework为了让大家更好地认识.NETFramework,通过一张图描述.NETFramework的体系结构,如图。1.1.1.NETFramework关于.NETFramework核心部分的介绍具体如下。1公共语言运行环境(CommonLanguageRuntime,CLR):.NETFramework基础类库(BaseClassLibrary,BCL):①位于.NETFramework的底层,主要负责管理.NET应用程序的编译、运行以及一些基础的服务。②为.NET应用程序提供了一个虚拟的运行环境。2是微软公司提出的一组标准库(如集合类),可以提供给.NETFramework支持的所有语言使用。1.1.2.NET的发展历史了解.NET框架,能够说出.NET的发展历史。学习目标.NETFramework只能运行在Windows平台,在跨平台方面受到了很大限制。随着云计算、跨平台需求的增长以及开源文化的普及,微软意识到需要一个更加灵活、高效且能够跨平台运行的新框架,由此便开发了.NETCore框架。.NETCore于2016年首次发布,它是一个全新的、支持跨平台的、开源的框架,并且兼容.NETFramework。由于.NETCore开源,接受社区开发者的贡献,因此其发展速度很快。1.1.2.NET的发展历史.NETFramework只能运行在Windows平台,在跨平台方面受到了很大限制。随着云计算、跨平台需求的增长以及开源文化的普及,微软意识到需要一个更加灵活、高效且能够跨平台运行的新框架,由此便开发了.NETCore框架。.NETCore于2016年首次发布,它是一个全新的、支持跨平台的、开源的框架,并且兼容.NETFramework。由于.NETCore开源,接受社区开发者的贡献,因此其发展速度很快。1.1.2.NET的发展历史.NETCore推出之后,微软便有了两套框架,为了简化生态系统并减少开发者的学习成本,微软决定将.NETFramework和.NETCore进行合并统一,于2020年推出了.NET5。1.1.2.NET的发展历史.NET5的推出是.NET历史上的一个重要里程碑,它不仅统一了.NETFramework和.NETCore,还进行了很多改进,并引入了许多新的特性。.NET5的设计目标是提供统一的.NET平台,支持多种应用和平台,包括桌面、Web、云原生应用、移动应用、游戏等。这意味着开发者可以使用同一套工具和API(ApplicationProgramInterface,应用程序接口)来构建跨多个平台的应用,大大提高了开发效率和应用的可移植性。1.1.2.NET的发展历史1.1.3C#语言了解C#语言,能够说出C#语言的特点。学习目标C#是微软公司在2000年6月发布的一种全新的、简单的、安全的、面向对象的程序设计语言,它专门用于开发.NET应用,从根本上保证了C#与.NET的完美结合。C#不仅吸收了C++、VisualBasic、Delphi、Java等语言的优点,而且继承了C语言的语法风格和C++的面向对象特性。1.1.3C#语言1.1.3C#语言面向对象C#的主要特点C#是由C语言和C++衍生出来的面向对象的编程语言,因此它具有面向对象的一切特性(封装、继承和多态)。C#在继承C语言和C++强大功能的同时摒弃了它们的复杂特性。语言简洁在默认情况下,C#的代码在.NET提供的“可操纵”环境下运行,使得程序不能直接访问内存地址空间,因此C#不提供对指针类型的支持,从而使C#程序更加健壮。与Web紧密结合.NET提供了一种新的应用程序开发模型,这种模型强调与Web标准的一致性和互操作性。随着互联网的发展,越来越多的应用程序需要与Web标准。开发环境搭建1.21.2开发环境搭建掌握C#开发环境的搭建,能够独立完成VisualStudio2022的下载安装。学习目标在使用C#语言开发程序之前,需要在系统中搭建开发环境,本书将使用VisualStudio作为开发环境,VisualStudio能够使C#程序开发变得更加简单。下面将对VisualStudio2022的安装过程进行讲解。1.2开发环境搭建STEP011.2开发环境搭建下载VisualStudio打开VisualStudio官网,其主页面如图。单击“下载”按钮STEP011.2开发环境搭建下载VisualStudio单击主页面顶部导航栏中的“下载”按钮,进入下载页面,如图。该版本是为学生、开源贡献者和个人而设计的该版本提供了高级特性和服务,是一款非常适合小型团队的专业IDE该版本提供了比社区版和专业版更为丰富的特性和技术支持STEP021.2开发环境搭建VisualStudio的安装双击下载好的VisualStudio2022可执行文件,打开隐私声明对话框,如图。单击“继续”按钮STEP021.2开发环境搭建VisualStudio的安装进入VisualStudioInstaller下载对话框,如图。STEP021.2开发环境搭建VisualStudio的安装窗口中有4个选项卡,分别是“工作负荷”“单个组件”“语言包”“安装位置”。用于安装开发项目相关组件用于安装单个组件用于设置VisualStudio的语言用于设置软件的安装位置STEP021.2开发环境搭建VisualStudio的安装在“工作负荷”选项卡的“桌面应用和移动应用”中选择“.NET桌面开发”,然后单击右下角的“安装”按钮,进入安装窗口,如图。STEP021.2开发环境搭建VisualStudio的安装安装完成后,弹出登录VisualStudio界面,如图。STEP021.2开发环境搭建VisualStudio的安装由于VisualStudio2022社区版是免费的,不必创建账户,因此在登录VisualStudio界面中单击“暂时跳过此项。”超链接,进入个性化VisualStudio体验界面。STEP021.2开发环境搭建VisualStudio的安装至此,VisualStudio2022安装成功。编写C#程序1.31.3编写C#程序掌握C#程序的编写,能够在VisualStudio2022中编写一个简单的C#程序。学习目标1.2节已经搭建好开发环境,下面使用VisualStudio2022编写一个简单的C#程序——HelloWorld,具体实现步骤如下。1.3编写C#程序STEP01新建项目在VisualStudio2022的初始界面中单击“创建新项目”按钮,打开创建新项目窗口,如图。1.3编写C#程序STEP01新建项目在创建新项目窗口中选中“控制台应用”模板,单击“下一步”按钮,进入配置新项目窗口,在该窗口中从上到下依次填写项目名称、位置、解决方案名称,如图。1.3编写C#程序单击“下一步”按钮STEP01新建项目单击“下一步”按钮,进入其他信息窗口,如图。1.3编写C#程序如果不选择该复选框,表明程序使用顶级语句,简化代码形式,如隐藏Main()方法是一种编译技术,它允许将托管代码在构建时就直接编译成本地机器码,而不是在运行时通过即时编译器进行编译STEP01新建项目设置完成之后单击“创建”按钮,进入VisualStudio2022的主界面,如图。1.3编写C#程序用于显示和编写代码用来展示项目文件的组成结构用于显示当前操作文件的相关信息用于显示项目中的警告、错误、程序运行时的输出信息、异常等STEP02编写程序代码项目创建完成之后会自动生成一段程序代码,具体代码如下。1.3编写C#程序namespaceHelloWorld{internalclassProgram{staticvoidMain(string[]args){Console.WriteLine("Hello,World!");//在控制台输出“Hello,World!”}
STEP03运行程序单击工具栏中的启动按钮运行程序,或者按F5键运行程序,程序的运行结果如图。1.3编写C#程序C#程序运行机制1.41.4C#程序运行机制了解C#程序的运行机制,能够说出C#程序的运行过程。学习目标使用C#进行程序开发时,不仅要了解C#的特点,还需要了解C#程序的运行机制。下面通过一张图描述C#程序在.NET中编译和运行的过程,如图。1.4C#程序运行机制C#程序的运行过程分为两个时期,分别是编译期和运行期。本章小结本章首先介绍了.NET以及C#语言,然后讲解了Windows系统平台中VisualStudio2022的安装,并演示了如何编写C#程序,最后讲解了C#程序在.NET平台的运行机制。通过学习本章的内容,读者应对.NET平台和C#语言有大概的认识,并学会使用VisualStudio2022编写简单的C#程序。本章小结第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循环嵌套下面通过输出九九乘法表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三八工会活动方案策划(3篇)
- 健身蜕变活动方案策划(3篇)
- 卖施工方案挣钱(3篇)
- 2026二年级数学上册 直角的判断
- 庙会许愿活动策划方案(3篇)
- 文具图书活动策划方案(3篇)
- 机库地坪施工方案(3篇)
- 沙田榴莲活动策划方案(3篇)
- 照明调试施工方案(3篇)
- 福州年会活动策划方案(3篇)
- 重庆市第一中学2022-2023学年高三下学期3月月考试题 化学 Word版无答案
- 商洛学院2023年毕业论文要求
- GB/T 14984.2-2010铁合金术语第2部分:取样和制样
- GB 31647-2018食品安全国家标准食品添加剂生产通用卫生规范
- 向下管理高尔夫20131115
- 《新媒体营销实务》课件项目一新媒体营销概述
- JJG 150-2005 金属布氏硬度计检定规程-(高清现行)
- 地道商务日语会话(前川智)
- 小学语文教师培训:《制定双向细目表提高命题科学性》优质课件
- 九年级下册生命生态安全教案及教学计划
- 初中语文七九年级古诗全集
评论
0/150
提交评论