C#常见算法面试题小结
本文实例汇总了C#面试常见的算法题及其解答。具有不错的学习借鉴价值。分享给大家供大家参考。具体如下:
1.写出冒泡,选择,插入排序算法。
//冒泡排序
publicclassbubblesorter
{
publicvoidsort(int[]list)
{
inti,j,temp;
booldone=false;
j=1;
while((j<list.Length)&&(!done))
{
done=true;
for(i=0;i<list.Length-j;i++)
{
if(list[i]>list[i+1])
{
done=false;
temp=list[i];
list[i]=list[i+1];
list[i+1]=temp;
}
}
j++;
}
}
}
//选择排序
publicclassselectionsorter
{
privateintmin;
publicvoidsort(int[]list)
{
for(inti=0;i<list.Length-1;i++)
{
min=i;
for(intj=i+1;j<list.Length;j++)
{
if(list[j]<list[min])
min=j;
}
intt=list[min];
list[min]=list[i];
list[i]=t;
}
}
}
//插入排序
publicclassinsertionsorter
{
publicvoidsort(int[]list)
{
for(inti=1;i<list.Length;i++)
{
intt=list[i];
intj=i;
while((j>0)&&(list[j-1]>t))
{
list[j]=list[j-1];
--j;
}
list[j]=t;
}
}
}
2.有一列数1,1,2,3,5,........求第30个数.
publicclassMainClass
{
publicstaticvoidMain()
{
Console.WriteLine(Foo(30));
}
publicstaticintFoo(inti)
{
if(i<=0)
return0;
elseif(i>0&&i<=2)
return1;
elsereturnFoo(i-1)+Foo(i-2);
}
}
3.程序设计:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。
publicdelegatevoidSubEventHandler();
publicabstractclassSubject
{
publiceventSubEventHandlerSubEvent;
protectedvoidFireAway()
{
if(this.SubEvent!=null)
this.SubEvent();
}
}
publicclassCat:Subject
{
publicvoidCry()
{
Console.WriteLine(catcryed.);
this.FireAway();
}
}
publicabstractclassObserver
{
publicObserver(Subjectsub)
{
sub.SubEvent+=newSubEventHandler(Response);
}
publicabstractvoidResponse();
}
publicclassMouse:Observer
{
privatestringname;
publicMouse(stringname,Subjectsub):base(sub)
{
this.name=name;
}
publicoverridevoidResponse()
{
Console.WriteLine(name+attempttoescape!);
}
}
publicclassMaster:Observer
{
publicMaster(Subjectsub):base(sub){}
publicoverridevoidResponse()
{
Console.WriteLine(hostwaken);
}
}
classClass1
{
staticvoidMain(string[]args)
{
Catcat=newCat();
Mousemouse1=newMouse(mouse1,cat);
Mousemouse2=newMouse(mouse2,cat);
Mastermaster=newMaster(cat);
cat.Cry();
}
}
4.有一个字符串"Iamagoodman",设计一个函数,返回"mangoodaamI"。
staticstringReverse()
{
strings="Iamagoodman";
string[]arr=s.Split('');
stringres="";
for(inti=arr.Length-1;i>=0;i--)
{
res+=arr[i];
if(i>0)
res+="";
}
returnres;
}
5.A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
staticvoidMain(string[]args)
{
char[]name={'A','B','C','D','E'};
int[]value=newint[5];
for(value[0]=0;value[0]<2;value[0]++)
for(value[1]=0;value[1]<2;value[1]++)
for(value[2]=0;value[2]<2;value[2]++)
for(value[3]=0;value[3]<2;value[3]++)
for(value[4]=0;value[4]<2;value[4]++)
{
if((value[1]>=value[0])&&(value[1]+value[2]==1)&&(value[2]==value[3])&&(value[3]+value[4]==1)&&(value[4]==0||value[4]==1&&value[0]==1&&value[3]==1))
{
for(inti=0;i<5;i++)
{
if(value[i]==1)
{
Console.WriteLine("{0}参加",name[i]);
}
else
{
Console.WriteLine("{0}不参加",name[i]);
}
}
}
}
}
6.题目:
auserenteredanintegervalueintoatextbox.Withoutusingabuit-inlibrary,convertthenumericstringtoitsintegerrepresentation.
staticintStringTolnt(strings)
{
intsum=0;
for(inti=0;i<s.Length;i++)
sum=sum*10+(s[i]-'0');
returnsum;
}
相信本文所述对大家的C#程序设计有一定的借鉴价值。