moocC#面向对象程序设计_2章节答案(mooc完整答案)

分类: 学历类题库发布于:2024-06-02 17:10:32ė33838次浏览649条评论

moocC#面向对象程序设计_2章节答案(mooc完整答案)

第1章 了解.NET框架

单元测试:了解.NET框架

1、向对象程序设.NET框架包括以下哪个部分内容
A、计章节答BVL
B、案m案BCL
C、整答CLR
D、向对象程序设CLV

2、计章节答设置环境变量的案m案批处理工具是
A、vsvars32.bat
B、整答PE
C、向对象程序设CMD
D、计章节答VS.exe

3、案m案C#项目必要文件包括
A、整答.cs文件
B、向对象程序设.csproj文件
C、计章节答.avi文件
D、案m案.vb文件

4、C#编译经历了以下哪些过程
A、C#编译器
B、JIT编译器
C、C#源文件
D、本机代码

单元作业:了解.NET框架

1、文字说明c#程序编译过程

第2章 C#编程入门

单元测试:C#编程入门

1、c#程序的入口方法名称是
A、Init()
B、main()
C、Main()
D、run()

2、手工编译c#程序的工具是
A、vsvars32.bat
B、cs.exe
C、csc.exe
D、cmd.exe

3、可以启动C#集成工具编译程序功能的项目浏览器右键菜单命令是
A、Debug
B、生成
C、打开
D、工具

4、Console.WriteLine(" + { 1} = { 2} ",1,2,3)输出结果是
A、3 = 3
B、1 = 2
C、1 + 1 = 3
D、1 + 2 = 3

单元作业:C#编程入门

1、使用手工编译方式建立命令行项目两种方式,将下面的程序编译后,在命令行运行并输出结果,提交编译截屏。 using System; namespace Chapter2 { class Program { public static void Main() { Console.WriteLine("{ 0:d}",123.12); // Console.WriteLine命令行上打印输出内容 } } }

第3章 使用常见类型

单元测试:使用常见类型

1、以下数据类型中不可以使用算术运算运算的是( )
A、bool
B、char
C、decimal
D、sbyte

2、以下数据类型不能表示负数范围的是( )
A、sbyte
B、decimal
C、double
D、unit

3、在C#中,表示一个字符串的变量应使用以下哪条语句定义( )
A、CString str;
B、string str;
C、Dim str as string;
D、char * str;

4、下面属于合法变量名的是( )
A、P_qr
B、123mnp
C、char
D、x-y

5、在C#语言中,下列能够作为变量名的是( )
A、if
B、3ab
C、a_3b
D、a-bc

单元作业:使用常见类型

1、使用手工编译方式,将下面的程序编译后,在命令行运行并输出结果,提交编译截屏。 using System; namespace Ex3 { public class Abs { public static void Main() { int a=0, b=0, s=0; double c=0, d=0, sd=0; string str=” ”; s=a+b; sd=c*d; str=str+a; Console.WriteLine(" { 1} { 2}", s, sd, str); } } }

第4章 表达式和运算符

单元测试:表达式和运算

1、有double x=8.8,y=4.4,则表达式(int)x – y / y的值是( )
A、7
B、7.0
C、7.5
D、8.0

2、请问经过表达式a = 3 + 1 > 5 ? 0 : 1的运算,变量a的最终值是( )
A、4
B、0
C、1
D、3

3、下列哪个运算符可用于字符串的连接( )
A、+
B、*
C、-
D、/

4、C#中,执行下列语句变量x和y的值是( )。 int x=100; int y=++x;
A、x=100 y=100
B、x=101 y=100
C、x=100 y=101
D、x=101 y=101

5、在C#中,下列代码运行后,变量Max的值是( ) int a = 5,b = 10,c = 15,Max = 0; Max = a > b ? a : b; Max = c < Max ? c : Max;
A、0
B、5
C、10
D、15

单元作业:表达式和运算符

1、使用手工编译方式,将下面的程序编译后,在命令行运行并输出结果,提交编译截屏。 class Test { static void Main(string [] args) { int x = 5; int y = x++; System.Console.Write (y + “ ”); y = ++x; System.Console.WriteLine(y); } }

第5章 掌握类的基本概念

单元测试:掌握类的基本概念

1、定义一个类需要使用哪个关键字( )
A、virtual
B、abstract
C、new
D、class

2、分部方法可以使用的返回类型为( )。
A、void
B、int
C、string
D、float

3、C#那种类型是不能显式使用的( )。
A、值类型
B、引用类型
C、指针
D、指令

4、类的主要成员包括那些( )。
A、字段
B、方法
C、属性
D、类别

单元作业:掌握类的基本概念

1、掌握类的基本概念 设计一个person类,实现其中的字段、方法、属性

第6章 使用类的方法

单元测试:使用类的方法

1、下列哪一个不属于程序控制关键字( )。
A、for
B、switch
C、else
D、new

2、在调用方法时可以传入个数不同实参的是( )。
A、引用参数
B、参数数组
C、命名参数
D、输出参数

3、那种返回类型可以不显式的使用return关键字( )。
A、void
B、int
C、string
D、float

4、哪种不能定义为方法签名不同( )。
A、形参个数
B、形参类型
C、返回值
D、形参顺序不同

单元作业:使用类的方法

1、尝试开发一个程序,要求自定义一个结构,该结构中包含圆的半径及圆面积的方法,然后在main方法中调用自定义的结构求指定半径的圆面积。

第7章 掌握类的高级概念

单元测试:掌握类的高级概念

1、C#中TestClass为一自定义类,其中有以下属性定义 public void Property{ …} 使用以下语句创建了该类的对象,并使变量obj引用该对象: TestClass obj=new TestClass( ); 那么,可通过什么方式访问类TestClass的Property属性( )。
A、TestClass.Progerty;
B、TestClass. Property();
C、obj. Property;
D、obj. Property();

2、以下类MyClass的属性Count属于( )属性。 class MyClass { int i; Public int Count { get{ return i; } } }
A、只读
B、只写
C、可读写
D、不可读不可写

3、在C#语言中,下列关于属性的描述正确的是( )。
A、属性就是以public关键字修饰的字符
B、属性是访问字段值的一种简单的形式,属性更好地实现了数据的封装和隐藏
C、要定义只读属性只需在属性名前加上readonly关键字
D、属性不可以使用virtual、override和public限定符

4、下列关于构造函数的描述中,哪个选项是正确的?( )。
A、构造函数必须与类名相同
B、构造函数不可以用private修饰
C、构造函数不能带参数
D、构造函数可以声明返回类型

5、下列关于C#中索引器理解正确的是( )。
A、索引器的参数必须是两个或两个以上
B、索引器的参数类型必须是整数型
C、索引器没有名字
D、以上皆非

6、下面的C#代码实现一个索引器: class TestIndex{ public int[]Elements=new int[100]; public intElements[int index] { get{ returnElements[index];} set{ Elements[index]=value;} } } class Class1{ static voidMain(string[]args){ TestIndext i=new TestIndex(); int cnt=0; for(cnt=o;cnt<5;cnt++) { ti.Elements[cnt]=cnt*cnt;} for(cnt=0;cnt<5;cnt++) { Console.WriteLine(ti[cnt].ToString());} Console.ReadLine(); } } 代码最后执行结果为( )。
A、输出:014916
B、代码“public intElements[intindex]”不正确
C、代码“Console.WriteLine(ti[cnt].ToString());”不正确
D、输出:491625

单元作业:掌握类的高级概念

1、作业题1 1. 编写一个关于学员的类(Student)其中学员包含学号,姓名,年龄三个成员变量, 题目具体要求说明: 1) 学生学号:只能读取,不能输入,初始学号在构造函数中赋值。 2) 学员姓名:可以读取,也可以输入。 3)学员年龄:可以读取,但是年龄的值必须在0-120之间才能输入,。 4)调用该类,在Main函数中完成对三个变量被允许的操作。(具体允许的操作已经在(1)、(2)、(3)中说明)。

第8章 掌握类的继承

单元测试:掌握类的继承

1、下列关于C#中继承的描述,错误的是( )。
A、一个派生类可以有多个基类
B、通过继承可以实现代码重用
C、派生类还可以添加新的特征或修改已有的特征以满足特定的要求
D、继承是指基于已有类创建新类

2、下列关于抽象类的说法错误的是( )。
A、抽象类可以实例化
B、抽象类可以包含抽象方法
C、抽象类可以包含非抽象成员
D、抽象类可以派生出新的抽象类

3、以下关于继承的说法错误的是( )。
A、一个类只能继承一个基类
B、派生类不能直接访问基类的私有成员
C、protected修饰符既有公有成员的特点,又有私有成员的特点
D、基类对象不能引用派生类对象

4、派生类访问基类的成员,可使用( )关键字。
A、base
B、this
C、out
D、external

5、在C#中利用sealed修饰的类( )。
A、密封,不能继承
B、密封,可以继承
C、表示基类
D、表示抽象类

单元作业:掌握类的继承

1、定义一个交通工具抽象类Antomobile,其中包含一个行驶的抽象方法Move(),并通过小轿车Car类去实现抽象方法,并通过Main函数调用实现后的Move()方法。

第9章 使用接口

单元测试:使用接口

1、在C#中定义接口时,使用的关键字是( )。
A、interface
B、:
C、class
D、overrides

2、在C#中定义派生类时,指定其基类应使用的语句是( )。
A、interface
B、:
C、class
D、overrides

3、在接口的成员中,不能包含( )。
A、属性
B、方法
C、事件
D、常量

4、下列关于C#面向对象应用的描述中,哪项是正确的( )。
A、派生类是基类的扩展:派生类可以添加新的成员,也可去掉已经继承的成员
B、abstract方法的声明必须同时实现
C、声明为sealed的类不能被继承
D、接口像类一样,可以定义并实现方法

5、下列关于多态的说法中,哪个选项是正确的( )。
A、重写虚方法时可以为虚方法指定别称
B、抽象类中不可以包含虚方法
C、虚方法是实现多态的唯一手段
D、多态性是指以相似的手段来处理各不相同的派生类。

6、下列关于接口的说法,哪项是正确的( )。
A、接口可以被类继承,本身也可以继承其他接口
B、定义一个接口,接口名必须使用大写字母I开头
C、接口像类一样,可以定义并实现方法
D、类可以继承多个接口,接口只能继承一个接口

7、以下关于接口的说法,不正确的是( )。
A、接口不能实例化
B、接口中声明的所有成员隐式地为public和abstract
C、接口默认的访问修饰符是private
D、继承接口的任何非抽象类型都必须实现接口的所有成员

8、在C#中,关于接口下面说法错误的是( )。
A、接口是一组规范和标准
B、接口可以约束类的行为
C、接口中只能含有未实现的方法
D、接口中的方法可以指定具体实现,也可以不指定具体实现

单元作业:使用接口

1、2. 已知:接口Interface1, Interface2, Class1的代码如下所示, 题目具体要求说明: 1) 请通过一个新的类Class2,实现对上述两个接口和一个类的多重继承。 2) 并在Main方法中完成对Name的调用,对Add和Mul的调用,Hello方法的调用。 3) 打印输出加法和乘法运算的值,可以自定义参数值,或从键盘输入均可。 interface Interface1 { int Add(int a, int b);//加法运算 int Mul(int a, int b);//乘法运算 } interface Interface2 { string Name { get; set; } } class Class1 { public void Hello(string name) { Console.WriteLine("你好:" + name); } }

第10章 使用结构体

单元测试: 使用结构体

1、c#表示结构的关键字是
A、class
B、sturct
C、struct
D、structure

2、关于struct描述正确的是
A、struct不可以实现interface
B、struct可以包括无参数的默认构造函数
C、struct可以继承class
D、struct可以包括静态构造函数

3、C#中结构成员修饰符可以包括
A、public
B、protected
C、virtual
D、abstract

单元作业:使用结构体

1、使用结构方式,定义圆形结构,并通过实现下面的接口来计算其面积。提交代码截屏。 public interface Shape { double GetArea(); }

第11章 使用枚举

单元测试:使用枚举

1、c#中声明枚举的关键字是
A、enum
B、Enumeration
C、Iterate
D、Let

2、下面的程序输出结果是 using System; namespace Chapter11 { [Flags] enum MyColor { Empty = 0x03, //使用16进制表示整数1,对应二进制为0000 0000 0000 0000 Red = 0x02, // 使用16进制表示整数1,对应二进制为0000 0000 0000 0001 Blue = 0x01, // 使用16进制表示整数2,对应二进制为0000 0000 0000 0010 Black = 0x00 // 使用16进制表示整数3,对应二进制为0000 0000 0000 0011 } class Program { static void Main(string[] args) { MyColor mc1 = MyColor.Red | MyColor.Blue; MyColor mc2 = MyColor.Red | MyColor.Blue; bool isUsedRed1 = (mc1 & MyColor.Red) == MyColor.Red; bool isUsedRed2 = mc2.HasFlag(MyColor.Red); Console.WriteLine(",{ 1}", isUsedRed1,isUsedRed2); } } }
A、True,True
B、True,False
C、False,True
D、False,False

3、关于枚举类型描述正确的是
A、编译器默认给每个枚举成员赋值一个整数变量
B、Flags特性的作用是通知编译器该枚举值不仅可以单独使用,也可以按位标志组合
C、编译器默认给每个枚举成员赋值首项为1
D、枚举可以进行加法运算

单元作业:使用枚举

1、补充完整下面的程序,完整程序能够让程序循环输出月份信息字符串。提交截屏。 using System; namespace Chapter11 { enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; class Program { static void Main(string[] args) { foreach (string str in ___________ (typeof( Months ))) Console.WriteLine(str); } } }

第12章 使用数组

单元测试:使用数组

1、下面哪一种数组声明形式是正确的( )
A、int[] myArray=new int[5] { 1,3, 14};
B、int[] myArray=new int[2] { 1,3, 14};
C、int[3] myArray=new int[] { 1,3, 14};
D、int[] myArray=new int[3] { 1,3, 14};

2、此数组int[ ][ , , ][ , ][]是几维数组( )
A、1维
B、2维
C、3维
D、4维

3、下边哪条语句可以表示int[,] myArray={ { 1,2,3},{ 2,3,4}};的列数( )
A、myArray.Length;
B、myArray.Length(0);
C、myArray.Length(1);
D、myArray [1].Length

4、下列对于foreach语句的说法错误的是( )
A、foreach语句可对数组中的元素进行遍历
B、使用foreach语句遍历多维数组元素时,无须知道其各维的长度
C、可使用foreach对数组中的元素进行改写
D、foreach语句有时可以替代for语句实现的功能

5、下列哪个选项能正确地创建数组( )
A、int[,] array = int[4,5];
B、int size=int.Parse(Console.ReadLine()); int[] pins=new int[size];
C、string[] str=new string[];
D、int pins[] = new int[2];

单元作业:使用数组

1、使用手工编译方式,将下面的程序编译后,在命令行运行并输出结果,提交编译截屏。 class Test { tatic void Main(string[] args) int[]age=new int[]{ 16,18,20,14,22}; foreach(int i in age) { if(i > 18) continue; Console.Write(i + ","); } }

第13章 使用委托

单元测试:使用委托

1、声明委托使用什么关键字( )。
A、delegate
B、new
C、fuc
D、void

2、下列哪种方法不能初始化委托变量( )。
A、对象的实例方法
B、静态方法
C、匿名表达式
D、delegate关键字

3、下列哪种方法需要=>运算符( )。
A、静态方法
B、匿名方法
C、Lambda表达式
D、对象的实例方法

单元作业:使用委托

1、有个高档的热水器,包含一个加热器,一个报警器和一个现实屏,我们给热水器它通上电,当水温超过95度的时候: 1、报警器会开始发出语音,告诉你水的温度; 2、液晶屏也会改变水温的显示,来提示水已经快烧开了。 请使用观察者模式Observer表述上述三个关系,并在main方法里进行测试。

第14章 事件

单元测试:事件

1、事件是基于哪种OOP技术的( )。
A、委托
B、异常处理
C、继承
D、多态

2、使用事件不包括( )。
A、定义事件
B、订阅事件
C、触发事件
D、销毁事件

3、事件访问器被命名为( )。
A、get和set
B、add和remove
C、namespace
D、void

单元作业:事件

1、有一家三口,妈妈负责做饭,爸爸和孩子负责吃。。。将这三个人,想象成三个类。 妈妈有一个方法,叫做“做饭”。有一个事件,叫做“开饭”。做完饭后,调用开发事件,发布开饭消息。 爸爸和孩子分别有一个方法,叫做“吃饭”。 在main方法里,将爸爸和孩子的“吃饭”方法,注册到妈妈的“开饭”事件。也就是,订阅妈妈的开饭消息。让妈妈做完饭开饭时,发布吃饭消息时,告诉爸爸和孩子一声。

第15章 类型转换

单元测试:类型转换

1、下述类型中,可隐式转换为short型的是( )
A、int
B、long
C、double
D、sbyte

2、下列说法中正确的是( )
A、父类可通过隐式转换为子类
B、拆箱就是把值类型转换成引用类型,装箱就是把引用类型转换成值类型
C、自定义转换使用explicit关键字时,可完成目标类型与源类型的隐式转换
D、可通过强制转换完成由int型到long型的转换

3、进行自定义转换的方法头不需要包括关键字( )
A、public
B、static
C、operator
D、virtual

4、使用了下述哪个关键字,代表进行了自定义的显式转换( )
A、implicit
B、public
C、void
D、explicit

5、关于对下述程序的描述正确的是( ) public static implicit operator Complex (int array) { return new Complex(array, 0); }
A、将Complex类型转换为int型
B、将int类型转换为Complex型
C、完成运算符重载的功能
D、返回一个整型数值

单元作业:类型转换

1、下述程序是对+、-、*运算符的重载,请将 处补充完整: class Complex { private int real; private int imag; public Complex(int real, int imag) { _____________ this.imag = imag; } public static Complex operator +(Complex c1, Complex c2)// 重载+ { return new Complex(c1.real + c2.real, c1.imag + c2.imag); } public static Complex operator -(Complex c1, Complex c2)// 重载- { return new Complex(c1.real - c2.real, c1.imag - c2.imag); output += " + " + imag + "i"; output += " - " + (-imag) + "i"; } public static Complex operator *(Complex c1, Complex c2)// 重载* { return new Complex(c1.real * c2.real - c1.imag * c2.imag, c1.real * c2.imag + c1.imag * c2.real); } public override string ToString()//完成对ToString函数的重载 { string output = real.ToString(); if (imag >= 0) { __________________________; } else { __________________________; } return output; } }

第16章 异常处理

单元测试:异常处理

1、在C#中,程序使用( )语句抛出系统异常
A、run
B、throw
C、catch
D、finally

2、C#中,在方法MyFunc内部的try…catch语句中,如果在try代码块中发生异常,并且在当前的所有catch块中都没有找到合适的catch块,则( )
A、忽略该异常
B、马上强制退出该程序
C、继续在MyFunc的调用堆栈中查找提供该异常处理的过程
D、马上抛出一个新的“异常处理未找到”的异常

3、为了能够在程序中捕获所有的异常,在catch语句的括号中使用的类名为( )
A、Exception
B、DivideByZeroException
C、FormatException
D、以上三个均可

4、下面对异常说法不正确的是( )
A、try/catch块为基本引发异常的组合
B、在捕获异常时,可以有多个catch块
C、无论异常是否发生,finally块总会执行
D、try块和 finally块不能连用

5、通过继承( )类,用户可以创建自己的异常类
A、System.Exception
B、System.SystemException
C、System.ApplicationException
D、System.UserException

单元作业:异常处理

1、使用手工编译方式,将下面的程序编译后,在命令行运行并输出结果,提交编译截屏。 using System; public class ExceptionApp1 { public static void Main() { int[] a = { 4, 8, 16, 32, 64, 128, 256 }; int[] b = { 1, 0, 2, 4, 0 }; for (int i = 0; i < a.Length; i++) { try { Console.Write(a[i] + " / " + b[i] + " = "); Console.WriteLine(a[i] / b[i]); } catch (DivideByZeroException) { Console.WriteLine("can't divide by 0"); } catch (Exception ex) { Console.WriteLine(ex.TargetSite); Console.WriteLine(ex.GetType()); Console.WriteLine(ex.Message); } finally { Console.Write("---------------------"); } Console.WriteLine(" ", i + 1); } Console.WriteLine(); } }

学习通C#面向对象程序设计_2

在C#编程语言中,面向对象编程是非常重要的概念,因为它是C#语言的核心。学习面向对象编程可以帮助我们更好地理解C#编程语言及其底层原理,进而提高我们的编程能力和应用开发水平。

面向对象编程的基本概念

面向对象编程是一种编程范式,它将现实世界中的实体抽象为对象,并通过类来描述对象的属性和行为。在C#中,类是一个基本的编程单元,它可以包含属性、方法、构造函数等成员,用于描述一类对象的特征和行为。

在面向对象编程中,有三个重要的概念,分别是封装、继承和多态。

封装

封装是指将对象的内部状态和行为隐藏起来,只对外提供一些公共的接口方法,让外部只能通过这些接口方法来访问对象的属性和行为。这样可以有效地保护对象的内部状态,防止外部对对象的误操作和误用,提高了程序的安全性和稳定性。

继承

继承是指一个类可以从另一个类继承它的属性和方法,并在此基础上进行扩展。通过继承,我们可以在不改变原有类的基础上,将其扩展为新的类,提高代码的复用性和可维护性。

多态

多态是指同一种类型的对象,在不同的情况下可以表现出不同的行为。在面向对象编程中,多态是通过继承和重写实现的。通过多态,我们可以实现代码的灵活性和可扩展性,提高程序的效率和可维护性。

C#面向对象编程的实现

在C#中,我们可以通过定义类、实例化对象、访问成员等方式来实现面向对象编程。

定义类

在C#中,可以使用class关键字来定义一个类,格式如下:

class 类名{ //类成员}

其中,类名可以是任何合法的标识符,类成员可以包括字段、属性、方法、构造函数等。

实例化对象

在C#中,可以使用new关键字来实例化一个对象,格式如下:

类名 对象名 = new 类名();

其中,类名是要实例化对象所属的类,对象名是要创建的对象的名称。

访问成员

在C#中,可以使用成员访问符来访问对象的成员,格式如下:

对象名.成员名

其中,对象名是要访问的对象的名称,成员名是要访问的成员的名称,可以是属性名、方法名、字段名等。

C#面向对象编程的实例

下面是一个简单的C#程序,用来实现一个学生类:

class Student{ //字段 private string name; private int age; private int score; //属性 public string Name { get { return name; } set { name = value; } } public int Age { get { return age; } set { age = value; } } public int Score { get { return score; } set { score = value; } } //方法 public void Study() { Console.WriteLine(\学生正在学习...\ } public void Run() { Console.WriteLine(\学生正在跑步...\ }}class Program{ static void Main(string[] args) { //实例化对象 Student student = new Student(); //访问成员 student.Name = \张三\ student.Age = 18; student.Score = 90; Console.WriteLine(\姓名:\ + student.Name); Console.WriteLine(\年龄:\ + student.Age); Console.WriteLine(\分数:\ + student.Score); student.Study(); student.Run(); }}

在上面的程序中,我们定义了一个学生类Student,包括三个私有字段name、age、score,三个公共属性Name、Age、Score,以及两个公共方法Study、Run。在Main方法中,我们通过实例化对象student来访问类的成员,设置和获取学生的姓名、年龄和分数,以及调用学生的学习和跑步方法。

总结

C#面向对象编程是一种重要的编程范式,通过封装、继承和多态等概念,可以帮助我们更好地理解C#语言及其底层原理,提高我们的编程能力和应用开发水平。在实际应用中,我们可以通过定义类、实例化对象、访问成员等方式来实现面向对象编程,提高程序的效率和可维护性。



Ɣ回顶部