基础语法复习#
对应笔记:C# 基础、C# 数据类型、变量、运算符与流程控制、Math 数学运算 建议用时:40 分钟。先做题,再对照答案订正。
一、选择题#
1. 下列哪种类型是引用类型?
- A.
int - B.
double - C.
string - D.
bool
答案
C. string。值类型:int、double、bool、char 等;引用类型:string、数组、类。
2. 定义变量 float a = 1.2f; 中的 f 后缀有什么作用?
- A. 表示浮点数
- B. 将
1.2指定为float类型 - C. 没有作用,可省略
- D. 表示变量是 final
答案
B。不加 f 的字面量 1.2 默认是 double,赋值给 float 会编译错误。decimal 用 m 后缀。
3. 下列哪个运算符是"短路与"?
- A.
& - B.
&& - C.
| - D.
!
答案
B. &&。短路与:左边为 false 时右边不执行。& 是非短路与,两边都执行。
4. int a = 10; int b = a++; 执行后 a 和 b 的值分别是?
- A. a=10, b=10
- B. a=11, b=10
- C. a=11, b=11
- D. a=10, b=11
答案
B。a++ 是后置自增:先赋值再自增,所以 b=10,a=11。前置 ++a 则先自增再赋值。
5. 字符串 "123" 转 int,下列哪个方法不会抛异常?
- A.
int.Parse("123") - B.
Convert.ToInt32("123") - C.
int.TryParse("123", out int n) - D. 以上都会
答案
C。TryParse 转换失败时返回 false 而不抛异常,是安全转换的首选。Parse 和 Convert 转换失败会抛 FormatException。
6. Math.Floor(5.9) 的返回值是?
- A. 5
- B. 6
- C. 5.9
- D. 5.0
答案
A 和 D 均可视为 5。Floor 向下取整得到 5(double 类型)。Ceiling(5.9) 为 6,Round(5.5) 为 6。
二、填空题#
1. C# 程序的入口方法是 ==_== ==== ==_== ====,它必须有 ==_== ==== ==_== ==== 和 ==_== ==== ==_== ==== 修饰符。
答案
Main;static、void(返回类型)。完整签名:static void Main(string[] args)。
2. 标识符的命名规则:必须以 ==_== ==== ==_== ==== 或 ==_== ==== ==_== ==== 开头,不能以数字开头,且 ==_== ==== ==_== ==== 大小写。
答案
字母;下划线(_);区分(C# 区分大小写)。
3. decimal 类型的后缀是 ==_== ==== ==_== ====,适合 ==_== ==== ==_== ==== 计算。
答案
m;涉及金钱的(精度 28 位)。
4. 逻辑运算符中,`|` 是 ==_== ==== ==_== ==== 或,`||` 是 ==_== ==== ==_== ==== 或。
答案
非短路;短路(左边为 true 时右边不执行)。
5. 输出 218教室有60人 的三种方式:==_== ==== ==_== ====、==_== ==== ==_== ====、==_== ==== ==_== ====。
答案
+ 拼接:"218教室有" + num + "人";占位符:"218教室有{0}人", num;插值:$"218教室有{num}人"。
三、简答题#
1. 值类型和引用类型的区别是什么?存储位置有什么不同?
答案
- 值类型存储值本身,通常在栈(stack)上:int、double、bool、char、struct
- 引用类型存储地址(引用),数据在堆(heap)上,栈中保存地址:string、数组、类
- 值类型复制传值,引用类型复制传地址(两者共享同一份数据)
2. 什么是隐式转换?什么是强制转换?各自有什么注意事项?
答案
- 隐式转换:范围小→范围大自动转换,无需关键字(如 int→long→double)
- 强制转换:范围大→范围小需显式
(类型)转换,可能丢失精度(如(int)3.9得 3) - 整数除法:
2/4得 0(截断),(double)2/4得 0.5
3. && 与 & 的短路区别体现在哪里?
答案
&& 左边为 false 时右边不执行(短路),& 两边都执行。例如 num1 > num2 && num1++ == 3 中,若左边为 false,num1++ 不会执行。|| 与 | 同理。
四、编程题#
1. 输入两个整数,交换它们的值(不借助第三个变量),并输出交换结果。
答案
2. 输入圆的半径,计算面积和周长(用 Math 类)。
答案
3. 输入一个三位数,输出它的个位、十位、百位。
答案
4. 用三目运算符判断输入的年龄是否成年,输出"成年"或"未成年"。
答案
知识卡片#
什么是强类型语言?
每个变量必须声明明确类型,编译器在编译阶段做类型检查,减少运行时错误。C# 是强类型语言。
decimal 与 double 的区别?
decimal 精度约 28 位,适合金钱计算(后缀 m);double 精度约 15 位,是默认浮点类型。
隐式转换的方向是什么?
浮点类型 > 整数类型 > 字符类型;有符号:sbyte < short < int < long < float < double。
++a 与 a++ 的区别?
++a先自增再赋值(前置);a++先赋值再自增(后置)。
Math.Round、Floor、Ceiling 各是什么?
Round 四舍五入;Floor 向下取整;Ceiling 向上取整。
三目运算符的格式?
条件 ? 值1 : 值2,条件为 true 取值1,否则取值2。
&& 与 &、|| 与 | 的区别?
双写为短路(条件已定则另一侧不执行),单写为非短路(两侧都执行)。
字符串转数字的安全方法?
int.TryParse(str, out int n),失败返回 false 不抛异常;Parse/Convert 失败抛 FormatException。