内容正文:
专题三 C#语言基础(讲义)
---《算法与程序设计-C#》专题复习讲练测
[考纲要求]
1.掌握C#的基本语法;
2.掌握程序代码的书写规则;
3.掌握C#语言的数据类型;
4.了解C#语言的引用类型:
5.掌握常量和变量的表示方法;
6.掌握变量命名,变量的类型转换,变量的作用域;
7.掌握运算符:算术运算符、赋值运算符、关系运算符、逻辑运算符;各种运算符的优先级;
8. 掌握表达式组成规则及各类表达式;
[课时安排]
2课时
[知识梳理]
一:C#程序书写规则
1.语句:C#程序有一系列语句组成,一个语句就是一条指令,分号结尾;
(1)语句顺序执行;
(2)每一条语句都是区分大小写的;
(3)每条语句都以分号";"结束;
2.灵活之处
(1)一行可以有多条语句;
(2)一条语句特殊情况下可以放在多行 ; 不需要续航符,但注意关键字、变量、类等必须在一起,不能分开;
二:C#数据类型
1. 值类型
(1) 简单类型
①整数类型
类型标识符
说明
占用位数 (bit)
占用字节(byte)
取值范围
sbyte
有符号字节型
8
1
-27~27-1
byte
无符号字节型
8
1
0~28-1
short
有符号短整型
16
2
-215~215-1
ushort
无符号短整型
16
2
0~216-1
int (默认)
有符号整型
32
4
-231~231-1
uint
无符号整型
32
4
0~232-1
long
有符号长整型
64
8
-263~263-1
ulong
无符号长整型
64
8
0~264-1
②实数类型
类型标识符
说明
占用字节
使用场景
符号
float
单精度浮点数
4
精度要求不高时
F或f
double
(默认)
双精度浮点数
8
精度要求很高时
decimal
固定精度的浮点数
16
金融或货币,更加精确
M或m
类型
内存占用(byte)
描述
范围
char
2
字符类型
0-65535
bool
1
布尔类型
True/False
string
根据含有字符数量
字符串类型(引用类型)
无
③字符类型与布尔类型
(2)复杂类型
①结构类型
结构类型由若干“成员”组成,数据成员称为字段,每个字段都有自己的数据类型。声明结构类型的一般格式如下:
[public] struct 结构类型名称
{ 字段
}
②枚举类型
枚举类型也是一种自定义数据类型,它允许用符号代表数据。枚举是指程序中某个变量具有一组确定的值,通过“枚举”可以将其值一一列出来。
枚举类型使用enum关键字声明,其一般语法形式如下:
[public] enum 枚举名
{
值1,
值2,
⋮
}
2. 引用类型
(1) 类
①对象类型
object是C#中所有类型的基类,C#中的所有类型都直接或间接地从Object类中继承而来。
②字符串类型
string类型用于对字符串进行操作。
(2) 接口
(3) 委托
(4) 数组
三:类型转换
1. 隐式转换
隐式转换是系统默认的不需要加以声明就可以进行的转换。
2. 显式转换
显式转换又称为强制转换,显式转换需要用户明确地指定要转换的类型。
3. 类型转换
(1) Parse方法
(2) Convert类的方法
四:装箱和拆箱
1. 装箱:装箱转换是指将一个值类型的数据隐式地转换成一个对象类型的数据。
2. 拆箱:拆箱是指将一个引用类型的数据显式地转换成一个值类型数据。
五:常量
常量就是在程序运行过程 中,其值不会改变的量.分为以下两种形式:
1. 直接常量
2. 符号常量
常变量(也叫符号常量)的定义使用关键字const,格式如下:
const 变量类型 常量名 = 初始值
六:变量
1. 变量的定义
变量是用来存储一个数据的内存区域,里面存储的数据可以变化。也就是说变量在程序运行过程中其值可以不断改变的量。变量的命名规则:
数据类型 变量名称 = 初始值;
2. 变量的命名规则
(1)所有的标识符只能由字母、数字和下划线3类字符组成,且第一个字符必须为字母或下划线或@符号 (其中,@只能做为前缀符号)
(2)标识符中不能包含空格、标点符号、运算符等。
(3)标识符严格区分大小写。
(4)标识符不能与C#关键字名相同。(如果以@作为前缀则可以,如@const)
3.变量的使用规则
(1)变量必须先声明,再赋值,再使用;
(2)变量必须存储跟类型匹配的数据
(3)变量定义可没有初始值,使用变量必须有初始值
(4)一条语句可以定义多个变量;
(5)变量有效范围是从定义开始,一直遇到一个“}”截止,且一对{ }之间,不能重名;
4.变量的作用域
(1)成员变量:在类中定义的变量为成员变量,成员变量在整个类中都有效。
(2)局部变量:在类的方法体中定义的变量,即”{“与 ”}“之间。
七:运算符
1. 算术运算符
2. 自增与自减运算符
3. 字符串运算符
字符串运算符只有一个,就是加号(+)。它除了作为算术运算符之外,还可以将字符串连接起来,变成合并的新字符串。
4. 赋值运算符
符号
意义
示例
+=
加赋值
a+=b等价于a=a+b
-=
减赋值
a-=b等价于a=a-b
*=
乘赋值
a*=b等价于a=a*b
/=
除赋值
a/=b等价于a/b
%=
取模赋值
a%=b等价于a= a%b
<<=
左移赋值
a<<=b等价于a=a<<b
>>=
右移赋值
a>>=b等价于a=a>>b
&=
与赋值
a&=b等价于a=a&b
^=
异或赋值
a^=b等价于a=a^b
|=
或赋值
a|=b等价于a=a|b
5. 关系运算符
符 号
意义
示 例
<
小于
2<3为 true
<=
小于等于
2<=3为 true
>
大于
2>3为 false
>=
大于等于
2>=3为false
==
等于
2==3为false
!=
不等于
2!=3为 true
6. 逻辑运算符
符号
意义
示例
!
逻辑非
真变假,假变真
&&
短路与
二者都为 true则为true,出现false为false
||
短路或
二者有一个为true则为true,出现true为true
7.条件运算符
条件运算符是一个三目运算符,该运算符需要三个操作数。
使用格式如下:
表达式1? 表达式2 :表达式3
8.运算符优先级与结合性
在一个表达式中,存在多个运算符时,需要规定计算的先后顺序,即优先级。
优先级:
(1)+ - 优先级相同;
(2)*、/、%优先级相同,大于+ - ;
(3)相同优先级,从左到右;
(4)自增/自减运算符++ -- ,优先级高于四则运算;
[限时练习]
1.下列不属于 C# 值类型的是( )
A. int
B. string
C. bool
D. struct
【答案】B
【解析】string类型是引用类型。
2.关于 decimal 类型,下列说法正确的是( )
A. decimal 比 double 精度更高,适合财务计算
B. decimal 的取值范围比 double 更大
C. decimal 字面量需要使用 D 或 d 后缀
D. decimal 运算速度比 double 快
【答案】A
【解析】decimal 字面量必须使用 m 或 M 后缀,decimal 运算速度比 double 慢,因为它的精度更高,decimal 的取值范围比 double 小。
3. C#中的数据类型分为值类型和引用类型,以下( )不属于引用类型。
A.类
B. 枚举
C. 接口
D.数组
【答案】B
【解析】枚举类型是值类型。
4.下列关于++和--运算符的说法,错误的是( )
A. ++用于将变量值加 1,--用于将变量值减 1
B. 前置++和后置++的最终结果都是变量值加 1
C. ++和--只能用于变量,不能用于常量(如5++是错误的)
D. ++和--可以用于string类型变量
【答案】D
【解析】++和--不能用于string、bool等类型。
5.下列关于 C# 变量声明的说法,正确的是( )
A. 变量声明时必须立即赋值
B. 变量名可以使用关键字(如int)
C. 变量的作用域是指变量可被访问的代码范围
D. 同一作用域内可以声明多个同名变量
【答案】C
【解析】变量声明时可先不赋值(如int x;),但使用前必须赋值;变量名不能使用关键字,除非加@前缀(如@int,但不推荐);变量的作用域由声明位置决定(如方法内的变量仅在方法内可访问);同一作用域内变量名必须唯一,否则会编译错误。
6.关于前置自增(++x)和后置自增(x++),下列说法正确的是( )
A. 前置自增的执行效率比后置自增高很多
B. 前置自增先使用变量值再增加,后置自增先增加再使用
C. 无论前置还是后置,最终都会使变量值增加 1
D. 前置自增不能用于表达式中,只能单独使用
【答案】C
【解析】前置自增(++x)先增加变量值再使用,后置自增(x++)先使用变量值再增加,但两种方式最终都会使变量值增加 1
7.在 C# 中,float类型的变量可以直接赋值给double类型的变量。( )
【答案】√
【解析】这是一种隐式类型转换(拓宽转换)。float是 32 位浮点数,double是 64 位浮点数,将float赋值给double不会导致数据丢失,因此 C# 允许这种隐式转换。反之,将double赋值给float则需要显式转换。
8.赋值运算符=的优先级低于所有算术运算符和关系运算符。( )
【答案】√
【解析】赋值运算符优先级最低,因此表达式会先计算右侧的值,再赋值给左侧变量。
9.结构体(struct)是值类型,类(class)是引用类型。( )
【答案】√
【解析】struct是值类型,实例化时无需new关键字(也可使用),存储数据本身;class是引用类型,实例化需new,存储引用地址。
10.在 C# 中,5 / 2和5.0 / 2的计算结果相同。( )
【答案】×
【解析】5 / 2是整数除法,结果为 2;5.0 / 2是浮点除法,结果为 2.5
11.=和==的作用相同,都可以用于赋值。( )
【答案】×
【解析】=是赋值运算符;==是相等运算符。
12.执行代码int x = 10; x += 5;后,x的值是______,这行代码等价于______。
【答案】15;x = x + 5;
【解析】+=是复合赋值运算符,x += 5等价于x = x + 5,其他复合运算符(如-=、*=)同理,用于简化赋值操作。
13.变量按作用域可分为局部变量、______和______等,其中______在整个类中可访问。
【答案】成员变量(或 “字段”);静态变量;成员变量(或 “字段”)
【解析】局部变量:声明在方法、代码块中,仅在声明范围内有效;成员变量(字段):声明在类中,方法外,在整个类中可访问;静态变量:用static修饰的成员变量,属于类本身,而非实例。
14. 值类型在内存中存储在______中。
【答案】栈
【解析】值类型通常存储在栈中
15. 常量通过关键字______进行声明。
【答案】const
【解析】const用于定义符号常量。
[内容小结]
1. 本章节属于C#编程的语言基础,其中数据类型可以利用思维导图进行梳理总结。
2. 本章节的重点在于数据类型、常量、变量在C#中的定义及使用。
3. 本章节的难点在于对装箱和拆箱、隐式转换和显式转换的理解。
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$