第58卷 算法与程序设计—面向对象三大特征—河北省计算机类—考纲百套卷
|
2份
|
18页
|
53人阅读
|
0人下载
内容正文:
编写说明:河北省对口招生计算机类《考纲百套卷》,依据《河北省普通高等学校对口招生考试大纲(2028版专业课)计算机类》编写。本专辑涵盖9门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。
本试卷是第58卷为专业核心模块训练卷,按《算法与程序设计》中"算法程序卷13——面向对象三大特征"范围和要求编写。具体内容为:掌握面向对象的三大特征:封装、继承、多态;掌握类和对象的概念、类的定义及属性和方法、对象的创建与使用
河北省对口招生职业技能考试
算法与程序设计 试卷
(算法程序卷13——面向对象三大特征)
考试时间:90分钟 满分:100分
一、单项选择题(共20题,每题2分,共40分)
1. C#中,类的访问修饰符public表示()
A.只能在本类中访问 B.只能在本程序集中访问
C.任何代码都可以访问 D.只能在子类中访问
2. C#中,private访问修饰符表示()
A.任何代码都可访问 B.只有本类可以访问
C.只有子类可以访问 D.程序集内可访问
3. C#中,abstract类()
A.可以实例化 B.不能实例化,可包含抽象方法 C.不能有方法 D.只能继承一次
4. C#中,继承使用的关键字是()
A.extends B.inherits C.:(冒号) D.base
5. C#中,virtual和override关键字用于实现()
A.封装 B.多态(重写) C.继承 D.重载
6. C#中,以下哪个关键字用于访问基类成员()
A.this B.base C.super D.parent
7. 面向对象编程的三大特征是()。
A.封装、继承、多态 B.类、对象、方法 C.抽象、封装、接口 D.继承、覆盖、重载
8. C#中,类和对象的关系是()。
A.类是对一类事物的抽象描述,对象是类的实例 B.类和对象是同一个概念
C.对象比类更抽象 D.类不能创建对象
9. C#中,类的定义使用关键字是()。
A.class B.object C.type D.struct
10. C#中,创建类的对象使用关键字是()。
A.new B.create C.make D.init
11. C#中,以下关于成员访问修饰符public、private的说法,正确的是()。
A.public成员可以在类外部访问,private成员只能在类内部访问
B.两者效果相同
C.private成员可以在任何地方访问
D.public不能修饰字段
12. C#中,以下关于封装的说法,正确的是()。
A.封装是将数据和操作封装在类中 B.封装通过访问修饰符控制访问权限
C.封装保护对象内部数据不被随意访问 D.以上都正确
13. C#中,继承的语法是()。
A.class 子类名 : 父类名 B.class 子类名 extends 父类名
C.class 子类名 inherits 父类名 D.class 父类名 : 子类名
14. C#中,子类继承父类后,可以访问父类的()成员。
A.public和protected成员 B.private成员(通过基类方法间接访问)
C.所有成员 D.只有static成员
15. C#中,以下关于base关键字的说法,正确的是()。
A.base用于访问父类的成员 B.base可以调用父类构造函数
C.base可以调用父类方法 D.以上都正确
16. C#中,以下关于方法重写(override)的说法,正确的是()。
A.父类方法必须用virtual或abstract修饰 B.子类方法使用override关键字
C.重写后父类方法被隐藏 D.以上都正确
17. C#中,多态的实现方式包括()。
A.方法重写(override) B.抽象类 C.接口 D.以上都正确
18. C#中,以下关于protected访问修饰符的说法,正确的是()。
A.本类和子类可以访问 B.任何类都可以访问
C.只有本类可以访问 D.只有同一程序集可访问
19. C#中,以下关于继承的说法,正确的是()。
A.C#只支持单继承(一个类只能有一个直接父类)
B.C#支持多继承(一个类可以有多个父类)
C.继承使子类复用父类的代码
D.AC都正确
20. C#中,以下关于类的属性的说法,正确的是()。
A.属性用于封装类的字段,提供对字段的安全访问
B.属性分为get访问器(读取字段)和set访问器(修改字段)
C.只读属性只有get访问器,无set访问器
D.以上都正确
二、填空题(共10空,每空1分,共10分)
21. 面向对象编程的三大特征是封装、继承和______。
22. C#中,______是对一类事物的抽象描述,______是类的具体实例。
23. C#中,定义类使用______关键字,创建类的对象使用______关键字。
24. 封装的核心是将类的______和______封装在一起,通过访问修饰符控制访问权限。
25. C#中,子类继承父类使用______(符号)连接子类和父类。
26. C#中,______关键字用于在子类中访问父类的成员和构造函数。
27. C#中,方法重写需要父类方法用______修饰,子类方法用______修饰。
28. 多态的核心是______相同,______不同。
29. C#中,______类不能实例化,只能作为父类被继承,且可包含抽象方法。
30. C#中,访问修饰符______表示只有本类可以访问,______表示任何代码都可以访问。
三、判断题(共5题,每题1分,共5分)
31. C#中,类可以多继承,一个类可以有多个直接父类。( )
32. 封装的目的是保护类的内部数据,防止被随意访问和修改。( )
33. C#中,子类可以访问父类的所有成员,包括private成员。( )
34. 方法重写和方法重载都是多态的实现方式。( )
35. C#中,abstract类可以包含非抽象方法,也可以实例化对象。( )
四、程序分析题(共1题,每题10分,共10分)
36. 阅读下面的C#程序,分析其功能并写出运行结果。
using System;
class Program
{
static int Fact(int n)
{
if (n <= 1) return 1;
return n * Fact(n - 1);
}
static void Main()
{
for (int i = 1; i <= 5; i++)
{
Console.Write(Fact(i) + " ");
}
}
}
程序运行结果:___________________
五、写运行结果题(共2题,每题5分,共10分)
37. 分析下面C#程序段的输出结果:
using System;
class Program
{
static void Main()
{
string s = "abcdef";
Console.WriteLine(s.ToUpper());
Console.WriteLine(s.Contains【'cd'】);
Console.WriteLine(s.Length);
}
}
程序运行结果:___________________
38. 分析下面C#程序段的输出结果:
using System;
class Program
{
static void Main()
{
int[] arr = { 10, 20, 30, 40, 50 };
int sum = 0;
foreach (int n in arr)
{
if (n > 25) sum += n;
}
Console.WriteLine(sum);
}
}
程序运行结果:___________________
六、程序改错题(共1题,每题5分,共5分)
39. 下面程序对整型数组进行冒泡排序,但有2处错误,请找出并改正:
using System;
class Program
{
static void Main()
{
int[] a = { 5, 2, 8, 1, 9 };
int n = a.Length;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - i; j++)
{
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
foreach (int x in a)
Console.Write(x + " ");
}
}
请找出程序中的错误,并写出正确答案。
七、程序填空题(共3题,每题5分,共15分)
40. 下面程序用于判断一个数是否为素数,请填写空白处:
using System;
class Program{
static void Main(){
int n = 17;
bool isPrime = true;
for(int i = 2; i <= Math.Sqrt(n); i++){
if(n % i == 0){
isPrime = _____;
break;
}
}
Console.WriteLine(isPrime);
}
}
41. 下面程序用于查找数组中是否存在某元素,请填写空白处:
using System;
class Program{
static void Main(){
int[] arr = {3, 5, 7, 9};
int target = 7;
bool found = false;
for(int i = 0; i < arr.Length; i++){
if(arr[i] == target){
found = _____;
break;
}
}
Console.WriteLine(found);
}
}
42. 下面程序用于找出数组中最大值及其位置,请填写空白处:
using System;
class Program
{
static void Main()
{
int[] a = { 3, 7, 2, 9, 1 };
int max = a[0];
int pos = 0;
for (int i = 1; i < a.Length; i++)
{
if (_____)
{
max = a[i];
pos = _____;
}
}
Console.WriteLine("max=" + max + " pos=" + pos);
}
}
学科网(北京)股份有限公司
$
编写说明:河北省对口招生计算机类《考纲百套卷》,依据《河北省普通高等学校对口招生考试大纲(2028版专业课)计算机类》编写。本专辑涵盖9门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。
本试卷是第58卷为专业核心模块训练卷,按《算法与程序设计》中"算法程序卷13——面向对象三大特征"范围和要求编写。具体内容为:掌握面向对象的三大特征:封装、继承、多态;掌握类和对象的概念、类的定义及属性和方法、对象的创建与使用
河北省对口招生职业技能考试
算法与程序设计 试卷
(算法程序卷13——面向对象三大特征)
考试时间:90分钟 满分:100分
一、单项选择题(共20题,每题2分,共40分)
1. C#中,类的访问修饰符public表示()
A.只能在本类中访问 B.只能在本程序集中访问 C.任何代码都可以访问 D.只能在子类中访问
【答案】C
【解析】C#中public是公共访问修饰符,被public修饰的类、成员,任何代码(无论是否在同一类、同一程序集)都可以访问;A选项是private修饰符的作用;B选项是internal修饰符的作用;D选项无对应访问修饰符的作用。
2. C#中,private访问修饰符表示()
A.任何代码都可访问 B.只有本类可以访问 C.只有子类可以访问 D.程序集内可访问
【答案】B
【解析】private是私有访问修饰符,被private修饰的类成员(字段、方法等),只能在其所在的类内部访问,类外部(包括子类)均无法直接访问;A选项是public的作用;C选项是protected的部分作用;D选项是internal的作用。
3. C#中,abstract类()
A.可以实例化 B.不能实例化,可包含抽象方法 C.不能有方法 D.只能继承一次
【答案】B
【解析】abstract类是抽象类,核心特点是不能实例化(无法用new关键字创建对象),但可以包含抽象方法(用abstract修饰、无方法体)和非抽象方法;A选项错误,抽象类不能实例化;C选项错误,抽象类可以有方法;D选项错误,C#中类可以多层继承(抽象类也可被多次继承)。
4. C#中,继承使用的关键字是()
A.extends B.inherits C.:(冒号) D.base
【答案】C
【解析】C#中实现类的继承,使用冒号(:)连接子类和父类,语法为“class 子类名 : 父类名”;A选项extends是Java中继承的关键字;B选项inherits不是C#的继承关键字;D选项base用于访问父类成员,不是继承关键字。
5. C#中,virtual和override关键字用于实现()
A.封装 B.多态(重写) C.继承 D.重载
【答案】B
【解析】virtual关键字用于在父类中声明可被重写的方法,override关键字用于在子类中重写父类的virtual方法,两者配合实现面向对象三大特征中的多态(重写实现多态);A选项封装通过访问修饰符实现;C选项继承通过冒号实现;D选项重载是同一类中方法名相同、参数不同,无需virtual和override。
6. C#中,以下哪个关键字用于访问基类成员()
A.this B.base C.super D.parent
【答案】B
【解析】base关键字用于在子类中访问父类(基类)的成员(字段、方法、构造函数等);A选项this用于访问当前类的成员;C选项super是Java中访问父类的关键字;D选项parent不是C#的关键字。
7. 面向对象编程的三大特征是()。
A.封装、继承、多态 B.类、对象、方法 C.抽象、封装、接口 D.继承、覆盖、重载
【答案】A
【解析】面向对象编程的三大核心特征是封装、继承、多态;B选项类、对象、方法是面向对象的基本概念,不是特征;C选项抽象、接口是面向对象的相关概念,不是三大特征;D选项覆盖(重写)是多态的实现方式,重载是方法的特性,均不是三大特征。
8. C#中,类和对象的关系是()。
A.类是对一类事物的抽象描述,对象是类的实例 B.类和对象是同一个概念 C.对象比类更抽象 D.类不能创建对象
【答案】A
【解析】类是对一类事物的抽象描述(如“学生”类),对象是类的具体实例(如“张三”这个具体的学生);B选项错误,类和对象是不同概念,类是抽象的,对象是具体的;C选项错误,类比对象更抽象;D选项错误,类可以通过new关键字创建对象。
9. C#中,类的定义使用关键字是()。
A.class B.object C.type D.struct
【答案】A
【解析】C#中使用class关键字定义类,语法为“class 类名{ }”;B选项object是所有类的基类;C选项type用于获取类型信息;D选项struct用于定义结构体,不是类。
10. C#中,创建类的对象使用关键字是()。
A.new B.create C.make D.init
【答案】A
【解析】C#中创建类的对象(实例化对象),必须使用new关键字,语法为“类名 对象名 = new 类名();”;B、C、D选项均不是C#中创建对象的关键字。
11. C#中,以下关于成员访问修饰符public、private的说法,正确的是()。
A.public成员可以在类外部访问,private成员只能在类内部访问 B.两者效果相同 C.private成员可以在任何地方访问 D.public不能修饰字段
【答案】A
【解析】A选项说法正确,public是公共修饰符,成员可在类外部访问;private是私有修饰符,成员仅能在类内部访问;B选项错误,两者效果完全不同;C选项错误,private成员只能在本类内部访问;D选项错误,public可以修饰字段、方法、类等。
12. C#中,以下关于封装的说法,正确的是()。
A.封装是将数据和操作封装在类中 B.封装通过访问修饰符控制访问权限 C.封装保护对象内部数据不被随意访问 D.以上都正确
【答案】D
【解析】封装的核心是将对象的属性(数据)和方法(操作)封装在类中,通过访问修饰符(public、private、protected等)控制成员的访问权限,从而保护对象内部数据不被随意修改和访问,A、B、C说法均正确。
13. C#中,继承的语法是()。
A.class 子类名 : 父类名 B.class 子类名 extends 父类名 C.class 子类名 inherits 父类名 D.class 父类名 : 子类名
【答案】A
【解析】C#中继承的标准语法是“class 子类名 : 父类名”,子类在冒号后继承父类;B选项extends是Java的继承语法;C选项inherits不是C#的继承语法;D选项顺序错误,应是子类继承父类。
14. C#中,子类继承父类后,可以访问父类的()成员。
A.public和protected成员 B.private成员(通过基类方法间接访问) C.所有成员 D.只有static成员
【答案】D
【解析】C#中,子类继承父类后,可直接访问父类的public和protected成员;父类的private成员无法直接访问,但可通过父类提供的public/protected方法间接访问;A选项仅说明直接访问的部分,不完整;B选项仅说明间接访问的部分,不完整;C选项错误,无法访问父类private成员;D选项结合A、B,表述最全面(public/protected可直接访问,private可间接访问)。
15. C#中,以下关于base关键字的说法,正确的是()。
A.base用于访问父类的成员 B.base可以调用父类构造函数 C.base可以调用父类方法 D.以上都正确
【答案】D
【解析】base关键字的核心作用是访问父类成员:可直接访问父类的public/protected字段、方法;也可在子类构造函数中用“base(参数)”调用父类的构造函数;A、B、C说法均正确。
16. C#中,以下关于方法重写(override)的说法,正确的是()。
A.父类方法必须用virtual或abstract修饰 B.子类方法使用override关键字 C.重写后父类方法被隐藏 D.以上都正确
【答案】D
【解析】方法重写的前提是父类方法用virtual(可重写)或abstract(抽象方法,必须重写)修饰;子类重写时必须使用override关键字;重写后,通过子类对象调用该方法时,执行的是子类重写后的方法,父类方法被隐藏;A、B、C说法均正确。
17. C#中,多态的实现方式包括()。
A.方法重写(override) B.抽象类 C.接口 D.以上都正确
【答案】D
【解析】C#中多态的实现方式有三种:① 方法重写(子类重写父类virtual方法);② 抽象类(抽象方法强制子类重写,实现多态);③ 接口(类实现接口的抽象方法,不同类有不同实现,实现多态);A、B、C均是多态的实现方式,因此D正确。
18. C#中,以下关于protected访问修饰符的说法,正确的是()。
A.本类和子类可以访问 B.任何类都可以访问 C.只有本类可以访问 D.只有同一程序集可访问
【答案】A
【解析】protected是保护访问修饰符,被protected修饰的成员,可在其所在的本类内部访问,也可在其子类(无论是否同一程序集)中访问;B选项是public的作用;C选项是private的作用;D选项是internal的作用。
19. C#中,以下关于继承的说法,正确的是()。
A.C#只支持单继承(一个类只能有一个直接父类) B.C#支持多继承(一个类可以有多个父类) C.继承使子类复用父类的代码 D.AC都正确
【答案】D
【解析】A选项正确,C#只支持单继承,一个类只能有一个直接父类(但可多层继承);B选项错误,C#不支持多继承;C选项正确,继承的核心优势是代码复用,子类可直接使用父类的public/protected成员;因此A、C正确,D选项正确。
20. C#中,以下关于类的属性的说法,正确的是()。
A.属性用于封装类的字段,提供对字段的安全访问 B.属性分为get访问器(读取字段)和set访问器(修改字段) C.只读属性只有get访问器,无set访问器 D.以上都正确
【答案】D
【解析】类的属性是对字段的封装,用于安全访问字段(避免字段被直接修改);属性包含get访问器(用于读取字段值)和set访问器(用于修改字段值);只读属性仅包含get访问器,无法修改字段值;A、B、C说法均正确。
二、填空题(共10空,每空1分,共10分)
21. 面向对象编程的三大特征是封装、继承和______。
【答案】多态
【解析】面向对象三大核心特征缺一不可,分别是封装(隐藏内部细节)、继承(代码复用)、多态(同一行为不同实现)。
22. C#中,______是对一类事物的抽象描述,______是类的具体实例。
【答案】类;对象
【解析】类是抽象的,用于描述一类事物的共同属性和方法;对象是具体的,是类的实例化结果,一个类可以创建多个对象。
23. C#中,定义类使用______关键字,创建类的对象使用______关键字。
【答案】class;new
【解析】定义类的语法为“class 类名{ }”,使用class关键字;实例化对象(创建对象)的语法为“类名 对象名 = new 类名();”,使用new关键字。
24. 封装的核心是将类的______和______封装在一起,通过访问修饰符控制访问权限。
【答案】属性(数据);方法(操作)
【解析】封装的本质是将对象的属性(存储数据)和方法(操作数据)打包在类中,隐藏内部实现细节,仅通过公共接口(public成员)对外提供访问,保护数据安全。
25. C#中,子类继承父类使用______(符号)连接子类和父类。
【答案】:(冒号)
【解析】C#中继承的语法格式为“class 子类名 : 父类名”,冒号是连接子类和父类的核心符号,标识子类继承自父类。
26. C#中,______关键字用于在子类中访问父类的成员和构造函数。
【答案】base
【解析】base关键字的核心作用是访问父类成员,可用于访问父类的字段、方法,也可在子类构造函数中调用父类的构造函数(如base())。
27. C#中,方法重写需要父类方法用______修饰,子类方法用______修饰。
【答案】virtual;override
【解析】方法重写的前提是父类方法用virtual关键字声明为可重写;子类重写该方法时,必须用override关键字标识,确保重写语法正确。
28. 多态的核心是______相同,______不同。
【答案】行为(方法名);实现(方法体)
【解析】多态的核心特征是:不同的对象调用同一个方法(行为相同),会执行不同的方法体(实现不同),例如父类和子类有同名方法,子类重写后,调用时会执行子类的实现。
29. C#中,______类不能实例化,只能作为父类被继承,且可包含抽象方法。
【答案】abstract(抽象)
【解析】abstract(抽象)类的核心特点是不能实例化,主要作用是作为父类,提供统一的抽象方法,强制子类重写,实现多态。
30. C#中,访问修饰符______表示只有本类可以访问,______表示任何代码都可以访问。
【答案】private;public
【解析】private是私有访问修饰符,仅本类可访问;public是公共访问修饰符,任何代码均可访问,两者是最常用的访问修饰符。
三、判断题(共5题,每题1分,共5分)
31. C#中,类可以多继承,一个类可以有多个直接父类。( )
【答案】×
【解析】C#只支持单继承,一个类只能有一个直接父类,不能同时继承多个父类,但可以实现多个接口,或进行多层继承(子类继承父类,父类再继承其他类)。
32. 封装的目的是保护类的内部数据,防止被随意访问和修改。( )
【答案】√
【解析】封装通过将类的内部数据(字段)封装,用访问修饰符(如private)限制直接访问,仅通过属性或方法提供安全的访问方式,核心目的是保护数据安全。
33. C#中,子类可以访问父类的所有成员,包括private成员。( )
【答案】×
【解析】C#中,子类只能直接访问父类的public和protected成员;父类的private成员是私有成员,子类无法直接访问,只能通过父类提供的public/protected方法间接访问。
34. 方法重写和方法重载都是多态的实现方式。( )
【答案】×
【解析】方法重写(override)是多态的实现方式之一;方法重载是同一类中,方法名相同、参数列表不同,属于类的方法特性,不是多态的实现方式。
35. C#中,abstract类可以包含非抽象方法,也可以实例化对象。( )
【答案】×
【解析】C#中,abstract类可以包含抽象方法(无方法体)和非抽象方法(有方法体),但核心特点是不能实例化对象(无法用new关键字创建抽象类的对象)。
四、程序分析题(共1题,每题10分,共10分)
36. 阅读下面的C#程序,分析其功能并写出运行结果。
using System;
class Program
{
static int Fact(int n)
{
if (n <= 1) return 1;
return n * Fact(n - 1);
}
static void Main()
{
for (int i = 1; i <= 5; i++)
{
Console.Write(Fact(i) + " ");
}
}
}
程序运行结果:___________________
【答案】1 2 6 24 120
五、写运行结果题(共2题,每题5分,共10分)
37. 分析下面C#程序段的输出结果:
using System;
class Program
{
static void Main()
{
string s = "abcdef";
Console.WriteLine(s.ToUpper());
Console.WriteLine(s.Contains【'cd'】);
Console.WriteLine(s.Length);
}
}
程序运行结果:___________________
【答案】ABCDEF
True
6
38. 分析下面C#程序段的输出结果:
using System;
class Program
{
static void Main()
{
int[] arr = { 10, 20, 30, 40, 50 };
int sum = 0;
foreach (int n in arr)
{
if (n > 25) sum += n;
}
Console.WriteLine(sum);
}
}
程序运行结果:___________________
【答案】120
六、程序改错题(共1题,每题5分,共5分)
39. 下面程序对整型数组进行冒泡排序,但有2处错误,请找出并改正:
using System;
class Program
{
static void Main()
{
int[] a = { 5, 2, 8, 1, 9 };
int n = a.Length;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - i; j++)
{
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
foreach (int x in a)
Console.Write(x + " ");
}
}
请找出程序中的错误,并写出正确答案。
【答案】错误1:for (int j = 0; j < n - i; j++) 应改为 j < n - 1 - i;
(当j=n-i-1时,a[j+1]不越界;若j=n-i则a[j+1]越界)
错误2:内层循环上限应为n-1-i,即j<n-1-i
七、程序填空题(共3题,每题5分,共15分)
40. 下面程序用于判断一个数是否为素数,请填写空白处:
using System;
class Program{
static void Main(){
int n = 17;
bool isPrime = true;
for(int i = 2; i <= Math.Sqrt(n); i++){
if(n % i == 0){
isPrime = _____;
break;
}
}
Console.WriteLine(isPrime);
}
}
【答案】['false']
41. 下面程序用于查找数组中是否存在某元素,请填写空白处:
using System;
class Program{
static void Main(){
int[] arr = {3, 5, 7, 9};
int target = 7;
bool found = false;
for(int i = 0; i < arr.Length; i++){
if(arr[i] == target){
found = _____;
break;
}
}
Console.WriteLine(found);
}
}
【答案】['true']
42. 下面程序用于找出数组中最大值及其位置,请填写空白处:
using System;
class Program
{
static void Main()
{
int[] a = { 3, 7, 2, 9, 1 };
int max = a[0];
int pos = 0;
for (int i = 1; i < a.Length; i++)
{
if (_____)
{
max = a[i];
pos = _____;
}
}
Console.WriteLine("max=" + max + " pos=" + pos);
}
}
【答案】['a[i] > max', 'i']
学科网(北京)股份有限公司
$