首页 > 编程 > C# > 正文

C#常见算法面试题小结

2020-01-24 02:25:59
字体:
来源:转载
供稿:网友

本文实例汇总了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#程序设计有一定的借鉴价值。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表