1、下面这段代码输出什么?为什么?
int i=5; int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal");
输出:Not Equal
因为比较的是两个实例是否是相同的实例。
2、在下面的例子里
using System;
namespace TEST
{
class A
{
public A()
{ PrintFields(); }
public virtual void PrintFields() { }
}
class B : A
{
int x = 1; int y;
public B()
{ y = -1; }
public override void PrintFields()
{ Console.WriteLine("x={0},y={1}", x, y); }
}
}
问:当使用new B()创建B的实例时,产生什么输出?
答:X=1,Y=0
3、在下面的例子中,输出什么?
using System;
namespace TEST
{
class Class1
{
public static int count = 0;
static Class1() { count++; }
public Class1() { count++; }
}
class Program
{
static void Main(string[] args)
{
Class1 o1 = new Class1();
Class1 o2 = new Class1();
Console.Write(Class1.count);
Console.Read();
}
}
}
输出:3
4、求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
public static int JiSuan(int Num)
{
if (Num % 2 == 1)
{
return Num - (Num - 1) / 2;
}
else
{
return -Num / 2;
}
}
5、下面这段代码输出什么?
using System;
namespace TEST
{
class Father
{
void show()
{
Console.Write("Father");
}
static void Main(string[] args)
{
Father obj = new Child();
obj.show();
Console.Read();
}
}
class Child : Father
{
void show()
{
Console.Write("Child");
}
}
}
输出:Father
6、一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。
static void Main(string[] args)
{
System.Console.WriteLine(Foo(2).ToString());
System.Console.ReadLine();
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if (i > 0 && i <= 2)
return 1;
else return Foo(i - 1) + Foo(i - 2);
}
7、分析以下代码,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=
答:i=13,j=10
8、下面的例子中,产生的输出结果是什么?
using System;
class A
{
public static int X;
static A()
{
X = B.Y + 1;
}
}
class B
{
public static int Y = A.X + 1;
static B() { }
static void Main()
{
Console.WriteLine("X={0},Y={1}", A.X, B.Y);
Console.Read();
}
}
输出:x=1,y=2
9、下面的例子中,产生的输出结果是什么?
double d = 5.555;
string str = string.Format("{0:C2}", d);
Console.WriteLine(str);
Console.Read();
输出:¥5.56
10、下面的例子中,产生的输出结果是什么?
string[] test = new string[5];
test[0] = "11";
test[4] = "22";
string s = "";
foreach (string m in test)
s = s + m;
Console.Write(s);
Console.Read();
输出:1122
11、请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control;
tb.Text = String.Empty;
}
}
12、请编程实现一个冒泡排序算法
int[] array = new int[] { 1, 2, 3, 4, 5, 3, 2, 6, 7 };
int temp = 0;
for (int i = 0; i < array.Length - 1; i++)
{
for (int j = i + 1; j < array.Length; j++)
{
if (array[j] < array[i])
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
13、a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
int[] intArr = new int[100];
ArrayList myList = new ArrayList();
Random rnd = new Random();
while (myList.Count < 100)
{
int num = rnd.Next(1, 101);
if (!myList.Contains(num))
myList.Add(num);
}
for (int i = 0; i < 100; i++)
intArr[i] = (int)myList[i];
14、求f=1*2*4*8*16*32*64*128*256
方法一:利用位运算:
long sum = 1;
for (int i = 1; i < 9; i++)
{
sum *= 1 << i;
}
Console.WriteLine(sum);
方法二:利用循环:
int num = 1, sum = 1;
for (int i = 0; i < 9; i++)
{
sum = num * 1;
for (int j = 0; j < i; j++)
{
num = num * 2;
}
}
Console.WriteLine(sum);
15、下面的例子中,产生的输出结果是什么?
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B : A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();
a.Fun();
Console.ReadKey();
}
}
输出:A
B
A.Fun()
16、下面的例子中,产生的输出结果是什么?
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B : A
{
public override void Fun1(int i)
{
base.Fun1(i + 1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
Console.ReadKey();
}
}
输出:2
5
1
6
17、常用排序方法:
private void BubbleSort()
{
//冒泡排序
int[] list = new int[5] { 111, 12, 223, 854, -5655 };//初始化数组
int i, j, temp;
for (j = 1; j < list.Length; j++)
{
for (i = 0; i < list.Length - j; i++)
{
if (list[i] > list[i + 1])
{
temp = list[i];
list[i] = list[i + 1];
list[i + 1] = temp;
}
}
}
}
private void SelectSort()
{
//选择排序
int[] a = new int[5] { 111, 12, 223, 854, -5655 };//初始化数组
int min, min_k;//定义最小数,和最小数的下标
for (int i = 0; i < 5; i++)
{
min = a[i];//将当前循环的数设置成最小数
min_k = i;
for (int j = i + 1; j < 5; j++)
{
if (a[j] < min)
{
min = a[j];
min_k = j;
int tem = a[min_k];
a[min_k] = a[i];
a[i] = tem;
}
}
}
}
18、用javascript写出一个div,使之绝对定位在top:200px,left:150px的位置,宽300px,高220px,白色背景,边框1像素平滑红色
var mydiv = document.createElement("div");
mydiv.style.position="Absolute";
mydiv.style.top = "200px";
mydiv.style.left="150px";
mydiv.style.width="300px";
mydiv.style.height="220px";
mydiv.style.backgroundColor="Red";
mydiv.style.borderStyle="solid";
mydiv.style.borderColor="White";
mydiv.style.borderWidth="1px";
19、如何定义泛型方法?如何给泛型变量赋默认值?
public class MyGenericClass<T>
{ public T tField = default(T);
public MyGenericClass()
{ }
public MyGenericClass(T tField)
{ this.tField = tField; }
public void DisplayDefault()
{ Console.WriteLine(this.tField); }
}
20、如何把一个array复制到arrayList里
foreach( object o in array )
arrayList.Add(o);
21、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
private void toolBar_ButtonClick (objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
}
}
}
答:if( OnNew != null )
OnNew( this, e );
22、根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
23、程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求:1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
namespace test
{
public interface Observer
{
void Response(); //观察者的响应,如是老鼠见到猫的反映
}
public interface Subject
{
void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine(name + " attempt to escape!");
}
}
public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine("Host waken!");
}
}
public class Cat : Subject
{
private ArrayList observers;
public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
}
public void Cry()
{
Console.WriteLine("Cat cryed!");
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
}
class MainClass
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat);
Mouse mouse2 = new Mouse("mouse2", cat);
Master master = new Master(cat);
cat.Cry();
Console.Read();
}
}
}
24、一个构造函数能否调用另一个构造函数,如果能请写出简单的代码
class class1
{
int y;
public class1()
{
new class1(5);
}
public class1(int i)
{
this.y = i;
}
public void x()
{
Console.WriteLine(y.ToString());
}
static void Main(string[] args)
{
//
class1 cl = new class1(5);
cl.x();
Console.Read();
}
}
25、给定以下XML文件,完成算法流程图。(10)
<FileSystem>
< DriverC >
<Dir DirName=”MSDOS622”>
<File FileName =” Command.com” ></File>
</Dir>
<File FileName =”MSDOS.SYS” ></File>
<File FileName =” IO.SYS” ></File>
</DriverC>
</FileSystem>
请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。
答:
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}
}
简单的说就是从根节点开始遍历找子节点,在从找到的子节点找它的子节点,一层层下去