1.求质数

质数也成为素数,质数就是这个数除了1和他本身两个因数以外,没有其他因数的数,叫做质数,和他相反的是合数,

就是除了1和他本身两个因数以外,还友其他因数的数叫做合数。

  1. //以下为函数部分
  2. static void cal(long x)
  3. {
  4. long sum = 1;
  5. byte row = 1;
  6. Console.Write("\n");
  7. for (long a = 3; a < x + 1; a++)
  8. {
  9. bool flag = true;
  10. for (long b = 2; b < (a / 2) + 1; b++)
  11. {
  12. if (a % b != 0) continue;
  13. flag = false;
  14. break;
  15. }
  16. if (flag)
  17. {
  18. if (row == 10) { Console.WriteLine(); row = 0; }
  19. if (sum == 1) Console.Write("{0,7}", 2);
  20. Console.Write("{0,7}", a);
  21. sum++; row++;
  22. }
  23. }
  24. Console.WriteLine("\n\n{0} 以内共有 {1} 个质数\n", x, sum);
  25. }

2.有一列数1,1,2,3,5,……..求第30个数.

  1. public static int Foo(int i)
  2. {
  3. if (i <= 0)
  4. return 0;
  5. else if (i > 0 && i <= 2)
  6. return 1;
  7. else
  8. return Foo(i - 1) + Foo(i - 2);
  9. }

3.冒泡排序

  1. //冒泡排序类
  2. public class sorter
  3. {
  4. public void Sort(int[] list)
  5. {
  6. int i, j, temp;
  7. bool done = false;
  8. j = 1;
  9. while ((j < list.Length) && (!done))
  10. {
  11. done = true;
  12. for (i = 0; i < list.Length - j; i++)
  13. {
  14. if (list[i] > list[i + 1])
  15. {
  16. done = false;
  17. temp = list[i];
  18. list[i] = list[i + 1];
  19. list[i + 1] = temp;
  20. }
  21. }
  22. j++;
  23. }
  24. }
  25. }

4.请编写一个函数,能够计算10以内数的阶乘,尽量采用递归算法。(10!=3628800)。

  1. public int jiecheng(int n)
  2. {
  3. if (n == 1)
  4. return 1;
  5. else if (n == 2)
  6. return 2;
  7. else
  8. return n * jiecheng(n - 1);
  9. }

5 请编程实现此方法。将输入的整型数组,合并转换为逗号分隔的字符串。

例如输入参数为整型数组{9,7,2},那么输出结果为字符串”9,7,2”。

  1. private static string Combine(int[] data)
  2. {
  3. string str = "";
  4. foreach (int s in data)
  5. {
  6. str += s.ToString() + ",";
  7. }
  8. str.TrimEnd(',');
  9. return str;
  10. }

6.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

  1. //产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
  2. int[] arr = new int[100];
  3. ArrayList myList = new ArrayList();
  4. Random rad = new Random();
  5. while (myList.Count < 100)
  6. {
  7. int num = rad.Next(1, 101);
  8. if (!myList.Contains(num))
  9. {
  10. myList.Add(num);
  11. }
  12. }
  13. for (int i = 0; i < 100; i++)
  14. {
  15. arr[i] = (int)myList[i];
  16. }
  17. for (int i = 0; i < arr.Length; i++)
  18. {
  19. Console.Write(arr[i] + ",");
  20. }
  21. Console.ReadKey();

7.请将字符串”I am a student”按单词逆序输出 如”student a am I”

  1. string S = "I am a student";
  2. char[] C = new char[] { ' '};
  3. string[] n =S.Split(C);
  4. int length = S.Length;
  5. for (int i =length-1 ; i >=0; i--)
  6. {
  7. Console.Write(n[i]);
  8. if (i != 0)
  9. {
  10. Console.Write(" ");
  11. }
  12. }

8.C# 取两个数组的相同元素

摘要: 以往我们都是肯定绞尽脑汁,肯定什么循环,元素大小,什么因素都考虑进去。但是现在采用Linq可以很好的解决这个问题。找出两个或多个数组的相同项。代码如下:

  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.Linq;
  4. usingSystem.Text;
  5. namespaceTest4_03
  6. {
  7. classProgram
  8. {
  9. staticvoidMain(string[] args)
  10. {
  11. string[] names = {"Adams","Arthur","Buchanan","Tsbuchis","ShCian","FuchsiaLinda","DecheChen","Lotheer","FindLanciCade",
  12. "SorchLand","JiangZheng","MisiiLoda","Gtod","Dfac","Lama","BakCades","Losangle","ZheWQ","GehengDahaLothi","ToryLandey",
  13. "DakaLothy","BthLanda","MenNorth","Fith","FoxMain","DontM","Saobba","Del","Sala","Ghero","BhthLaPhda"};
  14. IEnumerable<string> skip = names.Skip(10);
  15. IEnumerable<string> take = names.Take(11);
  16. //取出两个序列中交集部分,按理论应该输出JiangZheng
  17. IEnumerable<string> intersect = skip.Intersect(take);
  18. foreach(varsinintersect)
  19. {
  20. Console.WriteLine(s);
  21. }
  22. Console.ReadKey();
  23. }
  24. }
  25. }

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

  1. static string Reverse()
  2. {
  3. string s = "I am a good man";
  4. string[] arr = s.Split(' ');
  5. string res = "";
  6. for (int i = arr.Length - 1; i >= 0; i--)
  7. {
  8. res += arr[i];
  9. if (i > 0)
  10. res += " ";
  11. }
  12. return res;
  13. }

10.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. //有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
  6. //分解题目
  7. //条件:四个数字1、2、3、4 ;三位数:百位、十位、个位
  8. //要求:互不相同;无重复数字:每个数字在三位中只出现一次
  9. //结果:多少个? 都是多少?
  10. int count = 0; //统计个数
  11. for (int bw = 1; bw <= 4; bw++)
  12. {
  13. for (int sw = 1; sw <= 4; sw++)
  14. {
  15. if (sw!= bw) //很显然,只有百位和十位不同的情况下才能谈个位。
  16. {
  17. for (int gw = 1; gw <= 4; gw++)
  18. {
  19. if (gw != sw && gw != bw) //百位用过的,十位就不能用;百位和十位都用过的,个位就不能用
  20. {
  21. count++;
  22. Console.WriteLine("{0}{1}{2}", bw, sw, gw);
  23. }
  24. }
  25. }
  26. }
  27. }
  28. Console.WriteLine("一共有{0}个", count);
  29. Console.Read();
  30. }
  31. }

11.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

  1. int[] intArr=new int[100];
  2. ArrayList myList=new ArrayList();
  3. Random rnd=new Random();
  4. while(myList.Count<100)
  5. {
  6. int num=rnd.Next(1,101);
  7. if(!myList.Contains(num))
  8. myList.Add(num);
  9. }
  10. for(int i=0;i<100;i++)
  11. intArr[i]=(int)myList[i];

12.用C#写一段选择排序算法,要求用自己的编程风格。

  1. public void xuanZhe(int[] list)//选择排序
  2. {
  3. for (int i = 0; i < list.Length 1; i++)
  4. {
  5. min = i;
  6. for (int j = i + 1; j < list.Length; j++)
  7. {
  8. if (list[j] < list[min])
  9. min = j;
  10. }
  11. int t = list[min];
  12. list[min] = list[i];
  13. list[i] = t;
  14. }
  15. }

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

  1. int[] values = { 3, 5, 9, 8, 10, 5, 3 };
  2. HashSet<int> set = new HashSet<int>();
  3. foreach (int i in values)
  4. {
  5. set.Add(i);
  6. }
  7. foreach (int i in set)
  8. {
  9. Console.WriteLine(i);
  10. }

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

(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。

  1. static void Main(string[] args)
  2. {
  3. char[] name={'A','B','C','D','E'};
  4. int[] value = new int[5];
  5. for (value[0]=0;value[0]<2;value [0]++)
  6. for (value[1]=0; value[1] < 2; value[1]++)
  7. for (value[2]=0; value[2] < 2; value[2]++)
  8. for (value[3]=0; value[3] < 2; value[3]++)
  9. for (value[4]=0; value[4] < 2; value[4]++)
  10. {
  11. 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))
  12. {
  13. for (int i = 0; i < 5; i++)
  14. {
  15. if (value[i]==1)
  16. {
  17. Console.WriteLine("{0}参加", name[i]);
  18. }
  19. else
  20. {
  21. Console.WriteLine("{0}不参加", name[i]);
  22. }
  23. }
  24. }
  25. }
  26. }

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

  1. public delegate void SubEventHandler();
  2. public abstract class Subject
  3. {
  4. public event SubEventHandler SubEvent;
  5. protected void FireAway()
  6. {
  7. if (this.SubEvent != null)
  8. this.SubEvent();
  9. }
  10. }
  11. public class Cat : Subject
  12. {
  13. public void Cry()
  14. {
  15. Console.WriteLine(cat cryed.);
  16. this.FireAway();
  17. }
  18. }
  19. public abstract class Observer
  20. {
  21. public Observer(Subject sub)
  22. {
  23. sub.SubEvent += new SubEventHandler(Response);
  24. }
  25. public abstract void Response();
  26. }
  27. public class Mouse : Observer
  28. {
  29. private string name;
  30. public Mouse(string name, Subject sub) : base(sub)
  31. {
  32. this.name = name;
  33. }
  34. public override void Response()
  35. {
  36. Console.WriteLine(name + attempt to escape!);
  37. }
  38. }
  39. public class Master : Observer
  40. {
  41. public Master(Subject sub) : base(sub){}
  42. public override void Response()
  43. {
  44. Console.WriteLine(host waken);
  45. }
  46. }
  47. class Class1
  48. {
  49. static void Main(string[] args)
  50. {
  51. Cat cat = new Cat();
  52. Mouse mouse1 = new Mouse(mouse1, cat);
  53. Mouse mouse2 = new Mouse(mouse2, cat);
  54. Master master = new Master(cat);
  55. cat.Cry();
  56. }
  57. }

16.写一个冒泡排序

  1. public class bubblesorter
  2. {
  3. public void sort(int[] list)
  4. {
  5. int i, j, temp;
  6. bool done = false;
  7. j = 1;
  8. while ((j < list.Length) && (!done))
  9. {
  10. done = true;
  11. for (i = 0; i < list.Length - j; i++)
  12. {
  13. if (list[i] > list[i + 1])
  14. {
  15. done = false;
  16. temp = list[i];
  17. list[i] = list[i + 1];
  18. list[i + 1] = temp;
  19. }
  20. }
  21. j++;
  22. }
  23. }
  24. }

17. 写一个选择排序

  1. public class selectionsorter
  2. {
  3. private int min;
  4. public void sort(int[] list)
  5. {
  6. for (int i = 0; i < list.Length - 1; i++)
  7. {
  8. min = i;
  9. for (int j = i + 1; j < list.Length; j++)
  10. {
  11. if (list[j] < list[min])
  12. min = j;
  13. }
  14. int t = list[min];
  15. list[min] = list[i];
  16. list[i] = t;
  17. }
  18. }
  19. }

18.一列数的规则如下: 1、1、2、3、5、8、13、21、34…… 求第30位数是多少,用递归算法实现。

  1. public class MainClass
  2. {
  3. public static void Main()
  4. {
  5. Console.WriteLine(Foo(30));
  6. }
  7. public static int Foo(int i)
  8. {
  9. if (i <= 0)
  10. return 0;
  11. else if(i > 0 && i <= 2)
  12. return 1;
  13. else return Foo(i -1) + Foo(i - 2);
  14. }
  15. }