第59卷 算法与程序设计—关键字与构造函数—河北省计算机类—考纲百套卷

| 2份
| 31页
| 49人阅读
| 0人下载

内容正文:

编写说明:河北省对口招生计算机类《考纲百套卷》,依据《河北省普通高等学校对口招生考试大纲(2028版专业课)计算机类》编写。本专辑涵盖9门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。 本试卷是第59卷为专业核心模块训练卷,按《算法与程序设计》中"算法程序卷14——关键字与构造函数"范围和要求编写。具体内容为:掌握关键字this、this访问属性、this调用成员方法、this调用构造方法;掌握关键字static、静态字段、静态属性、静态方法;掌握构造函数的语法格式和用法 河北省对口招生职业技能考试 算法与程序设计 试卷 (算法程序卷14——关键字与构造函数) 考试时间:90分钟 满分:100分 一、单项选择题(共20题,每题2分,共40分) 1. C#中,this关键字的作用是() A.访问基类成员 B.访问当前类的成员,解决名称冲突 C.创建对象 D.声明静态成员 2. C#中,以下关于类的说法,正确的是() A.一个类只能有一个构造函数 B.构造函数可以没有参数 C.构造函数不能重载 D.构造函数返回int 3. C#中,static修饰的字段属于() A.每个实例独有 B.所有实例共享 C.只读不可写 D.堆上存储 4. C#中,static方法的特点是() A.只能访问实例成员 B.不需要对象即可调用 C.不能有参数 D.不能有返回值 5. C#中,以下关于this关键字的说法,正确的是()。 A.this指向当前对象实例 B.可以用this访问本类成员 C.this在实例方法中隐式存在 D.以上都正确 6. C#中,static修饰的成员是()。 A.静态成员,属于类本身而非对象 B.每个对象共享一份 C.可以不创建对象直接通过类名访问 D.以上都正确 7. C#中,构造函数的名称是()。 A.与类名相同 B.固定为Constructor C.固定为New D.可以任意命名 8. C#中,如果不为类定义构造函数,编译器会()。 A.生成默认构造函数(无参构造函数) B.编译错误 C.什么都不生成 D.生成带参构造函数 9. C#中,static字段和实例字段的区别是()。 A.静态字段所有对象共享一份,实例字段每个对象各一份 B.静态字段存储在堆上 C.两者没有区别 D.实例字段不能被类名访问 10. C#中,静态方法的特点是()。 A.通过类名直接调用 B.不能访问实例成员 C.没有this指针 D.以上都正确 11. C#中,this关键字的作用不包括()。 A.访问当前对象的成员 B.将对象作为参数传递给其他方法 C.声明静态变量 D.在构造函数中调用其他构造函数 12. C#中,base和this都可以在构造函数中使用,正确的调用形式是()。 A.base(参数) B.this(参数) C.在一个构造函数中base和this只能选一个先调用 D.以上都正确 13. C#中,静态构造函数的特点是()。 A.没有访问修饰符 B.只执行一次 C.用于初始化静态成员 D.以上都正确 14. C#中,this调用构造函数的语法格式正确的是()。 A.this.构造函数名(参数) B.this(参数) C.构造函数名(this, 参数) D.以上都不正确 15. C#中,静态属性的特点是()。 A.属于类本身,通过类名访问 B.属于对象实例,通过对象访问 C.只能访问实例字段 D.不能有get和set访问器 16. C#中,以下关于构造函数重载的说法,正确的是()。 A.构造函数不能重载 B.重载的构造函数参数列表必须不同 C.重载的构造函数返回值类型必须不同 D.重载的构造函数名称必须不同 17. C#中,this关键字不能用于()中。 A.实例方法 B.构造函数 C.静态方法 D.实例属性的访问器 18. C#中,静态成员初始化的顺序是()。 A.与声明顺序一致 B.与声明顺序相反 C.随机初始化 D.在实例成员初始化之后 19. C#中,以下关于构造函数的说法,错误的是()。 A.构造函数在创建对象时自动调用 B.构造函数可以有访问修饰符 C.构造函数可以返回void D.构造函数可以重载 20. C#中,使用this访问当前类的属性时,语法格式正确的是()。 A.this.属性名 B.属性名.this C.this(属性名) D.属性名(this) 二、填空题(共10空,每空1分,共10分) 21. C#中,______关键字用于访问当前对象的成员,解决成员名称冲突。 22. C#中,______关键字修饰的成员属于类本身,而非对象实例。 23. C#中,构造函数的名称必须与______相同,且没有返回值类型。 24. C#中,this关键字可以在构造函数中调用本类的其他构造函数,语法为______。 25. C#中,static修饰的字段称为______,所有对象实例共享同一份。 26. C#中,如果手动定义了带参构造函数,编译器______(填“会”或“不会”)自动生成默认无参构造函数。 27. C#中,静态方法只能访问______成员,不能访问实例成员。 28. C#中,this关键字可以访问当前类的______和成员方法。 29. C#中,静态构造函数用于初始化______成员,只执行一次。 30. C#中,构造函数的作用是______对象实例并初始化其成员。 三、判断题(共5题,每题2分,共10分) 31. C#中,this关键字可以访问基类的成员。( ) 32. C#中,static修饰的静态方法可以访问实例字段和静态字段。( ) 33. C#中,一个类可以有多个构造函数,实现构造函数重载。( ) 34. C#中,静态成员必须通过对象实例才能访问。( ) 35. C#中,构造函数可以有返回值,返回值类型为void。( ) 四、程序分析题(共1题,每题10分,共10分) 36. 阅读下面的C#程序,分析其功能并写出运行结果。 using System; class Student { static string className; // 静态字段 string name; // 实例字段 int age; // 静态构造函数 static Student() { className = "高一(1)班"; } // 无参构造函数 public Student() { this.name = "未知"; this.age = 16; } // 带参构造函数,调用无参构造函数 public Student(string name) : this() { this.name = name; } // 实例方法,使用this访问实例成员 public void ShowInfo() { Console.WriteLine("班级:" + className); Console.WriteLine("姓名:" + this.name); Console.WriteLine("年龄:" + this.age); } } class Program { static void Main() { Student s1 = new Student("张三"); Student s2 = new Student(); s1.ShowInfo(); Console.WriteLine("------------------"); s2.ShowInfo(); } } 程序运行结果:___________________ 五、写运行结果题(共2题,每题5分,共10分) 37. 分析下面C#程序段的输出结果: using System; class Program { static int count = 0; // 静态字段 public Program() { count++; } static void Main() { Program p1 = new Program(); Program p2 = new Program(); Program p3 = new Program(); Console.WriteLine("创建的对象个数:" + count); } } 程序运行结果:___________________ 38. 分析下面C#程序段的输出结果: using System; class Test { static void ShowStatic() { Console.WriteLine("这是静态方法"); } void ShowInstance() { Console.WriteLine("这是实例方法"); } } class Program { static void Main() { Test.ShowStatic(); Test t = new Test(); t.ShowInstance(); } } 程序运行结果:___________________ 六、程序改错题(共1题,每题5分,共5分) 39. 下面程序使用this关键字访问类的成员并调用构造函数,但有2处错误,请找出并改正: using System; class Person { string name; int age; // 带参构造函数 public Person(string name, int age) { name = name; // 错误1 this.age = age; } // 无参构造函数,调用带参构造函数 public Person() : this // 错误2 { Console.WriteLine("无参构造函数被调用"); } public void Show() { Console.WriteLine("姓名:" + name + ",年龄:" + age); } } class Program { static void Main() { Person p = new Person("李四", 20); p.Show(); } } 请找出程序中的错误,并写出正确答案。 七、程序填空题(共3题,每题5分,共15分) 40. 下面程序使用this关键字访问类的属性并调用构造函数,请填写空白处: using System; class Book { private string title; private double price; // 无参构造函数 public Book() { this.title = "未知书籍"; this.price = 0.0; } // 带参构造函数,调用无参构造函数 public Book(string title, double price) : _____ { _____ = title; // 使用this访问属性 _____ = price; // 使用this访问属性 } public void ShowBookInfo() { Console.WriteLine("书名:" + this.title + ",价格:" + this.price); } } class Program { static void Main() { Book b = new Book("C#程序设计", 59.9); b.ShowBookInfo(); } } 41. 下面程序定义了静态字段和静态方法,请填写空白处: using System; class Calculator { // 静态字段,用于统计计算次数 _____ int count = 0; // 静态方法,实现加法运算 _____ int Add(int a, int b) { count++; return a + b; } // 静态方法,显示计算次数 static void ShowCount() { Console.WriteLine("累计计算次数:" + _____); } } class Program { static void Main() { Console.WriteLine(Calculator.Add(3, 5)); Console.WriteLine(Calculator.Add(10, 20)); Calculator.ShowCount(); } } 42. 下面程序使用this关键字调用成员方法,请填写空白处: using System; class Student { string name; public Student(string name) { this.name = name; _____; // 使用this调用ShowName方法 } public void ShowName() { Console.WriteLine("学生姓名:" + _____); // 使用this访问name字段 } } class Program { static void Main() { Student s = new Student("王五"); } } 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:河北省对口招生计算机类《考纲百套卷》,依据《河北省普通高等学校对口招生考试大纲(2028版专业课)计算机类》编写。本专辑涵盖9门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。 本试卷是第59卷为专业核心模块训练卷,按《算法与程序设计》中"算法程序卷14——关键字与构造函数"范围和要求编写。具体内容为:掌握关键字this、this访问属性、this调用成员方法、this调用构造方法;掌握关键字static、静态字段、静态属性、静态方法;掌握构造函数的语法格式和用法 河北省对口招生职业技能考试 算法与程序设计 试卷 (算法程序卷14——关键字与构造函数) 考试时间:90分钟 满分:100分 一、单项选择题(共20题,每题2分,共40分) 1. C#中,this关键字的作用是() A.访问基类成员 B.访问当前类的成员,解决名称冲突 C.创建对象 D.声明静态成员 【答案】B 【解析】this关键字的核心作用是访问当前对象的成员(字段、属性、方法),当局部变量与类成员名称冲突时,可通过this区分;A选项访问基类成员用base关键字;C选项创建对象用new关键字;D选项声明静态成员用static关键字。 2. C#中,以下关于类的说法,正确的是() A.一个类只能有一个构造函数 B.构造函数可以没有参数 C.构造函数不能重载 D.构造函数返回int 【答案】B 【解析】构造函数可分为无参构造函数和带参构造函数,无参构造函数即没有参数的构造函数;A选项错误,一个类可以有多个构造函数(构造函数重载);C选项错误,构造函数支持重载;D选项错误,构造函数没有返回值类型,也不返回任何值。 3. C#中,static修饰的字段属于() A.每个实例独有 B.所有实例共享 C.只读不可写 D.堆上存储 【答案】B 【解析】static修饰的字段为静态字段,属于类本身,所有对象实例共享同一份,修改一个实例的静态字段,所有实例访问到的该字段值都会改变;A选项是实例字段的特点;C选项错误,静态字段可读写(除非用readonly修饰);D选项错误,静态字段存储在栈上,实例字段存储在堆上。 4. C#中,static方法的特点是() A.只能访问实例成员 B.不需要对象即可调用 C.不能有参数 D.不能有返回值 【答案】B 【解析】static方法为静态方法,属于类本身,无需创建对象,直接通过“类名.方法名()”即可调用;A选项错误,静态方法只能访问静态成员,不能访问实例成员;C选项错误,静态方法可以有参数;D选项错误,静态方法可以有返回值。 5. C#中,以下关于this关键字的说法,正确的是()。 A.this指向当前对象实例 B.可以用this访问本类成员 C.this在实例方法中隐式存在 D.以上都正确 【答案】D 【解析】this关键字的核心特性:①指向当前对象实例,代表当前对象;②可通过this访问本类的实例成员(字段、属性、方法);③在实例方法、构造函数、实例属性的访问器中,this隐式存在,可省略不写(名称冲突时必须写)。因此A、B、C选项均正确。 6. C#中,static修饰的成员是()。 A.静态成员,属于类本身而非对象 B.每个对象共享一份 C.可以不创建对象直接通过类名访问 D.以上都正确 【答案】D 【解析】static修饰的成员(静态字段、静态属性、静态方法)统称为静态成员,其特点:①属于类本身,不属于任何对象实例;②所有对象实例共享同一份静态成员;③无需创建对象,直接通过“类名.静态成员名”访问。因此A、B、C选项均正确。 7. C#中,构造函数的名称是()。 A.与类名相同 B.固定为Constructor C.固定为New D.可以任意命名 【答案】A 【解析】构造函数的命名规则:名称必须与所在类的类名完全一致,且没有返回值类型(包括void);B、C、D选项均不符合构造函数的命名规范。 8. C#中,如果不为类定义构造函数,编译器会()。 A.生成默认构造函数(无参构造函数) B.编译错误 C.什么都不生成 D.生成带参构造函数 【答案】A 【解析】若程序员未手动定义任何构造函数,C#编译器会自动生成一个默认的无参构造函数,该构造函数无参数、无具体实现,仅用于创建对象;若手动定义了构造函数(无论带参还是无参),编译器则不会再生成默认无参构造函数。 9. C#中,static字段和实例字段的区别是()。 A.静态字段所有对象共享一份,实例字段每个对象各一份 B.静态字段存储在堆上 C.两者没有区别 D.实例字段不能被类名访问 【答案】A 【解析】静态字段与实例字段的核心区别:①归属不同:静态字段属于类,实例字段属于对象;②共享性不同:静态字段所有对象共享,实例字段每个对象各有一份;B选项错误,静态字段存储在栈上;C选项错误,两者区别明显;D选项错误,实例字段只能通过对象访问,不能通过类名访问,但这不是两者的核心区别。 10. C#中,静态方法的特点是()。 A.通过类名直接调用 B.不能访问实例成员 C.没有this指针 D.以上都正确 【答案】D 【解析】静态方法的核心特点:①调用方式:无需创建对象,通过类名直接调用;②访问权限:只能访问静态成员,不能访问实例成员;③无this指针:this指向当前对象实例,静态方法属于类,不依赖对象,因此没有this指针。因此A、B、C选项均正确。 11. C#中,this关键字的作用不包括()。 A.访问当前对象的成员 B.将对象作为参数传递给其他方法 C.声明静态变量 D.在构造函数中调用其他构造函数 【答案】C 【解析】this关键字的作用包括:①访问当前对象的成员(A选项正确);②将当前对象作为参数传递给其他方法(如Method(this));③在构造函数中调用本类的其他构造函数(如:this());C选项声明静态变量用static关键字,与this无关。 12. C#中,base和this都可以在构造函数中使用,正确的调用形式是()。 A.base(参数) B.this(参数) C.在一个构造函数中base和this只能选一个先调用 D.以上都正确 【答案】D 【解析】构造函数中,base用于调用基类的构造函数,this用于调用本类的其他构造函数,两者调用形式均为“关键字(参数)”(A、B选项正确);注意:在同一个构造函数中,base和this不能同时调用,只能选择一个,且必须放在构造函数体的最前面(C选项正确)。因此D选项正确。 13. C#中,静态构造函数的特点是()。 A.没有访问修饰符 B.只执行一次 C.用于初始化静态成员 D.以上都正确 【答案】D 【解析】静态构造函数的核心特点:①无访问修饰符(public、private等均不能加);②无参数、无返回值;③只执行一次(在第一次访问类的静态成员或创建类的对象时执行);④主要用于初始化类的静态成员。因此A、B、C选项均正确。 14. C#中,this调用构造函数的语法格式正确的是()。 A.this.构造函数名(参数) B.this(参数) C.构造函数名(this, 参数) D.以上都不正确 【答案】B 【解析】在构造函数中调用本类的其他构造函数,语法格式为“: this(参数)”,无需写构造函数名,参数需与被调用的构造函数参数列表匹配;A、C选项均不符合语法规范。 15. C#中,静态属性的特点是()。 A.属于类本身,通过类名访问 B.属于对象实例,通过对象访问 C.只能访问实例字段 D.不能有get和set访问器 【答案】A 【解析】静态属性用static修饰,属于类本身,需通过“类名.静态属性名”访问(A选项正确);B选项是实例属性的特点;C选项错误,静态属性只能访问静态字段;D选项错误,静态属性可以有get访问器(只读)和set访问器(可写)。 16. C#中,以下关于构造函数重载的说法,正确的是()。 A.构造函数不能重载 B.重载的构造函数参数列表必须不同 C.重载的构造函数返回值类型必须不同 D.重载的构造函数名称必须不同 【答案】B 【解析】构造函数支持重载,重载的核心要求是:参数列表(参数个数、参数类型、参数顺序)必须不同;A选项错误,构造函数可以重载;C选项错误,构造函数没有返回值类型,不存在返回值类型不同的说法;D选项错误,重载的构造函数名称必须与类名一致,因此名称相同。 17. C#中,this关键字不能用于()中。 A.实例方法 B.构造函数 C.静态方法 D.实例属性的访问器 【答案】C 【解析】this关键字依赖于对象实例,只能用于实例相关的成员中(实例方法、构造函数、实例属性的访问器);静态方法属于类,不依赖对象实例,因此不能使用this关键字。 18. C#中,静态成员初始化的顺序是()。 A.与声明顺序一致 B.与声明顺序相反 C.随机初始化 D.在实例成员初始化之后 【答案】A 【解析】类中多个静态成员(静态字段、静态属性)的初始化顺序,与它们在代码中的声明顺序一致;C选项错误,初始化顺序固定;D选项错误,静态成员在类加载时初始化,实例成员在创建对象时初始化,因此静态成员初始化在实例成员之前。 19. C#中,以下关于构造函数的说法,错误的是()。 A.构造函数在创建对象时自动调用 B.构造函数可以有访问修饰符 C.构造函数可以返回void D.构造函数可以重载 【答案】C 【解析】A选项正确,构造函数的作用就是在创建对象(new关键字)时自动调用,用于初始化对象;B选项正确,构造函数可以有访问修饰符(如public、private),控制构造函数的访问权限;C选项错误,构造函数没有返回值类型,不能写void;D选项正确,构造函数支持重载。 20. C#中,使用this访问当前类的属性时,语法格式正确的是()。 A.this.属性名 B.属性名.this C.this(属性名) D.属性名(this) 【答案】A 【解析】this访问当前类的属性、字段、方法时,语法格式均为“this.成员名”;B、C、D选项均不符合语法规范,其中C选项是this调用构造函数的格式。 二、填空题(共10空,每空1分,共10分) 21. C#中,______关键字用于访问当前对象的成员,解决成员名称冲突。 【答案】this 【解析】this关键字的核心作用之一是访问当前对象的成员,当局部变量与类成员名称相同时,通过this可明确指定访问的是类成员,解决名称冲突。 22. C#中,______关键字修饰的成员属于类本身,而非对象实例。 【答案】static 【解析】static(静态)关键字修饰的成员(字段、属性、方法)属于类本身,不依赖于对象实例,所有对象共享同一份静态成员。 23. C#中,构造函数的名称必须与______相同,且没有返回值类型。 【答案】类名 【解析】构造函数的命名规则:名称必须与所在类的类名完全一致,且不能指定任何返回值类型(包括void)。 24. C#中,this关键字可以在构造函数中调用本类的其他构造函数,语法为______。 【答案】this(参数) 【解析】在构造函数中调用本类其他构造函数时,需在构造函数声明后加“: this(参数)”,参数需与被调用的构造函数参数列表匹配,无参数则写this()。 25. C#中,static修饰的字段称为______,所有对象实例共享同一份。 【答案】静态字段 【解析】static修饰的字段称为静态字段,归属类本身,所有对象实例共享同一份,修改一个实例的静态字段,所有实例访问到的该字段值都会改变。 26. C#中,如果手动定义了带参构造函数,编译器______(填“会”或“不会”)自动生成默认无参构造函数。 【答案】不会 【解析】编译器仅在程序员未手动定义任何构造函数时,才会自动生成默认无参构造函数;若手动定义了带参构造函数(或无参构造函数),编译器则不再生成默认无参构造函数。 27. C#中,静态方法只能访问______成员,不能访问实例成员。 【答案】静态 【解析】静态方法属于类,不依赖对象实例,而实例成员依赖对象实例,因此静态方法只能访问静态成员(静态字段、静态属性、静态方法),不能访问实例成员。 28. C#中,this关键字可以访问当前类的______和成员方法。 【答案】属性(或字段、实例成员) 【解析】this关键字用于访问当前对象的实例成员,包括实例字段、实例属性和实例方法,因此此处可填“属性”“字段”或“实例成员”。 29. C#中,静态构造函数用于初始化______成员,只执行一次。 【答案】静态 【解析】静态构造函数无参数、无访问修饰符,仅用于初始化类的静态成员(静态字段、静态属性),且在类加载时只执行一次。 30. C#中,构造函数的作用是______对象实例并初始化其成员。 【答案】创建(或实例化) 【解析】构造函数的核心作用有两个:一是创建(实例化)对象实例,二是初始化对象的成员(字段、属性),在使用new关键字创建对象时自动调用。 三、判断题(共5题,每题2分,共10分) 31. C#中,this关键字可以访问基类的成员。( ) 【答案】× 【解析】this关键字用于访问当前类的实例成员,访问基类的成员需使用base关键字,因此该说法错误。 32. C#中,static修饰的静态方法可以访问实例字段和静态字段。( ) 【答案】× 【解析】静态方法属于类,不依赖对象实例,而实例字段依赖对象实例,因此静态方法只能访问静态字段,不能访问实例字段,该说法错误。 33. C#中,一个类可以有多个构造函数,实现构造函数重载。( ) 【答案】√ 【解析】构造函数支持重载,只要多个构造函数的参数列表(参数个数、类型、顺序)不同,即可在同一个类中定义多个构造函数,用于不同场景下的对象初始化,该说法正确。 34. C#中,静态成员必须通过对象实例才能访问。( ) 【答案】× 【解析】静态成员属于类本身,无需创建对象实例,直接通过“类名.静态成员名”即可访问;实例成员才需要通过对象实例访问,因此该说法错误。 35. C#中,构造函数可以有返回值,返回值类型为void。( ) 【答案】× 【解析】构造函数的特点是没有返回值类型,也不返回任何值,不能写void关键字,因此该说法错误。 四、程序分析题(共1题,每题10分,共10分) 36. 阅读下面的C#程序,分析其功能并写出运行结果。 using System; class Program { static void Main() { int[,] arr = { {1,2},{3,4},{5,6} }; Console.WriteLine(arr.GetLength(0)); Console.WriteLine(arr.GetLength(1)); } } 程序运行结果:___________________ 【答案】3 2 五、写运行结果题(共2题,每题5分,共10分) 36. 阅读下面的C#程序,分析其功能并写出运行结果。 using System; class Student { static string className; // 静态字段 string name; // 实例字段 int age; // 静态构造函数 static Student() { className = "高一(1)班"; } // 无参构造函数 public Student() { this.name = "未知"; this.age = 16; } // 带参构造函数,调用无参构造函数 public Student(string name) : this() { this.name = name; } // 实例方法,使用this访问实例成员 public void ShowInfo() { Console.WriteLine("班级:" + className); Console.WriteLine("姓名:" + this.name); Console.WriteLine("年龄:" + this.age); } } class Program { static void Main() { Student s1 = new Student("张三"); Student s2 = new Student(); s1.ShowInfo(); Console.WriteLine("------------------"); s2.ShowInfo(); } } 程序运行结果:___________________ 【答案】 班级:高一(1)班 姓名:张三 年龄:16 ------------------ 班级:高一(1)班 姓名:未知 年龄:16 【解析】 1. 程序定义Student类,包含静态字段className、实例字段name和age,以及静态构造函数、无参构造函数、带参构造函数和实例方法ShowInfo(); 2. 静态构造函数在类加载时执行一次,将className赋值为“高一(1)班”(静态字段所有对象共享,因此s1和s2的className均为此值); 3. 创建s1时,调用带参构造函数Student("张三"),该构造函数通过:this()调用无参构造函数,先将name赋值为“未知”、age赋值为16,再将name修改为“张三”; 4. 创建s2时,调用无参构造函数,将name赋值为“未知”、age赋值为16; 5. 调用ShowInfo()方法,输出班级(静态字段)、姓名和年龄(实例字段),因此输出上述结果。 37. 分析下面C#程序段的输出结果: using System; class Program { static int count = 0; // 静态字段 public Program() { count++; } static void Main() { Program p1 = new Program(); Program p2 = new Program(); Program p3 = new Program(); Console.WriteLine("创建的对象个数:" + count); } } 程序运行结果:___________________ 【答案】创建的对象个数:3 【解析】count是静态字段,所有对象共享同一份;构造函数在创建对象时自动调用,每次调用构造函数都会使count自增1;程序中共创建3个Program对象(p1、p2、p3),count自增3次,最终值为3,因此输出结果为“创建的对象个数:3”。 38. 分析下面C#程序段的输出结果: using System; class Test { static void ShowStatic() { Console.WriteLine("这是静态方法"); } void ShowInstance() { Console.WriteLine("这是实例方法"); } } class Program { static void Main() { Test.ShowStatic(); Test t = new Test(); t.ShowInstance(); } } 程序运行结果:___________________ 【答案】 这是静态方法 这是实例方法 【解析】ShowStatic()是静态方法,无需创建对象,直接通过“Test.ShowStatic()”调用,输出“这是静态方法”;ShowInstance()是实例方法,需先创建Test对象t,再通过“t.ShowInstance()”调用,输出“这是实例方法”,因此输出上述结果。 六、程序改错题(共1题,每题5分,共5分) 39. 下面程序使用this关键字访问类的成员并调用构造函数,但有2处错误,请找出并改正: using System; class Person { string name; int age; // 带参构造函数 public Person(string name, int age) { name = name; // 错误1 this.age = age; } // 无参构造函数,调用带参构造函数 public Person() : this // 错误2 { Console.WriteLine("无参构造函数被调用"); } public void Show() { Console.WriteLine("姓名:" + name + ",年龄:" + age); } } class Program { static void Main() { Person p = new Person("李四", 20); p.Show(); } } 请找出程序中的错误,并写出正确答案。 【答案】 错误1:name = name; 改正:this.name = name; 错误2:public Person() : this 改正:public Person() : this("默认姓名", 18)(参数可合理设置,需与带参构造函数参数列表匹配) 【解析】 1. 错误1:局部变量name与类的实例字段name名称冲突,直接写name = name,赋值的是局部变量自身,未给类的实例字段赋值;需通过this.name指定访问类的实例字段,因此改为this.name = name。 2. 错误2:无参构造函数通过this调用带参构造函数时,语法格式错误,需写this(参数),且参数需与带参构造函数(string name, int age)的参数列表匹配;可设置默认参数(如"默认姓名"、18),因此改为public Person() : this("默认姓名", 18)。 七、程序填空题(共3题,每题5分,共15分) 40. 下面程序使用this关键字访问类的属性并调用构造函数,请填写空白处: using System; class Book { private string title; private double price; // 无参构造函数 public Book() { this.title = "未知书籍"; this.price = 0.0; } // 带参构造函数,调用无参构造函数 public Book(string title, double price) : _____ { _____ = title; // 使用this访问属性 _____ = price; // 使用this访问属性 } public void ShowBookInfo() { Console.WriteLine("书名:" + this.title + ",价格:" + this.price); } } class Program { static void Main() { Book b = new Book("C#程序设计", 59.9); b.ShowBookInfo(); } } 【答案】this(); this.title; this.price 【解析】 1. 第一空:带参构造函数需调用无参构造函数,语法为: this(),因此填this(); 2. 第二空、第三空:需使用this访问类的实例字段title和price,将参数值赋值给实例字段,因此分别填this.title和this.price。 41. 下面程序定义了静态字段和静态方法,请填写空白处: using System; class Calculator { // 静态字段,用于统计计算次数 _____ int count = 0; // 静态方法,实现加法运算 _____ int Add(int a, int b) { count++; return a + b; } // 静态方法,显示计算次数 static void ShowCount() { Console.WriteLine("累计计算次数:" + _____); } } class Program { static void Main() { Console.WriteLine(Calculator.Add(3, 5)); Console.WriteLine(Calculator.Add(10, 20)); Calculator.ShowCount(); } } 【答案】static; static; count 【解析】 1. 第一空:count是静态字段,用于统计计算次数,需用static修饰,因此填static; 2. 第二空:Add()是静态方法,需用static修饰,才能通过“类名.方法名()”调用,因此填static; 3. 第三空:ShowCount()是静态方法,可直接访问静态字段count,因此填count。 42. 下面程序使用this关键字调用成员方法,请填写空白处: using System; class Student { string name; public Student(string name) { this.name = name; _____; // 使用this调用ShowName方法 } public void ShowName() { Console.WriteLine("学生姓名:" + _____); // 使用this访问name字段 } } class Program { static void Main() { Student s = new Student("王五"); } } 【答案】this.ShowName(); this.name 【解析】 1. 第一空:需使用this调用本类的实例方法ShowName(),语法为this.ShowName(),因此填this.ShowName(); 2. 第二空:需使用this访问本类的实例字段name,将其拼接输出,因此填this.name。 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第59卷 算法与程序设计—关键字与构造函数—河北省计算机类—考纲百套卷-第1页
1
第59卷 算法与程序设计—关键字与构造函数—河北省计算机类—考纲百套卷-第2页
2
第59卷 算法与程序设计—关键字与构造函数—河北省计算机类—考纲百套卷-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。