《C#程序设计教程》总复习

  
一、单项选择题
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.只有私有构造函数的类
 
9. 关千接口和抽象类,下列说法中正确的是 (    )。
A.接口不能创建对象,而抽象类可以    
B.接口不能包含字段, 而抽象类可以
C.抽象类中的方法必须是抽象方法    
D.接口中的方法也可以有实现代码
 
10.关于 finally 代码段,下列是说法正确的是 (    )。
A.仅在程序正常时执行    
B.仅在程序发生异常时执行
C.在程序发生异常时会被跳过    
D.无论程序是否发生异常都会被执行

11.C#中的值类型分为三种:

A.简单类型、结构类型和枚举类型  B.整数、小数、布尔类型  C.结构类型、枚举类型、类类型

12.C#语言是一种类型安全的、现代的、简单的,由C和C++衍生处理的的(       )的编程语言。

A.面向接口  B.面向过程  C.面向对象  D.面向剖面

13. 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语句是先判断条件表达式,再决定是否执行循环体,两者的实际执行效果是一样的

18. 关于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 代表了当前类本身。 (   )
 
四、读代码回答问题

1.现实生活当中的插头(Plug)与插座(Socket),国家为其建立了国家标准;厂家生产的插头和插座要和国家标准匹配;生产厂家虽然有很多,但都要符合国家标准。厂家的具体工艺及实现方法,可以有所不同。插头与插座也许分属不同品牌,但可以共同作用,可完成插头与插座的连接匹配电流传导相关测试。

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.下方代码课堂演练过:

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 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
的含义.

问题2:假如上述代码是
Func
请解释含义。

问题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函数中的关键代码即可)。

 
 

你可能感兴趣的:(开发语言,c#)