C#测试题

DOTNET软件工程师C#基础测试题(一)

 

1.  C#的数据类型分为   值类型      引用类型    。(2分)

2.  C#提供的字符类型采用了国际上公认的   unicode   标准字符集。(1分)

3.  使用关键字  sealed   声明某个类时,编译器将禁止所有类继承该类。(1分)

4.     partial   关键字允许在一个文件里定义一个类的某部分然后在另一个文件里添加这个类的更多定义。(1分)

5.  通过使用_   base____关键字,派生类构造函数可以调用具有特定方法签名的基类构造函数。(1分)

6.  请看如下的代码段:(2分)
long l = 300.0;
int i = (int)l;
这是  b  
a、隐式转换  b、显式转换

7.  当出现了一个无效的数组参数时,会引发一个__ c __异常。(2分)
a
ArgumentNullException     bStackOverFlowException
c
IndexOutOfRangeException  d FileLoadException

8.  请输出以下程序运行的结果(10分)
class StaticTest
{
    static int x = 0;
    int y = 0;
     public void SetX(int a)
     {
          x = a;
     }
     public void SetY(int a)
     {
          y = a;
     }
     public void Print()
     {
          Console.WriteLine("x = {0}  y = {1}", x, y);
     }
     static void Main(string[] args)
     {

          StaticTest st = new StaticTest();
          st.SetX(10);
          st.SetY(10);
          st.Print();                   
输出:x=10 y=10
          StaticTest st1 = new StaticTest();
          st1.SetX(20);
          st1.SetY(20);
          st1.Print();                 
输出:x=20 y=20

          st.Print();                 
输出:x=10 y=20

          st.SetX(30);
          st.SetY(30);
          st.Print();                 
输出:x=30 y=30

          st1.Print();                 输出:x=30 y=20

      }

}

结果?    考察静态变量    赋值后保持结果不变

9.   输出以下程序的结果(5分)
public  class Rec
{

   
public static void f(int n)
    {
       if (n >= 1)
          f(n - 1);
       Console.WriteLine(n);
    }
    static void Main(string[] args)
    {
        Rec.f(3);
    }
}
结果?0  1  2  3

解析:递归函数

 

10.输出以下程序的结果(5分)
class test
{
    public int ID = 0;
    public string Name = "";
}
struct Student
{
    public int ID;
    public string Name;
}

class Program
{
    static void Main(string[] args)
    {
          Student student = new Student();
          student.ID = 10;
          student.Name = "tom";

          Student student1 = student;
          Student student2 = new Student();
          student2.ID = 10;
          student2.Name = "tom";
          if (student.Equals(student1))
              Console.WriteLine("student == student1");
          else
 
             Console.WriteLine("student != student1");
          if (student.Equals(student2))
              Console.WriteLine("student == student2");
          else
              Console.WriteLine("student != student2");
          test test = new test();
          test.ID = 10;
          test.Name = "tom";
          test test1 = test;
          test test2 = new test();
          test2.ID = 10;
          test2.Name = "tom";
          if (test.Equals(test1))
              Console.WriteLine("test == test1");
          else
              Console.WriteLine("test != test1");
          if (test.Equals(test2))
              Console.WriteLine("test == test2");
          else
              Console.WriteLine("test != test2");
    }

结果?student == student1
      student == student2

               test == test1

               test != test2

        解析:class是引用类型比较的是地址     struct是值类型比较的是实际值

11.程序设计:输出1~100之间的素数。(10分)

    tatic void Shusu()

        {

            int i, j;

            for (i = 2; i <= 10; i++)

            {

                bool bo = true;

                for (j = 2; j <i; j++)

                {

                    if (i % j == 0)

                    {

                        bo = false;

                        break;

                    }

                }

                if (bo == true)

                {

                    Console.WriteLine(i);

                }

            }

        }

12.程序设计:输入10个数据,实现冒泡排序,并输出排序后的结果。(10分)

public void Fun(int[] a)

{

int  i,j,temp;

for(i=0;i<a.length;i++)

{  for(j=0;j<a.length-i-1;j++)

      if(a[j]>a[j+1])

   {

      temp=a[j];

      a[j]=a[j+1]

      a[j+1]=temp;

}

         }

}

13.程序设计猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。
要求:(1)要有联动性,老鼠和主人的行为是被动的。联动效果,运行代码只要执行Cat.Cryed()方法。对老鼠和主人进行抽象。
     
2)考虑可扩展性,猫的叫声可能引起其他联动效应。
     
3)用两种方法实现:A、事件;B、接口。(20分)

    public abstract class Myclass

    {

        public virtual void Action(){ }

    }

    public class Cat : Myclass

    {

        ArrayList list = new ArrayList();

        public void Add(Myclass action)

        {

            list.Add(action);

        }

        public override void Action()

        {

            Console.WriteLine("猫:喵喵喵喵喵");

            foreach (Myclass action in list)

                ((Myclass)action).Action();

        }

    }

    public class Mouse : Myclass

    {

        public override void Action()

        {

            Console.WriteLine("老鼠:咕噜咕噜咕噜");

        }

   

    public class Adults : Myclass

    {

        public override void Action()

        {

            Console.WriteLine("大人:哇!有老鼠啊!");

        }

    }

   public class Children : Myclass

    {

        public override void Action()

        {

            Console.WriteLine("小孩:嗷嗷嗷嗷嗷嗷嗷");

        }

}

 

static void Main(string[] args)

        {

            Cat cat = new Cat();

            Mouse mouse = new Mouse();

            Adults adult = new Adults();

            Children childen = new Children();

            Children1 childen1 = new Children1();

            cat.Add(mouse);

            cat.Add(adult);

            cat.Add(childen);

            cat.Action();

        }

14.程序设计:用程序举例说明多态性(10分)。

using System;

class A

{

public void F()

{Console.WriteLine("A.F");}

public virtual void G()

{Console.WriteLine("A.G");}

}

class B:A

{

new public void F()

{Console.WriteLine("B.F");}

public override void G()

{Console.WriteLine("B.G");}

}

class Test

{

static void Main()

{

B b=new B();//

A a=b;//

a.F();

b.F();

a.G();

b.G();

Console.ReadLine();

}

}

15.程序设计:
   
1)用类实现二维平面的点:(10分)
        
要求 A、最少实现3种构造函数;
              B
、实现方法Length,求与原点(0,0)之间的距离。
          class CPoint
          {
               int x;
               int y;
               public double Length();//
求与原点(0,0)之间的距离
          }

    
2)用类实现三维立体的点:(10分)
        
要求 A、继承CPoint
              B
、最少实现3种构造函数
              C
、实现方法Length,求与原点(0,0,0)之间的距离。
          class CTreePoint:CPoint

                   {

                       int z;

                       new public double Length()

}

 

 

 

 

class CPoint

    {

        int x;

        int y;

 

        public CPoint()

        {

            this.x = 1;

            this.y = 1;

        }

       

        public CPoint(int x,int y)

        {

            this.x = x;

            this.y = y;

        }

 

 

        public CPoint(CPoint p)

        {

            this.x = p.x;

            this.y = p.y;

        }

 

        public double len()

        {

            return Math.Sqrt(x*x+y*y);

        }

    }

 

 

    class CTreePoint : CPoint

    {

        int z;

 

        public CTreePoint()

        {

            this.z = 1;

        }

 

        public CTreePoint(int x,int y,int z):base(x,y)

        {

            this.z = z;

        }

 

        public CTreePoint(CTreePoint p): base(p)

        {

            this.z = p.z;

        }

 

 

        new public double len()

        {

            return Math.Sqrt(base.len()*base.len()+z*z);

        }

    }

       

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值