VR_C#拒绝摸鱼第六天

84 阅读1分钟

复习

数组定义:

            int[] intArray = { 0, 1, 2, 3 };
            int[] intArray2 = new int[4] { 0, 1, 2, 3 };

遍历数组

            foreach (int t in intArray) 
            {
                Console.WriteLine(t);
            }
            
            
            
            for (int i = 0; i < intArray.Length; i++) 
            {
                Console.WriteLine(intArray[i]);
            }

字符串和字符串数组相互转换

            string str = "a,b,c,d";
            string[] strArray = str.Split(",");
            string str1 = string.Join(",", strArray);

函数

· 定义:封装一段可执行的代码块

· static 修饰符 静态函数

· void表示返回值类型 如果返回值为空没有返回值 则为void类型 还有bool,int,string类型

· Main函数名(方法名)

· Main(形参)

例子

            static int Max(params int[] intArray)//参数可以赋初始值  赋初始值的参数要放到后面去
            {
                return intArray.Max();
            }
            Console.WriteLine(Max(1,2,4,7));

判断是否是真素数

输入一个数,该数的正序和倒序都为素数时,则该数为真素数

            static bool isPrime(int num)//定义函数,判断是否是素数
            {
                for (int i = 2; i < num; i++)//除了1和本身,不能被其他小于的数整除
                {
                    if (num % i == 0)
                        return false;//能整除返回false
                }
                return true;
            }
            static int getReverse(string strNum)//翻转函数  字符串->数组(翻转方法)->字符串->数
            {
                //创建一个新的字符串
                string strNum2 = "";
                for (int i = strNum.Length - 1; i >= 0; i--)
                {
                    strNum2 += strNum[i];//颠倒
                }
                return Convert.ToInt32(strNum2);//返回数值形式
            }
            int m, n;
            Console.WriteLine("请输入m:");
            m = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("请输入n:");
            n = Convert.ToInt32(Console.ReadLine());
            string strNum3 = "";
            for(int i = m; i <= n; i++)
            {
                if (isPrime(i) && isPrime(getReverse(Convert.ToString(i))))//判断正序和倒序
                {
                    if (strNum3 == "")//如果是第一个字符,则直接连接
                    {
                        strNum3 += i;
                    }
                    else
                        strNum3 += "," + i;//不是第一个字符,则加逗号连接
                }
            }
            Console.WriteLine(strNum3);

函数重载

Overload 同名函数,不同参数类型

            static double Max(params double[] doubleArray)
            {
                return doubleArray.Max();
            }
            Max(1.3, 1.2, 5.4);

求一个数的所有因子

            static string getDivisor(int n)
            {
                string str = "";
                for(int i = 1; i <= n; i++)
                {
                    if (n % i == 0)//能整除,则为因子
                    {
                        if (str == "")//判断是否为第一个字符,是则直接连接
                            str += i;
                        else//不是,则加逗号连接
                            str += "," + i;
                    }
                }
                return str;
            }
            Console.WriteLine("求一个数的所有因子,请输入这个数:");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine(getDivisor(n));//调用函数并输出

递归函数

求斐波那契数列

1,1,2,3,5,8,13....

前两数的和为当前数

            static int Fib(int n)
            {
                if (n == 1 || n == 2)//第一,二项不变
                    return 1;
                return Fib(n - 1) + Fib(n - 2);
            }
            Console.WriteLine("请输入斐波那契数列的项数n:");
            int n = Convert.ToInt32(Console.ReadLine());
            for(int i = 1; i <=n; i++)
            {
                Console.Write(Fib(i)+" ");
            }

1 * 1+2 * 2+3 * 3+...+k * k<2000,求出k的最大值

            static int getA(int k)
            {
                if (k == 1)
                    return k * k;
                return k * k + getA(k - 1);
            }
            int i = 1;
            while(getA(i) < 2000)
            {
                i++;
            }
            Console.WriteLine(i-1);

练习题

image.png

            static int getB(int day)
            {
                if (day == 1)
                    return 1;
                return (getB(day-1)+1)*2;
            }
            Console.WriteLine(getB(10));