C#学习 第6天

78 阅读1分钟

# 回顾数组的创建与初始化

             int[] intArray = { 1, 2, 3, 4 };
             int[] intArray1 = new int[5] { 1, 3, 5, 7, 9 };
 Console.WriteLine(String.Join(" ", intArray));    
 //Join(String, Object[]) 	串联对象数组的各个元素,其中在每个元素之间使用指定的分隔符。

             string str = "1, 3, 5, 7";
             string[] intArray2 = str.Split(",");       

             char[] charIntArray = str.ToCharArray();    //数组类型转换



             //循环遍历
             foreach(int i in intArray)
             {

                 Console.WriteLine(i);
             }*/

函数

封装一段可执行的代码块

             static int Max(int num1, int num2=3)               // static修饰符   表示静态函数 void表返回值类型,返回值为空 可以为其他类型        ()为参数列表  int num为形参
             {
                 Console.WriteLine(2);
                 return 2;       //return 表示函数的结束  意味着return下面的代码不会执行
             }

练习一

使用函数判断M到N(M不大于N)区间内的真素数

//创建方法  判断素数  将一个数反转
            /* static bool isPrime(int num)
             {


                 for(int i = 2; i<num; i++)
                 {
                     if(num % i == 0)
                     {
                         return false;
                     }
                      //上面循环没有一次执行if中的语句, 那就是素数

                 }
                 return true;
             }

             //创建一个方法   将一个数翻转
             static int getReverse(int num)
             {
                 string strNum = Convert.ToString(num);
                 string strNum2 = "";
                 for (int i=strNum.Length-1; i>=0; i--)
                 {
                     strNum2 += strNum[i];
                 }


                 return Convert.ToInt32(strNum2);
             }



             //传入两个数
             string str = Console.ReadLine();
             string[] strArray = str.Split(" ");
             int M = Convert.ToInt32(strArray[0]);
             int N = Convert.ToInt32(strArray[1]);
             string strOut = "";

             //循环遍历  M到N的数  判断是否是真素数
             for (int i=M; i<=N; i++)
             {
                 if(isPrime(i) && isPrime(getReverse(i)))
                 {
                     if (strOut == "")
                     {
                         strOut += i;
                     }
                     else
                     {
                         strOut += "," + i;
                     }
                 }
             }
             if(strOut == "")
             {
                 Console.WriteLine("NO");
             }
             else
             {
                 Console.WriteLine(strOut);
             }
 */

将一组数据转为数组

 //将一组数据转为数组
            /*static void getNum(params int[] numArray)
            {
                Console.WriteLine(String.Join(" ", numArray));
            }

            getNum(1, 2, 4, 6, 67, 89);
*/

练习二

使用函数将一个数所有因子显示出来

//取一个数字所有因子并返回
            /*    int num = Convert.ToInt32(Console.ReadLine());
                getDivisor(num);

                static void getDivisor(int num)
                {
                    for(int i=1; i<=num; i++)
                    {
                        if(num % i == 0)
                        {
                            Console.WriteLine(i);
                        }
                    }
                }*/

函数重载

递归函数

递归函数 函数中调用自己, 一般有个出口,出口目的是跳出

练习三

使用递归函数求斐波那契数列

//斐波那契数列
            /* static int FibNum(int n)
             {

                 if (1 == n || 2 == n)
                 {
                     return 1;
                 }
                 return FibNum(n-1) + FibNum(n-2);
             }

             int num = Convert.ToInt32(Console.ReadLine());
             for (int i = 1; i<=num; i++)
             {
                 Console.Write(FibNum(i)+" ");
             }*/
            // FibNum(10);

练习四

//求关系式   f(k)=1*1+2*2+...+k*k  f(k-1)=1*1+2*2+...+(k-1)*(k-1)     f(k)=f(k-1)+k*k    出口f(1)=1
            /*static int Snum(int n)
            {
                if(1 == n)
                {
                    return 1;
                }
                return Snum(n - 1) + n * n;
            }
            
            int i = 1;
            while (true)
            {
                if (Snum(i) >= 2000) break;
                i++;
            }
            Console.WriteLine(i - 1);
            Console.WriteLine(Snum(i - 1));
            Console.WriteLine(Snum(i));*/

练习五

使用递归函数计算猴子吃桃问题

//猴子摘桃问题
            //求关系式  f(1)= n   f(2) = f(1)/2-1   f(3)=f(2)/2-1    f(n)=f(n-1)/2-1     f(n-1)=(f(n)+1)*2   出口:f(10)=1
            //f(n) = ((f(n+1)+1)*2
            static int getTzi(int n)
            {
                if (n == 10) return 1;
                return (getTzi(n + 1 ) + 1 ) * 2;

            }
            for(int i=1; i<11; i++)
            {
                Console.WriteLine("第{0}天桃子数:{1}", i, getTzi(i));
            }