一、单项选择题
1.short 类型的变量在内存中占据的位数是 ( )。
A. 8
++B. 16++
C. 32
D. 64
2.对千 int[ 4,5]型的数组 a, 数组元素 a[2,3] 存在数组第 ( )个位置上。
A. 11
B. 12
++C. 14++
D. 15
3.设 int 类型变量 x,y,z 的值分别是2、3、6 , 那么执行完语句(z=y=x=z) 后他们的值为 ( )。
A. 2,3,6
B. 2,2,2
++C. 6,6,6++
D. 3,3,3
4.以下说法中不正确的是 ( )。
A.构造函数和析构函数都不能有返回值
B.构造函数可以是静态的
++C. 一个类只能有一个构造函数++
D.一个类只能有一个析构函数
5.以下不属千object 类型的成员方法是 ( )。
A.ToString() ++B.Dispose()++ C.Equals() .GetType()
6.语句ReadLine()方法用来从控制台的键盘上,读取( ),直到用户按下Enter键它才会放回。
++A.一行字符++ B.一个字符
7.下面代码:
X=2;
Y=X++;
Console.Write (X);
Console.Write (Y);
完成后,最后值为:
++A.32++ B.33 C.23 D.22
8.下列能够被创建对象的是 ( )。
A.接口
B.抽象类
++C.委托++
D.只有私有构造函数的类
- 关千接口和抽象类,下列说法中正确的是 ( )。
A.接口不能创建对象,而抽象类可以
++B.接口不能包含字段, 而抽象类可以++
C.抽象类中的方法必须是抽象方法
D.接口中的方法也可以有实现代码
10.关于 finally 代码段,下列是说法正确的是 ( )。
A.仅在程序正常时执行
B.仅在程序发生异常时执行
C.在程序发生异常时会被跳过
++D.无论程序是否发生异常都会被执行++
11.C#中的值类型分为三种:
++A.简单类型、结构类型和枚举类型++B.整数、小数、布尔类型 C.结构类型、枚举类型、类类型
12.C#语言是一种类型安全的、现代的、简单的,由C和C++衍生处理的的( )的编程语言。
A.面向接口 B.面向过程 ++C.面向对象++ D.面向剖面
- C#语言是由美国的哪一个公司发明的?
A.谷歌 ++B.微软++ C.IBM D.Oracle
14.WriteLine()的方法的作用是:
A.从键盘上接收一个字符
B.从键盘上接收一行信息
C.将信息输出到键盘上
++D.将信息输出到屏幕上,并自动换行++
15.语句Console.WriteLine("{0:n2}",12.345) 输出结果是: [单选题] *
A.12.345
B.12.3
++C.12.35++
D.12.34
16.整数7除以3,商为2,余数为1,下面说法正确的是: *
++A.用/取商,用%取余++
B.用\取商,用%取余
C.用%取商,用/取余
17.while 语句循环结构和do...while语句循环结构的区别在于:
A.while语句的执行效率较高
B.do...while的语句编程程序较复杂
++C.无论条件是否成功,do...while语句至少执行一次循环体++
D.do...while循环是先执行循环体,后判断条件表达式是否成立,而while语句是先判断条件表达式,再决定是否执行循环体,两者的实际执行效果是一样的
- 关于break和continue和goto语句描述正确的:
A.continue语句用于终止并退出当前循环
++B.使用break语句只可以跳出外围最近的一层循环++
C.使用goto语句可以方便地跳出多重循环,因而编程时尽可能多地使用goto语句
二、填空题
1.一般将类的构造方法声明为(公有 public )访问权限。如果声明为 private, 就不能创建该类
的对象。
2.在方法定义中, virtual 含义:(虚方法 )。
3.C#数组元素的下标从(0 )开始。
4.元素类型为 double 的 2 行 5 列的二维数组共占用(80)字节的存储空间。
5.对于方法,参数传递分为值传递和(引用传递)两种。
6.传入某个属性的 SET 方法的隐含参数的名称是(value)。
7.能用 foreach 遍历访问的对象需要实现( IEnumerable) 接口。
8.委托声明的关键字是 ( delegate )。
9.C#的类不支持多重继承, 但可以用( 接口 Interface)来实现。
10.C#中所有的类型实质上都是从( object )类派生而来的。
三、判断题(正确打√, 错误打 X )
1.不能指定接口中方法的修饰符。 ( √ )
2.DotNet 包含两个部分,即公共语言运行时和框架类库。 (X )
3.在同一行上可以书写多条语句,每条语句间用分号分隔。 (√ )
4.在数据类型转化时,只能通过类型转换关键字或 Convert 类实现。 ( X )
5.在定义数组时不允许为数组中的元素赋值。 ( X )
6.定义枚举时至少为其中的一个枚举成员赋值。 ( X )
7.通过类的继承,保证对象品种的传承;通过接口继承,保证对象技能的增强。 (√ )
8.委托是将方法作为参数传递给另一方法的一种数据类型,事件与委托没有关系。 ( X )
9.如果要实现重写,在基类的方法中必须使用 virtual 关键字,在派生类的方法中必须使用
override关键字。 ( √ )
10.在 C#类中, this 代表了当前类本身。 ( X )
四、读代码回答问题
1.现实生活当中的插头(Plug)与插座(Socket),国家为其建立了国家标准;厂家生产的插头和插座要和国家标准匹配;生产厂家虽然有很多,但都要符合国家标准。厂家的具体工艺及实现方法,可以有所不同。插头与插座也许分属不同品牌,但可以共同作用,可完成插头与插座的连接匹配及电流传导相关测试。
cs
using System;
namespace InterfaceInOutDemo
{
interface ISocket
{
void JoinPlug(IPlug plug);
}
interface IPlug
{
int EQuantity { get; set; }
}
public class Socket:ISocket
{
void ISocket.JoinPlug(IPlug plug)
{
Console.WriteLine("插座接收到插头的电流:"+plug.EQuantity);
}
}
public class Plug : IPlug
{
private int eQuantity;
int IPlug.EQuantity
{
get
{
return eQuantity;
}
set
{
eQuantity = value;
Console.WriteLine("插头向插座输出电流:" + eQuantity);
}
}
}
class Program
{
static void Main(string[] args)
{
Plug pg = new Plug();
Socket sk = new Socket();
((IPlug)pg).EQuantity = 120;
((ISocket)sk).JoinPlug(pg);
}
}
}
请用引喻的方法描述解读上方的代码:
2.下方代码课堂演练过:
cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EventDemo
{
//public delegate void MsgHandler(string msg);
public class PinDuoDuo
{
public event Action<string> msgHandler;
public void Order(User user)
{
Console.WriteLine("{0}已拼单", user.Name);
msgHandler += user.OnMessage;
}
public void UnOrder(User user)
{
Console.WriteLine("{0}取消拼单", user.Name);
msgHandler -= user.OnMessage;
}
public void ShipGoods(string msg)
{
Console.WriteLine("发货");
msgHandler?.Invoke(msg);
}
}
public class User
{
public User(string name)
{
Name = name;
}
public string Name { get; set; }
public void OnMessage(string msg)
{
Console.WriteLine("{0}收到消息:{1}", Name, msg);
}
}
public class Program
{
public static void Main()
{
PinDuoDuo pdd = new PinDuoDuo();
User zs = new User("张三");
User lisi = new User("李四");
User wmz = new User("王麻子");
pdd.Order(zs);
pdd.Order(lisi);
pdd.Order(wmz);
pdd.UnOrder(lisi);
pdd.ShipGoods("货已发出");
}
}
}
问题1:请解释代码
Action<string>
的含义.
问题2:假如上述代码是
Func<int,string>
请解释含义。
问题3:请解释代码
msgHandler += user.OnMessage;
的含义。
问题4: 请解释代码
msgHandler?.Invoke(msg);
的含义。
问题5:请解释代码
User zs = new User("张三");
的含义。
问题6:请解释代码
pdd.Order(zs);
的含义。
问题7:请解释代码
pdd.UnOrder(lisi);
的含义。
问题8:请解释代码
pdd.ShipGoods("货已发出");
的含义。
五.写代码:
利用循环语句显示出 1-100之间同时能被7整除和能被3整除的数据序列(注:只写出Main函数中的关键代码即可)。