内容正文:
《算法与程序设计--C#》河北科学技术出版社
第三章 C#语言基础
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题3分,共60分)
1.以下哪种类型转换属于隐式转换( )。
A. 将 string 转换为 int
B. 将 int 转换为 double
C. 将 double 转换为 int
D. 将 char 转换为 string
2.定义一个字符串变量,正确的C#语法是( )。
A. String str;
B. string str;
C. char[] str;
D. var str = "hello";
3.C#中,null 关键字可用于( )类型。
A. 值类型
B. 引用类型
C. 所有类型
D. 仅 string 类型
4.要将字符串 "123" 转换为 int 类型,正确方法是( )。
A. int num = (int)"123";
B. int num = int.Parse("123");
C. int num = Convert.ToInt32("123");
D. B、C都对
5.以下代码运行结果是( )。
int a = 5;
double b = a;
a = 10;
Console.WriteLine(b);
A. 5
B. 10
C. 5.0
D. 10.0
6.数据类型转换中,需要手动强制转换的是( )。
A. short 转 int
B. int 转 long
C. double 转 int
D. string 转 char
7.C#中 bool 类型的默认值是( )。
A. true
B. false
C. null
D. 无默认值
8.关于枚举类型,正确的说法是( )。
A. 枚举值必须是字符串
B. 枚举可直接存储多种类型数据
C. 枚举用于定义一组命名的常量
D. 枚举不能自定义数值
9.以下定义数组的语法正确的是( )。
A. int[] nums = new int[3]{1,2,3};
B. int nums[] = new int[3]{1,2,3};
C. int[3] nums = {1,2,3};
D. int nums = new int[3]{1,2,3};
10.装箱操作是指( )。
A. 将引用类型转换为值类型
B. 将值类型转换为引用类型
C. 将 string 转换为 char
D. 将数组转换为列表
11.C#中,以下属于值类型的是( )。
A. string
B. class
C. struct
D. interface
12.定义一个常量 PI 表示圆周率,正确的是( )。
A. const double PI = 3.14;
B. readonly double PI = 3.14;
C. double PI = 3.14;
D. var PI = 3.14;
13.以下方法声明,返回类型是 string 且参数是 int 的是( )。
A. void Method(int num) { }
B. string Method(int num) { return num.ToString(); }
C. int Method(string num) { return 0; }
D. string Method() { return "test"; }
14.C#中,char 类型占用( )字节。
A. 1
B. 2
C. 4
D. 8
15.要判断字符串 str 是否能转换为 int 类型,安全的方法是( )。
A. int.Parse(str)
B. Convert.ToInt32(str)
C. int.TryParse(str, out int result)
D. 直接强制转换
16.关于引用类型和值类型的赋值,正确的是( )。
A. 值类型赋值是拷贝数据,引用类型赋值是传递引用
B. 值类型和引用类型赋值都是拷贝数据
C. 值类型赋值是传递引用,引用类型赋值是拷贝数据
D. 以上都不对
17.以下能正确定义一个 decimal 类型变量并赋值的是( )。
A. decimal num = 10.5;
B. decimal num = 10.5m;
C. decimal num = (decimal)10.5;
D. decimal num = Convert.ToDecimal(10.5);
18.枚举 Season { Spring, Summer, Autumn, Winter } 中,Spring 的默认枚举值是( )。
A. 0
B. 1
C. "Spring"
D. 任意值
19.C#中,以下关于 struct 的说法错误的是( )。
A. struct 是值类型
B. struct 可以包含方法和属性
C. struct 实例存储在堆中
D. struct 可用于封装少量相关数据
20.以下代码,数组 arr 的长度是( )。
int[] arr = {1,2,3,4,5};
A. 4
B. 5
C. 6
D. 不确定
2、 填空题(本题共10空,每空2分,共20分)
1.C#中,基本数值类型 short 占用________字节。
2.类型转换中,将引用类型转换为值类型的操作称为________。
3.定义枚举类型的关键字是________。
4.C#中,bool 类型的两个取值是________和________。
5.数组初始化时,元素个数称为数组的________。
6.装箱操作是把________类型转换为________类型。
7.C#中,字符串类型的关键字是________。
8.常量声明时,使用________关键字修饰(编译时常量 )。
3、 判断题(本题共5小题,每题2分,共10分)
1.C#中,所有数据类型转换都可以通过隐式转换完成。( )
2.枚举类型的取值只能是整数。( )
3.const 修饰的常量值在程序运行期间可以修改。( )
4.值类型变量存储在栈中,引用类型变量存储在堆中。( )
5.string 类型是值类型。( )
4、 简答题(本题共2小题,每题5分,共10分)
1.声明一个 float 类型的常量 pi,并赋值为 3.14f,写出代码实现。
2.定义一个枚举类型 Month,包含 January、February、March、April,写出代码并说明枚举的基本特性。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
《算法与程序设计--C#》河北科学技术出版社
第三章 C#语言基础
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题3分,共60分)
1.以下哪种类型转换属于隐式转换( )。
A. 将 string 转换为 int
B. 将 int 转换为 double
C. 将 double 转换为 int
D. 将 char 转换为 string
【答案】B
【解析】隐式转换是C#自动进行的、不会丢失数据或导致精度问题的转换。int 范围小于 double,int 转 double 可自动隐式转换;A需 int.Parse 等显式转换;C可能丢失小数,需显式转换;D需 ToString 等操作,属于显式转换场景,所以选B。
2.定义一个字符串变量,正确的C#语法是( )。
A. String str;
B. string str;
C. char[] str;
D. var str = "hello";
【答案】B
【解析】C#中定义字符串变量标准关键字是 string(String 是.NET框架中 System.String 的别名,日常编码常用 string );char[] 是字符数组,不是字符串变量定义;var 是类型推断,这里问基础定义字符串变量写法,选B更直接体现字符串类型定义 。
3.C#中,null 关键字可用于( )类型。
A. 值类型
B. 引用类型
C. 所有类型
D. 仅 string 类型
【答案】B
【解析】null 表示引用类型变量未引用任何对象,值类型有默认值(如 int 是0 ),不能为 null;引用类型(如 class、string 等 )可被赋值为 null 表示无指向,所以选B。
4.要将字符串 "123" 转换为 int 类型,正确方法是( )。
A. int num = (int)"123";
B. int num = int.Parse("123");
C. int num = Convert.ToInt32("123");
D. B、C都对
【答案】D
【解析】int.Parse 可将符合整数格式字符串转 int;Convert.ToInt32 也能实现,内部处理更灵活。
5.以下代码运行结果是( )。
int a = 5;
double b = a;
a = 10;
Console.WriteLine(b);
A. 5
B. 10
C. 5.0
D. 10.0
【答案】C
【解析】int 转 double 是隐式转换,b 接收 a 的值5(转换为5.0 ),后续 a 改变不影响已赋值的 b,所以 b 输出5.0,选C。
6.数据类型转换中,需要手动强制转换的是( )。
A. short 转 int
B. int 转 long
C. double 转 int
D. string 转 char
【答案】C
【解析】double 转 int 可能丢失小数部分,C#不会自动转换,需手动如 (int)doubleValue 强制转换;A、B是隐式转换(小范围转大范围 );D需用 char.Parse 等显式转换但不是强制转换语法形式(强制转换是 (类型) ),这里主要说转换方式,C符合手动强制转换。
7.C#中 bool 类型的默认值是( )。
A. true
B. false
C. null
D. 无默认值
【答案】B
【解析】C#中值类型变量声明后未赋值会有默认值,bool 类型默认值是 false;null 是引用类型默认,所以选B。
8.关于枚举类型,正确的说法是( )。
A. 枚举值必须是字符串
B. 枚举可直接存储多种类型数据
C. 枚举用于定义一组命名的常量
D. 枚举不能自定义数值
【答案】C
【解析】枚举(enum )用于定义一组命名的常量集合,如 enum Week { Mon, Tue }; ,枚举值默认是整数(可自定义 );A枚举值不是字符串;B枚举存储的是命名常量,不是多种类型数据;D可自定义枚举值(如 enum Week { Mon = 1, Tue = 2 }; ),所以选C。
9.以下定义数组的语法正确的是( )。
A. int[] nums = new int[3]{1,2,3};
B. int nums[] = new int[3]{1,2,3};
C. int[3] nums = {1,2,3};
D. int nums = new int[3]{1,2,3};
【答案】A
【解析】C#数组定义语法是 类型[] 数组名 = new 类型[长度]{元素};A符合;B是C/C++风格,C#不支持;C中 int[3] 写法错误;D变量类型和数组类型不匹配,所以选A。
10.装箱操作是指( )。
A. 将引用类型转换为值类型
B. 将值类型转换为引用类型
C. 将 string 转换为 char
D. 将数组转换为列表
【答案】B
【解析】装箱是C#中值类型(如 int )向引用类型(如 object )的转换,把值类型数据包装成引用类型对象;A是拆箱;C、D不是装箱概念,所以选B。
11.C#中,以下属于值类型的是( )。
A. string
B. class
C. struct
D. interface
【答案】C
【解析】C#中值类型包括 struct、基本数值类型(int、double 等 )、enum 等;string、class、interface 是引用类型,所以选C。
12.定义一个常量 PI 表示圆周率,正确的是( )。
A. const double PI = 3.14;
B. readonly double PI = 3.14;
C. double PI = 3.14;
D. var PI = 3.14;
【答案】A
【解析】const 用于定义编译时常量,声明时必须赋值且不可修改;readonly 是运行时常量(可在构造函数赋值 );C是普通变量;D是类型推断变量,这里定义常量选A。
13.以下方法声明,返回类型是 string 且参数是 int 的是( )。
A. void Method(int num) { }
B. string Method(int num) { return num.ToString(); }
C. int Method(string num) { return 0; }
D. string Method() { return "test"; }
【答案】B
【解析】A返回 void;B返回 string 且参数 int,符合;C返回 int 且参数 string;D无参数,所以选B。
14.C#中,char 类型占用( )字节。
A. 1
B. 2
C. 4
D. 8
【答案】B
【解析】C#中 char 是Unicode字符,占用2个字节(16位 ),用于表示单个字符,所以选B。
15.要判断字符串 str 是否能转换为 int 类型,安全的方法是( )。
A. int.Parse(str)
B. Convert.ToInt32(str)
C. int.TryParse(str, out int result)
D. 直接强制转换
【答案】C
【解析】int.TryParse 尝试转换,转换成功返回 true 并通过 out 参数输出结果,失败返回 false,不会抛异常,是安全方式;A、B转换失败会抛异常;D不支持 string 转 int 强制转换,所以选C。
16.关于引用类型和值类型的赋值,正确的是( )。
A. 值类型赋值是拷贝数据,引用类型赋值是传递引用
B. 值类型和引用类型赋值都是拷贝数据
C. 值类型赋值是传递引用,引用类型赋值是拷贝数据
D. 以上都不对
【答案】A
【解析】值类型(如 int、struct )赋值时,会拷贝一份数据到新变量,新变量修改不影响原变量;引用类型(如 class、string )赋值时,传递的是对象在堆中的引用,多个引用指向同一对象(除非重新实例化 ),所以选A。
17.以下能正确定义一个 decimal 类型变量并赋值的是( )。
A. decimal num = 10.5;
B. decimal num = 10.5m;
C. decimal num = (decimal)10.5;
D. decimal num = Convert.ToDecimal(10.5);
【答案】B
【解析】C#中 decimal 类型赋值需加 m 后缀(如 10.5m ),A会默认按 double 处理,赋值给 decimal 需显式转换或加后缀;C、D虽可实现,但B是最直接正确的声明赋值方式(简单场景 ),所以选B。
18.枚举 Season { Spring, Summer, Autumn, Winter } 中,Spring 的默认枚举值是( )。
A. 0
B. 1
C. "Spring"
D. 任意值
【答案】A
【解析】枚举默认第一个值为0,后续依次递增1,所以 Spring 默认值是0,选A。
19.C#中,以下关于 struct 的说法错误的是( )。
A. struct 是值类型
B. struct 可以包含方法和属性
C. struct 实例存储在堆中
D. struct 可用于封装少量相关数据
【答案】C
【解析】struct 是值类型,实例存储在栈中;class 实例存储在堆中。struct 可包含方法、属性,适合封装少量数据,所以C错误,选C。
20.以下代码,数组 arr 的长度是( )。
int[] arr = {1,2,3,4,5};
A. 4
B. 5
C. 6
D. 不确定
【答案】B
【解析】数组初始化时,元素个数是5,所以长度是5,选B。
2、 填空题(本题共10空,每空2分,共20分)
1.C#中,基本数值类型 short 占用________字节。
【答案】2
【解析】short 是16位有符号整数,1字节=8位,所以占用2字节。
2.类型转换中,将引用类型转换为值类型的操作称为________。
【答案】拆箱
【解析】与装箱(值类型转引用类型 )对应,拆箱是引用类型(如 object 存储值类型数据 )转回值类型的操作。
3.定义枚举类型的关键字是________。
【答案】enum
【解析】语法如 enum 枚举名 { 枚举值 }; ,用 enum 关键字。
4.C#中,bool 类型的两个取值是________和________。
【答案】true;false
【解析】bool 类型用于表示逻辑值,只有 true(真 )和 false(假 )两个取值。
5.数组初始化时,元素个数称为数组的________。
【答案】长度
【解析】通过 数组名.Length 可获取数组长度,即元素个数。
6.装箱操作是把________类型转换为________类型。
【答案】值;引用
【解析】如 int(值类型 )转 object(引用类型 )就是装箱,在堆中创建对象存储值类型数据。
7.C#中,字符串类型的关键字是________。
【答案】string
【解析】用于定义字符串变量,如 string str = "hello"; 。
8.常量声明时,使用________关键字修饰(编译时常量 )。
【答案】const
【解析】const 用于定义编译时常量
3、 判断题(本题共5小题,每题2分,共10分)
1.C#中,所有数据类型转换都可以通过隐式转换完成。( )
【答案】×
【解析】隐式转换仅适用于兼容且不会丢失数据的情况(如 int 转 double ),很多转换(如 double 转 int、string 转 int )需显式转换,所以错误。
2.枚举类型的取值只能是整数。( )
【答案】√
【解析】枚举底层存储的是整数类型(可自定义整数值 ),所以枚举值本质是整数,正确。
3.const 修饰的常量值在程序运行期间可以修改。( )
【答案】×
【解析】const 是编译时常量,声明时必须赋值,运行期间不可修改;readonly 可在运行时(构造函数 )赋值,所以错误。
4.值类型变量存储在栈中,引用类型变量存储在堆中。( )
【答案】√
【解析】C#中值类型(如 int、struct )实例通常存储在栈;引用类型(如 class、string )对象存储在堆,变量存储引用(在栈 ),所以正确。
5.string 类型是值类型。( )
【答案】×
【解析】string 是引用类型,虽有不可变性等特点,但本质属于引用类型,存储在堆,所以错误。
4、 简答题(本题共2小题,每题5分,共10分)
1.声明一个 float 类型的常量 pi,并赋值为 3.14f,写出代码实现。
【答案】
const float pi = 3.14f;
【解析】
- 在 C# 中,使用 const 关键字声明常量,常量声明时必须同时赋值,且后续无法修改。
- float 类型的字面量需加 f 后缀(如 3.14f ),区分于 double 类型(默认小数为 double ),保证类型匹配。
2.定义一个枚举类型 Month,包含 January、February、March、April,写出代码并说明枚举的基本特性。
【答案】
enum Month
{
January,
February,
March,
April
}
【解析】
- 枚举是值类型,默认底层类型为 int,January 对应值 0,February 对应 1,依此类推(可手动指定值,如 January = 1 )。
- 枚举用于定义命名常量集合,增强代码可读性(用 Month.January 代替魔法数 0 ),限定变量取值范围。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$