《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.只有私有构造函数的类

  1. 关千接口和抽象类,下列说法中正确的是 ( )。

A.接口不能创建对象,而抽象类可以
++B.接口不能包含字段, 而抽象类可以++

C.抽象类中的方法必须是抽象方法

D.接口中的方法也可以有实现代码

10.关于 finally 代码段,下列是说法正确的是 ( )。

A.仅在程序正常时执行

B.仅在程序发生异常时执行

C.在程序发生异常时会被跳过
++D.无论程序是否发生异常都会被执行++

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

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

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

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

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

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

相关推荐
全栈开发圈几秒前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫
面试鸭5 分钟前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展
小白学大数据5 分钟前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
Python大数据分析@9 分钟前
python操作CSV和excel,如何来做?
开发语言·python·excel
上海_彭彭34 分钟前
【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
开发语言·python·sql·测试工具·element
3345543242 分钟前
element动态表头合并表格
开发语言·javascript·ecmascript
沈询-阿里1 小时前
java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl
java·开发语言
残月只会敲键盘1 小时前
面相小白的php反序列化漏洞原理剖析
开发语言·php
ac-er88881 小时前
PHP弱类型安全问题
开发语言·安全·php