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 b、StackOverFlowException
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);
}
}