设为首页 加入收藏

TOP

C#程序设计笔试题(二)
2014-11-24 01:37:51 来源: 作者: 【 】 浏览:31
Tags:程序设计 试题
是第一次运行返回True,否则返回False
publicstaticbool IsFirst(string appId)
{
bool ret=false;
if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
{
CreateMutex(IntPtr.Zero,0,appId);
ret=true;
}
return ret;
}
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr OpenMutex(
uint dwDesiredAccess, // access
int bInheritHandle, // inheritance option
string lpName // object name
);
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr CreateMutex(
IntPtr lpMutexAttributes, // SD
int bInitialOwner, // initial owner
string lpName // object name
);
}



6.一列数的规则如下: 1、1、2、3、5、8、13、21、34…… 求第30位数是多少, 用递归算法实现。
答:public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
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);
}
}




8.请编程实现一个冒泡排序算法?
答:
int [] array = new int ;
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 ;
}
}
}




11.在下面的例子里
using System;
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;


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);


}


}


产生的输出结果是什么?x=1,y=2



15.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
}
}
答:if( OnNew != null )
OnNew( this, e );


16.分析以下代码,完成填空
string strTmp = “abcdefg某某某”;
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=
答:i=13,j=10


17.给定以下XML文件,完成算法流程图。

< DriverC >








请画出遍历所有文件名(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 );
}
}
C#:
Public void DomDepthFirst(XmlNode currentNode)
{
XmlNode node=currentNode.FirstChild;
while(node!=null)
{
DomDepthFirst(node);
node=node.NextSibling;
}
if(node.Name==”File”)
{
Console.Write(((XmlElement)node).GetAttribute(“FileName”)+”\r\n”);
}
}



29.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁 并简要说明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i–;
test(i);
}
}
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)



78、下面的程序执行结果是什么?


class Person


{


public int Age { get; set; }


}


int i1 = 20;


int i2 = i1;


i1++;


Console.WriteLine(i2);


Person p1 = new Person();


p1.Age = 20;


Person p2 = p1;


p1.Age++;


Console.WriteLine(p2.Age);


答案:


20 、21



2、不用中间变量交换两个变量


int i = 500;


int j = int.MaxValue – 10;


//int i = 10;


//int j = 20;


Console.WriteLine(“i={0},j={1}”, i, j);


i = i + j;//i=30


j = i – j;//j=10;


i = i – j;//i=20;


Console.WriteLine(“i={0},j={1}”,i,j);




有一个10个数的数组,计算其中不重复数字的个数。{3,5,9,8,10,5,3}


用HashSet


int[] values = { 3, 5, 9, 8, 10, 5, 3 };


HashSet set = new HashSet();


foreach (int i in values)


{


set.Add(i);

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C#关于String的面试题 下一篇C#方向高级开发人员面试时应该事..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: