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#程序设计有一定的借鉴价值。