软件编程
位置:首页>> 软件编程>> C#编程>> C#常见算法面试题小结

C#常见算法面试题小结

作者:shichen2014  发布时间:2023-05-18 02:56:07 

标签:C#,算法,面试

本文实例汇总了C#面试常见的算法题及其解答。具有不错的学习借鉴价值。分享给大家供大家参考。具体如下:

1.写出冒泡,选择,插入排序算法。


 //冒泡排序
 public class bubblesorter
 {
   public void sort(int[] list)
   {
     int i, j, temp;
     bool done = 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++;
     }
   }
 }
 //选择排序
 public class selectionsorter
 {
   private int min;
   public void sort(int[] list)
   {
     for (int i = 0; i < list.Length - 1; i++)
     {
       min = i;
       for (int j = i + 1; j < list.Length; j++)
       {
         if (list[j] < list[min])
           min = j;
       }
       int t = list[min];
       list[min] = list[i];
       list[i] = t;
     }
   }
 }
 //插入排序
 public class insertionsorter
 {
   public void sort(int[] list)
   {
     for (int i = 1; i < list.Length; i++)
     {
       int t = list[i];
       int j = i;
       while ((j > 0) && (list[j - 1] > t))
       {
         list[j] = list[j - 1];
         --j;
       }
       list[j] = t;
     }
   }
 }

2.有一列数1,1,2,3,5,........求第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);
 }
}

3. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。


 public delegate void SubEventHandler();
 public abstract class Subject
 {
   public event SubEventHandler SubEvent;
   protected void FireAway()
   {
     if (this.SubEvent != null)
       this.SubEvent();
   }  
 }
 public class Cat : Subject
 {
   public void Cry()
   {
     Console.WriteLine(cat cryed.);
     this.FireAway();
   }
 }
 public abstract class Observer
 {
   public Observer(Subject sub)
   {
     sub.SubEvent += new SubEventHandler(Response);
   }
   public abstract void Response();  
 }
 public class Mouse : Observer
 {
   private string name;
   public Mouse(string name, Subject sub) : base(sub)
   {  
     this.name = name;
   }
   public override void Response()
   {
     Console.WriteLine(name + attempt to escape!);
   }
 }
 public class Master : Observer
 {
   public Master(Subject sub) : base(sub){}
   public override void Response()
   {
     Console.WriteLine(host waken);
   }
 }
 class Class1
 {
   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();
   }
 }

4.有一个字符串 "I am a good man",设计一个函数,返回 "man good a am I"。


static string Reverse()
{
string s = "I am a good man";
string[] arr = s.Split(' ');
string res = "";
for (int i = arr.Length - 1; i >= 0; i--)
{
  res += arr[i];
  if (i > 0)
 res += " ";
}
return res;
}

5.A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些人参加了竞赛:

(1)A参加时,B也参加;

(2)B和C只有一个人参加;

(3)C和D或者都参加,或者都不参加;

(4)D和E中至少有一个人参加;

(5)如果E参加,那么A和D也都参加。


static void Main(string[] args)
{
 char[] name={'A','B','C','D','E'};
 int[] value = new int[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 (int i = 0; i < 5; i++)
   {
 if (value[i]==1)
 {
   Console.WriteLine("{0}参加", name[i]);
 }
 else
 {
   Console.WriteLine("{0}不参加", name[i]);
 }
   }
 }
  }
}

6.题目:
a user entered an integer value into a text box. Without using a buit-in library, convert the numeric string to its integer representation.


static int StringTolnt(string s)
{
 int sum = 0;
 for (int i = 0; i < s.Length; i++)
sum = sum * 10 + (s[i] - '0');
 return sum;
}

相信本文所述对大家的C#程序设计有一定的借鉴价值。

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com