VR引擎程序设计基础class6

87 阅读1分钟

1.函数

static void Main(string[] args)
{
    test(1);
    test(1,2);
}
static void test(int a, int b = 1)//默认参数只能放于最后
{   
    Console.WriteLine(a+b);
}

图片.png

2.求整数m和n之间的真素数(包括m,n),13是真素数,因为13的反序31还是素数

static void Main(string[] args)
{
    Console.WriteLine(string.Join("," , getPrimeNumber(10, 35).ToArray()));
}

//判断一个数是否是素数
static bool isPrimeNumber(int n) {
    for (int i = 2; i <= Math.Sqrt(n); i++)
    {
        if (n%i==0)return false;
    }
    return true;
}

//将一个数字反转
static int reverseNumber(int n)
{
    int v = 0;
    while (n!=0)
    {
        v = v * 10 + n % 10;
        n = n / 10;
    }
    return v;
}

static ArrayList getPrimeNumber(int m,int n) {//设m>n
    ArrayList arr = new ArrayList();
    if (m<n)
    {
        int c = m;
        m = n;
        n = c;
    }
    for (int i = n; i < m; i++)
    {
        if (isPrimeNumber(i) && isPrimeNumber(reverseNumber(i)))
        {
            arr.Add(i);
        }
    }
    return arr;
}   

图片.png

3.方法中的参数数组

static void Main(string[] args)
{
    test(1, 2, 3, 4);
}
//传入参数自动为数组,params只能修饰最后一个参数
static void test(int a,params int[] b) { 
        
}

4.方法中返回多个参数

static void Main(string[] args)
{
    test(out 1, out 2, ref 3, 4);
}
//方法结束前,必须对out声明的参数赋值
//ref,也是用于返回参数,但是ref修饰的参数在方法中可以不赋值
static string test(out int a,out int b,ref int c,string d)
{
    a = 3;
    b = 3;
    return d;
}

5.定义一个函数Max,用来取得一个数组中的最大值

static void Main(string[] args)
{
    Console.WriteLine(Max(1, 23, 4, 4, 31));
}
static int Max(params int [] a) {
    int max = 0;
    for (int i = 0; i < a.Length; i++)
    {
        if (a[i]>max)
        {
            max = a[i];
        }
    }
    return max;
}

图片.png

6.定义一个函数getDivisor,用来取得一个数字的所有因子,把所有因子返回

static void Main(string[] args)
{
    Console.WriteLine(String.Join(",",getDivisor(100).ToArray()));
}
static ArrayList getDivisor(int a)
{
    ArrayList array = new ArrayList();
    for (int i = 1; i <= a; i++)
    {
        if (a % i==0)
        {
            array.Add(i);
        }
    }
    return array;
}

图片.png

7.编写一个方法来判断用户输入用户名和密码是否正确,返回用户一个登录结果,并且还要单独返回一个登录信息,如果用户名错误,除了返回登录结果之外,还要返回一个“用户名错误”,“密码错误”的提示信息

static void Main(string[] args)
{
    string a = Console.ReadLine();
    string b = Console.ReadLine();

    string msg="";
    bool result = login(a,b,out msg);

    Console.WriteLine(result);
    Console.WriteLine(msg);
}
static bool login(string a, string b,out string msg)
{
    string a1 = "小王";
    string b1 = "123";
    bool result = false;
    msg = "";
    if (a==a1&&b==b1)
    {
        msg = "登录成功";
        result = true;
    }
    else if (a != a1)
    {
        msg = "用户名错误";
    }
    else if (b!=b1)
    {
        msg = "密码错误";
    }
    return result;
}

图片.png

8.求斐波那契数列1 1 2 3 5 8 13 21 34 输入:4 输出 1 1 2 3

static void Main(string[] args)
{
    //递归
    for (int i = 1; i < 7; i++)
    {
        Console.Write(FibD(i)+" ");
    }
    //交换
    Fib(7);
}
static int FibD(int n) {
    if (n==1 || n==2){
        return 1;
    }
    return FibD(n - 1) + FibD(n - 2);
}
static void Fib(int n) {
    int p1 = 0;
    int p2 = 1;
    int c = 0;
    Console.Write("1 ");
    for (int i = 1; i < n ; i++)
    {
        c = p1 + p2;
        Console.Write("{0} ", c);
        p1 = p2;
        p2 = c;
    }
}

9.有关系式1 * 1+2 * 2+3 * 3+...k * k<2000,编一个程序,求出满足此关系的k的最大值,利用递归和循环解决这个问题

static void Main(string[] args)
{
    calculationK();
    
    int k = 1;
    while (calculationD(k)<2000)
    {
        k++;
    }
    Console.WriteLine(k-1);
}
//非递归
static void calculationK() {
    int sum = 0;
    int i = 1;
    while (true) {
        sum += i * i;
        if (sum>2000)
        {
            Console.WriteLine(i - 1);
            break;
        }
        i++;
    }
}
//递归
static int calculationD(int n) {
    if (n==1)
    {
        return 1;
    }
    return calculationD(n - 1) + n * n;
}

图片.png

10.猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半, 又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。

static void Main(string[] args)
{
    for (int i = 1; i <= 10; i++)
    {
        Console.WriteLine("第{0}天{1}个桃子",i,peach(i));
    }
}
static int peach(int n) {
    if (n==10)
    {
        return 1;
    }
    return (peach(n+1)+1)*2;
}