跳转至

基础语法复习#

对应笔记: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 会编译错误。decimalm 后缀。

3. 下列哪个运算符是"短路与"?

  • A. &
  • B. &&
  • C. |
  • D. !
答案

B. &&。短路与:左边为 false 时右边不执行。& 是非短路与,两边都执行。

4. int a = 10; int b = a++; 执行后 ab 的值分别是?

  • A. a=10, b=10
  • B. a=11, b=10
  • C. a=11, b=11
  • D. a=10, b=11
答案

Ba++ 是后置自增:先赋值再自增,所以 b=10a=11。前置 ++a 则先自增再赋值。

5. 字符串 "123"int,下列哪个方法不会抛异常?

  • A. int.Parse("123")
  • B. Convert.ToInt32("123")
  • C. int.TryParse("123", out int n)
  • D. 以上都会
答案

CTryParse 转换失败时返回 false 而不抛异常,是安全转换的首选。Parse 和 Convert 转换失败会抛 FormatException

6. Math.Floor(5.9) 的返回值是?

  • A. 5
  • B. 6
  • C. 5.9
  • D. 5.0
答案

A 和 D 均可视为 5Floor 向下取整得到 5(double 类型)。Ceiling(5.9) 为 6,Round(5.5) 为 6。


二、填空题#

1. C# 程序的入口方法是 ==_== ==== ==_== ====,它必须有 ==_== ==== ==_== ==== 和 ==_== ==== ==_== ==== 修饰符。

答案

Mainstaticvoid(返回类型)。完整签名: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. 输入两个整数,交换它们的值(不借助第三个变量),并输出交换结果。

答案
int a = 10, b = 20;
a += b;   // a = 30
b = a - b; // b = 10
a -= b;   // a = 20
Console.WriteLine($"a={a}, b={b}");  // a=20, b=10

2. 输入圆的半径,计算面积和周长(用 Math 类)。

答案
double r = Convert.ToDouble(Console.ReadLine());
double S = Math.PI * r * r;
double C = 2 * Math.PI * r;
Console.WriteLine($"面积:{S},周长:{C}");

3. 输入一个三位数,输出它的个位、十位、百位。

答案
int n = Convert.ToInt32(Console.ReadLine());
int ones = n % 10;
int tens = n % 100 / 10;
int hundreds = n / 100;
Console.WriteLine($"个位{ones},十位{tens},百位{hundreds}");

4. 用三目运算符判断输入的年龄是否成年,输出"成年"或"未成年"。

答案
int age = Convert.ToInt32(Console.ReadLine());
string result = age >= 18 ? "成年" : "未成年";
Console.WriteLine(result);

知识卡片#

什么是强类型语言?

每个变量必须声明明确类型,编译器在编译阶段做类型检查,减少运行时错误。C# 是强类型语言。

decimaldouble 的区别?

decimal 精度约 28 位,适合金钱计算(后缀 m);double 精度约 15 位,是默认浮点类型。

隐式转换的方向是什么?

浮点类型 > 整数类型 > 字符类型;有符号:sbyte < short < int < long < float < double。

++aa++ 的区别?

++a 先自增再赋值(前置);a++ 先赋值再自增(后置)。

Math.RoundFloorCeiling 各是什么?

Round 四舍五入;Floor 向下取整;Ceiling 向上取整。

三目运算符的格式?

条件 ? 值1 : 值2,条件为 true 取值1,否则取值2。

&&&||| 的区别?

双写为短路(条件已定则另一侧不执行),单写为非短路(两侧都执行)。

字符串转数字的安全方法?

int.TryParse(str, out int n),失败返回 false 不抛异常;Parse/Convert 失败抛 FormatException。


相关笔记#