• C# 小例子


    数组冒泡排序(升序排序)

     1             int[] num = { 8, 5, 7, 6, 54, 6, 4, 12, 2, 0, 1, 3 };
     2             //第一种
     3             for (int i = 0; i < num.Length - 1; i++)
     4             {
     5                 for (int j = 0; j < num.Length - i - 1; j++)
     6                 {
     7                     if (num[j] > num[j + 1])
     8                     {
     9                         int temp = num[j];
    10                         num[j] = num[j + 1];
    11                         num[j + 1] = temp;
    12                     }
    13                 }
    14             }
    15             //第二种
    16             for (int i = 0; i < num.Length - 1; i++)
    17             {
    18                 for (int j = 0; j < num.Length - 1; j++)
    19                 {
    20                     if (num[j] > num[j + 1])
    21                     {
    22                         int temp = num[j];
    23                         num[j] = num[j + 1];
    24                         num[j + 1] = temp;
    25                     }
    26                 }
    27             }
    28             //第三种
    29             for (int i = 0; i < num.Length - 1; i++)
    30             {
    31                 for (int j = 0; j < num.Length - 1 - i; j++)
    32                 {
    33                     if (num[j] > num[j + 1])
    34                     {
    35                         int temp = num[j];
    36                         num[j] = num[j + 1];
    37                         num[j + 1] = temp;
    38                     }
    39                 }
    40             }
    41             //第四种:
    42             for (int i = 0; i < num.Length - 1; i++)
    43             {
    44                 for (int j = i + 1; j < num.Length; j++)
    45                 {
    46                     if (num[i] > num[j])
    47                     {
    48                         int temp = num[i];
    49                         num[i] = num[j];
    50                         num[j] = temp;
    51                     }
    52                 }
    53             }
    View Code

     C#中有提供专门排序的方法:System.Array.Sort(要排序的数组);//升序排序

    升序排序可以先降序后再反转排序 。

    数组降序排序

     1             int[] num = { 8, 5, 7, 6, 54, 6, 4, 12, 2, 0, 1, 3 };
     2             //第一种
     3             for (int i = 0; i < num.Length - 1; i++)
     4             {
     5                 for (int j = 0; j < num.Length - i - 1; j++)
     6                 {
     7                     if (num[j] < num[j + 1])
     8                     {
     9                         int temp = num[j];
    10                         num[j] = num[j + 1];
    11                         num[j + 1] = temp;
    12                     }
    13                 }
    14             }
    15             //第二种
    16             for (int i = 0; i < num.Length - 1; i++)
    17             {
    18                 for (int j = 0; j < num.Length - 1; j++)
    19                 {
    20                     if (num[j] < num[j + 1])
    21                     {
    22                         int temp = num[j];
    23                         num[j] = num[j + 1];
    24                         num[j + 1] = temp;
    25                     }
    26                 }
    27             }
    28             //第三种
    29             for (int i = 0; i < num.Length - 1; i++)
    30             {
    31                 for (int j = 0; j < num.Length - 1 - i; j++)
    32                 {
    33                     if (num[j] < num[j + 1])
    34                     {
    35                         int temp = num[j];
    36                         num[j] = num[j + 1];
    37                         num[j + 1] = temp;
    38                     }
    39                 }
    40             }
    41             //第四种:
    42             for (int i = 0; i < num.Length - 1; i++)
    43             {
    44                 for (int j = i + 1; j < num.Length; j++)
    45                 {
    46                     if (num[i] < num[j])
    47                     {
    48                         int temp = num[i];
    49                         num[i] = num[j];
    50                         num[j] = temp;
    51                     }
    52                 }
    53             }
    View Code

     可用C#中中提供的专门排序的方法来降序,降序排序可以先Array.Sort() 再 Array.Reverse()。【先升序再反转过来】

    降序排序可以先升序后再反转排序 。

    数组反转排序

    1             string[] str = { "a", "b", "c", "d", "e", "f", "g" };
    2             for (int i = 0; i < str.Length / 2; i++)
    3             {
    4                 string temp = str[i];
    5                 str[i] = str[str.Length - 1 - i];
    6                 str[str.Length - 1 - i] = temp;
    7             }
    View Code

     C#中有提供专门排序的方法:System.Array.Reverse(要排序的数组);//颠倒排序,反转排序

    输入一个年份和月份输出这个月份的天数

     1             Console.WriteLine("请输入年份");
     2             try
     3             {
     4                 int year = Convert.ToInt32(Console.ReadLine());
     5                 Console.WriteLine("请输入月份");
     6                 try
     7                 {
     8                     int month = Convert.ToInt32(Console.ReadLine());
     9                     if (month >= 1 && month <= 12)
    10                     {
    11                         int day = 0;
    12                         switch (month)
    13                         {
    14                             case 1:
    15                             case 3:
    16                             case 5:
    17                             case 7:
    18                             case 8:
    19                             case 10:
    20                             case 12: day = 31; break;
    21                             case 2: if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) day = 29; else day = 28; break;
    22                             default: day = 31; break;
    23                         }
    24                         Console.WriteLine("{0}年{1}月有{2}天", year, month, day);
    25                     }
    26                     else { Console.WriteLine("输入的月份超出范围"); }
    27                 }
    28                 catch { Console.WriteLine("输入的月份有误,程序退出"); }
    29             }
    30             catch { Console.WriteLine("输入的年份有误,程序退出"); }
    31             Console.ReadKey();
    View Code

     不断要求用户输入姓名,输入q就结束

     1             string strname = "";
     2 
     3             while (strname != "q")
     4             {
     5                 Console.WriteLine("请输入你的姓名,输入q结束");
     6                 strname = Console.ReadLine();
     7             }
     8             Console.ReadKey();
     9             //do...while
    10             /*do
    11             {
    12                 Console.WriteLine("请输入你的姓名,输入q结束");
    13                 strname = Console.ReadLine();
    14             } while (strname != "q");
    15             Console.ReadKey();*/
    View Code

     不断要求输入一个数字(假定用户输入的是正整数),当用户输入end时显示刚才输入的数字中的最大值

     1             string input = "";
     2             int max = 0;
     3             while (input != "end")
     4             {
     5                 Console.WriteLine("请输入一个数字,输入end将显示输入数中的最大值");
     6                 input = Console.ReadLine();
     7                 if (input != "end")
     8                 {
     9                     try
    10                     {
    11                         int number = Convert.ToInt32(input);
    12                         if (number > max)
    13                         {
    14                             max = number;
    15                         }
    16                     }
    17                     catch
    18                     {
    19                         Console.WriteLine("您收收入的字符串有误,请重新输入");
    20                     }
    21                 }
    22                 else
    23                 {
    24                     Console.WriteLine("您刚才输入的数字中最大值为{0}", max);
    25                 }
    26             } Console.ReadKey();
    View Code

    九九乘法表

    1             for (int i = 1; i <= 9; i++)
    2             {
    3                 for (int j = 1; j <= i; j++)
    4                 {
    5                     Console.Write("{0}*{1}={2}\t", i, j, i * j);
    6                 } Console.WriteLine();
    7             } Console.ReadKey();
    View Code

     百钱买百鸡:(公鸡5元/只,母鸡3元/只,小鸡3只/元) 

     1 //方法
     2 
     3         /// <summary>
     4         /// 求百钱买百鸡的购买方案,返回三种购买方案。
     5         /// </summary>
     6         /// <param name="Num1">返回的包含第一种购买方案的输出型数组,数组下标从0开始,依次为公鸡数量、母鸡数量、小鸡数量</param>
     7         /// <param name="Num2">返回的包含第二种购买方案的输出型数组,数组下标从0开始,依次为公鸡数量、母鸡数量、小鸡数量</param>
     8         /// <param name="Num3">返回的包含第三种购买方案的输出型数组,数组下标从0开始,依次为公鸡数量、母鸡数量、小鸡数量</param>
     9         public static void BuyChicken(out int[] Num1, out int[] Num2, out int[] Num3)
    10         {
    11             //g5,m3,x(1/3)
    12             Num1 = new int[3];
    13             Num2 = new int[3];
    14             Num3 = new int[3];
    15             //int g, m, x;
    16             string str = "";
    17             for (int Cock = 1; Cock <= 19; Cock++)
    18             {
    19                 for (int Hen = 1; Hen <= 33; Hen++)
    20                 {
    21                     int Chicken = 100 - Cock - Hen;
    22                     if (Cock * 5 + Hen * 3 + Chicken / 3 == 100 && Chicken % 3 == 0)
    23                     {
    24                         str += Cock.ToString() + "|" + Hen.ToString() + "|" + Chicken.ToString() + "|";
    25                     }
    26                 }
    27             }
    28             string[] strArray = str.Split(new char[] { '|' });
    29             for (int i = 0; i < strArray.Length; i++)
    30             {
    31                 if (i >= 0 && i <= 2)
    32                     Num1[i] = Convert.ToInt32(strArray[i]);
    33                 if (i >= 3 && i <= 5)
    34                     Num2[i - 3] = Convert.ToInt32(strArray[i]);
    35                 if (i >= 6 && i <= 8)
    36                     Num3[i - 6] = Convert.ToInt32(strArray[i]);
    37             }
    38         }
    39 
    40 //调用
    41             int[] Num1;
    42             int[] Num2;
    43             int[] Num3;
    44             BuyChicken(out Num1, out Num2, out Num3);
    45             Console.WriteLine("公鸡数量:{0},母鸡数量:{1},小鸡数量:{2}", Num1[0], Num1[1], Num1[2]);
    46             Console.WriteLine("公鸡数量:{0},母鸡数量:{1},小鸡数量:{2}", Num2[0], Num2[1], Num2[2]);
    47             Console.WriteLine("公鸡数量:{0},母鸡数量:{1},小鸡数量:{2}", Num3[0], Num3[1], Num3[2]);
    View Code
     1             for (int Cock = 1; Cock <= 19; Cock++)
     2             {
     3                 for (int Hen = 1; Hen <= 33; Hen++)
     4                 {
     5                     int Chicken = 100 - Cock - Hen;
     6                     if (Cock * 5 + Hen * 3 + Chicken / 3 == 100 && Chicken % 3 == 0)
     7                     {
     8                         Console.WriteLine("Cock:{0},Hen:{1},Chicken:{2}", Cock, Hen, Chicken);
     9                     }
    10                 }
    11             }
    View Code

      求水仙花数

     1         /// <summary>
     2         /// 求水仙花数
     3         /// </summary>
     4         /// <returns>返回的包含水仙花数的数组</returns>
     5         public static string[] SxhNum()
     6         {
     7             int a, b, c;
     8             string str = null;
     9             for (int num = 100; num < 1000; num++)
    10             {
    11                 a = num / 100;//1
    12                 b = num / 10 % 10;//5
    13                 c = num % 10;//3
    14                 if (Math.Pow(a, 3) + Math.Pow(b, 3) + Math.Pow(c, 3) == num)
    15                 {
    16                     str += num.ToString() + "|";
    17                 }
    18             }
    19             return str.Substring(0, str.Length - 1).Split(new char[] { '|' });
    20         }
    21 
    22 //调用
    23             string[] str = SxhNum();
    24             for (int i = 0; i < str.Length; i++)
    25             {
    26                 Console.WriteLine("水仙花数:" + str[i]);
    27             }
    View Code
    1             int a, b, c, num;
    2             for (num = 100; num < 1000; num++)
    3             {
    4                 a = num / 100;
    5                 b = num / 10 % 10;
    6                 c = num % 10;
    7                 if (a * a * a + b * b * b + c * c * c == num)
    8                     Console.WriteLine("水仙花数:" + num);
    9             }
    View Code

    用while continue实现计算1 到100(含)之间的除了能整除7以外的所有数的和:【4315】

     1             int sum = 0;
     2             int i = 1;
     3             while (i <= 100)
     4             {
     5                 if (i % 7 == 0)
     6                 {
     7                     i++;
     8                     continue;
     9                 }
    10                 sum += i;
    11                 i++;
    12             }
    13             Console.WriteLine(sum);
    14             Console.ReadKey();
    View Code

    找出1到100之内所有的素数(质数)【有25个】

     1             for (int i = 2; i <= 100; i++)
     2             {
     3                 bool b = true;//放在两个循环之间,保证变量b为true
     4                 for (int j = 2; j < i; j++)
     5                 {
     6                     //除尽说明不是质数,没有再进行下去的必要
     7                     if (i % j == 0)
     8                     {
     9                         b = false;
    10                         break;
    11                     }
    12                 }
    13                 if (b)
    14                 {
    15                     Console.WriteLine(i);
    16                 }
    17             } Console.ReadKey();
    View Code

    依次输入分数求总分和平均分

     1             Console.WriteLine("请输入班级人数");
     2             int count = Convert.ToInt32(Console.ReadLine());
     3             Console.WriteLine();
     4             int i = 1;
     5             int sum = 0;
     6             while (i <= count)
     7             {
     8                 Console.WriteLine("请输入第{0}个人的成绩", i);
     9                 int score = Convert.ToInt32(Console.ReadLine());
    10                 sum += score;
    11                 i++;
    12             }
    13             Console.WriteLine("班级的总分数为{0},平均分为{1}", sum, sum / count);
    14             Console.ReadKey();
    View Code

    不断要求输入一个数字,然后打印该数字的两倍,输入q时结束

     1             string input = "";
     2             while (input != "q")
     3             {
     4                 Console.WriteLine("请输入一个数字,将打印该数字的两倍");
     5                 input = Console.ReadLine();
     6                 if (input != "q")
     7                 {
     8                     try
     9                     {
    10                         int number = Convert.ToInt32(input);
    11                         Console.WriteLine("您能输入的数字的二倍为{0}", number * 2);
    12                     }
    13                     catch
    14                     {
    15                         Console.WriteLine("您输入的字符串不能够转换为数字,请重新输入");
    16                     }
    17                 }
    18                 else
    19                 {
    20                     Console.WriteLine("您输入的为q,程序退出");
    21                 }
    22             }
    View Code

    1-100之间的数整相加,得到累加值大于20的当前数

    1             int sum = 0;
    2             for (int i = 0; i <= 100; i++)
    3             {
    4                 sum += i;
    5                 if (sum >= 20)
    6                 {
    7                     Console.WriteLine("加到{0}的时候,总和大于了20", i); break;
    8                 }
    9             } Console.ReadKey();
    View Code

    一组数:1,1,2,3,5,8,13,21,34...... ,每一个是前两个的和,求除第n个数:【斐波那契数列】

     1 //写一个方法
     2         public static int Foo(int i)
     3         {
     4             if (i <= 0)
     5                 return 0;
     6             else if (i > 0 && i <= 2)
     7                 return 1;
     8             else return Foo(i - 1) + Foo(i - 2);
     9         }
    10 
    11 
    12 //在Main函数中调用
    13             Console.WriteLine("输入你要求第几个数!");
    14             int num = int.Parse(Console.ReadLine());
    15             Console.WriteLine("第{0}个数为:{1}", num, Foo(num));
    View Code1
     1             Console.WriteLine("输入你要求第几个数!");
     2             int num = int.Parse(Console.ReadLine());
     3 
     4             int n0 = 1, n1 = 1;
     5             int n = 0;
     6             for (int i = 2; i < num; i++)
     7             {
     8                 n = n0 + n1;
     9                 n0 = n1;
    10                 n1 = n;
    11             } 
    12             Console.WriteLine(n);
    View Code2
    “斐波那契数列”是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci,生于公元1170年,卒于1240年.籍贯大概是比萨).他被人称作“比萨的列昂纳多”.1202年,他撰写了《珠算原理》(Liber Abaci)一书.他是第一个研究了印度和阿拉伯数学理论的欧洲人.他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个阿拉伯老师的指导下研究数学.他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯研究数学.
      斐波那契数列指的是这样一个数列:0,1,1,2,3,5,8,13,21…… 
      这个数列从第三项开始,每一项都等于前两项之和.它的通项公式为:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}(又叫“比内公式”,是用无理数表示有理数的一个范例.)【√5表示根号5】 
      很有趣的是:这样一个完全是自然数的数列,通项公式居然是用无理数来表达的【斐波那挈数列通项公式的推导】
      斐波那契数列:0,1,1,2,3,5,8,13,21…… 
      如果设F(n)为该数列的第n项(n∈N+).那么这句话可以写成如下形式:
      F(0) = 0,F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3)
      显然这是一个线性递推数列.
    通项公式的推导方法:
      设常数r,s
      使得F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]
      则r+s=1,-rs=1
      n≥3时,有
      F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]
      F(n-1)-r*F(n-2)=s*[F(n-2)-r*F(n-3)]
      F(n-2)-r*F(n-3)=s*[F(n-3)-r*F(n-4)]
      ……
      F(3)-r*F(2)=s*[F(2)-r*F(1)]
      将以上n-2个式子相乘,得:
      F(n)-r*F(n-1)=[s^(n-2)]*[F(2)-r*F(1)]
      ∵s=1-r,F(1)=F(2)=1
      上式可化简得:
      F(n)=s^(n-1)+r*F(n-1) 
      那么:
      F(n)=s^(n-1)+r*F(n-1)
      = s^(n-1) + r*s^(n-2) + r^2*F(n-2)
      = s^(n-1) + r*s^(n-2) + r^2*s^(n-3) + r^3*F(n-3)
      ……
      = s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)*F(1)
      = s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)
      (这是一个以s^(n-1)为首项、以r^(n-1)为末项、r/s为公差的等比数列的各项的和)
      =[s^(n-1)-r^(n-1)*r/s]/(1-r/s)
      =(s^n - r^n)/(s-r)
      r+s=1,-rs=1的一解为 s=(1+√5)/2,r=(1-√5)/2
      则:
            F(n)=(√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}
    
    代入n值可求出相应数
    “斐波那契数列”介绍

    求一组数1,12,123,1234,12345,123456,1234567,......,第n个数的递归算法(n<=9)

     1 //写一个方法
     2 string Func(int n)  //n<=9
     3 {
     4       if(n<=1)
     5             return "1";
     6       return Func(n-1)+n.ToString();
     7 }
     8 
     9 //在Main方法中调用
    10 Console.WriteLine("请输入你要求第几个数!");
    11 int num = int.Parse(Console.ReadLine());
    12 Console.WriteLine(Func(num));
    View Code

    将一个数组中的奇数放到一个集合中,再将偶数放到另一个集合中最终将两个集合合并为一个集合,并且奇数项是在左边,偶数显示在右边

     1             int[] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
     2             List<int> Listou = new List<int>();//int类型泛型集合
     3             List<int> ListJi = new List<int>();//int类型泛型集合
     4             for (int i = 0; i < num.Length; i++)
     5             {
     6                 if (num[i] % 2 == 0)
     7                 {
     8                     Listou.Add(num[i]);//添加到集合
     9                 }
    10                 else
    11                 {
    12                     ListJi.Add(num[i]);//添加到集合
    13                 }
    14             }
    15             ListJi.AddRange(Listou);
    16             foreach (var item in ListJi)
    17             {
    18                 Console.Write(item + "    ");
    19             }
    20             for (int i = 0; i < ListJi.Count; i++)//输出
    21             {
    22                 Console.Write(ListJi[i] + "   ");
    23             }
    View Code

    提示用户输入一个字符串,通过foreach循环将用户输入的字符串赋值给一个字符数组

     1             Console.WriteLine("请输入一个字符串");
     2             string input = Console.ReadLine();
     3             char[] ch = new char[input.Length];
     4             int i = 0;
     5             foreach (var item in input)
     6             {
     7                 ch[i] = item;//将字符串的字符赋值给字符数组的元素
     8                 i++;
     9             }
    10             foreach (var item in ch)//输出
    11             {
    12                 Console.WriteLine(item);
    13             }
    View Code

      

    统计一个字符串中每个字符出现的字数,不考虑大小写

     1             string str = "Welcome to China!";
     2             Dictionary<char, int> dic = new Dictionary<char, int>();
     3             for (int i = 0; i < str.Length; i++)
     4             {
     5                 if (str[i] == ' ' || str[i] == '')
     6                 {
     7                     continue;
     8                 }
     9                 //如果dic已经包含当前循环到的这个键
    10                 if (dic.ContainsKey(str[i]))//是否包含当前键
    11                 {
    12                     dic[str[i]]++;//当前对应键的值加1
    13                 }
    14                 else//没有这个键,第一次出现
    15                 {
    16                     dic[str[i]] = 1;//当前对应键的值为1
    17                 }
    18             }
    19             foreach (KeyValuePair<char, int> kv in dic)//输出,KeyValuePair定义可设置或检索的键/值对
    20             {
    21                 Console.WriteLine("字母{0}出现了{1}次", kv.Key, kv.Value);
    22             }
    View Code1
     1         /// 统计一个字符串中每个字符出现的字数,不考虑大小写
     2         /// </summary>
     3         /// <param name="str">统计的字符串</param>
     4         /// <param name="dic">用来存放字符串中每个字符和字符出现的数量</param>
     5         public static void CharTemp(string str, Dictionary<char, int> dic)
     6         {
     7             for (int i = 0; i < str.Length; i++)
     8             {
     9                 if (str[i] == ' ' || str[i] == '!')
    10                 {
    11                     continue;
    12                 }
    13                 if (dic.ContainsKey(str[i]))
    14                 {
    15                     dic[str[i]]++;
    16                 }
    17                 else
    18                 {
    19                     dic[str[i]] = 1;
    20                 }
    21             }
    22         }
    23 
    24             ///再在Main函数中调用    
    25             string str = "Welcome to China!";
    26             Dictionary<char, int> dic = new Dictionary<char, int>();
    27             CharTemp(str, dic);
    28             foreach (KeyValuePair<char, int> kv in dic)//输出,KeyValuePair定义可设置或检索的键/值对
    29             {
    30                 Console.WriteLine("字母{0}出现了{1}次", kv.Key, kv.Value);
    31             }
    32 2    
    View Code2
  • 相关阅读:
    .NET下的加密解密大全(1): 哈希加密
    orm fluentdata使用相关文章
    xml处理相关文章收藏
    Salty Fish(区间和)
    Fennec VS. Snuke
    Splitting Pile
    ST表(离线RMQ)
    Exponentiation(高精度大数)
    高斯消元(模板)
    Online Judge(字符串-格式)
  • 原文地址:https://www.cnblogs.com/xifengyeluo/p/5922112.html
Copyright © 2020-2023  润新知