方法练习题(2018/6/27)

1.
(1)把数组中所有的oldvalue更新为newvalue;
(2)打印星星

*
**
***
****
using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //2.封装一个方法Replace(int[] arr, int oldvalue, int newvalue);
            //把数组中所有的oldvalue更新为newvalue;
            //newvalue去替代oldvalue

            int[] arr = { 2, 2, 3, 4, 5 };
            Replace(arr, 2, 10);
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
            PrintStartByLine(5);
        }

        static void PrintStartByLine(int nunLine)
        {
            for (int i = 1; i <= nunLine; i++)
            {
                for (int j = 0; j < i; j++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
        }

        static void Replace(int[] arr, int oldvalue, int newvalue)
        {
            if (arr == null)
            {
                return;
            }
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] == oldvalue)
                {
                    arr[i] = newvalue;
                }
            }
        }
    }
}

2.
1)GetSum();计算1+…+100的和
2)GetSub();计算1-。。。。-100的差;
3)GetTriangleArea(int a,int b,int c);
a,b,c是三角形的三条边;
4)GetMaxNum(double a,double b,double c)
求最大值,返回当前最大值
5)printStar(int row);

*
***
*****

6)judgeMult(int n); n!=1*2*3…*n

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.GetSum(); 计算1 +...+ 100的和
            //2.GetSub(); 计算1 -。。。。-100的差;
            //3.GetTriangleArea(int a, int b, int c);
            //a,b,c是三角形的三条边;
            //4.GetMaxNum(double a, double b, double c)
            //求最大值,返回当前最大值
            //5.printStar(int row);
            //*
            //***
            //*****
            //6.judgeMult(int n); n != 1 * 2 * 3...* n
            Console.WriteLine(GetTriangleArea(3, 4, 5));
            PrintStar(5);
            Console.WriteLine(JudgeMult(3));

        }
        //1.GetSum(); 计算1 +...+ 100的和
        static int GetSum(int minNum, int maxNum)
        {
            int sum = 0;
            for (int i = minNum; i <= maxNum; i++)
            {
                sum += i;
            }
            return sum;
        }

        //2.GetSub(); 计算1 -。。。。-100的差;
        static int GetSub(int minNum, int maxNum)
        {
            int result = minNum;
            for (int i = minNum + 1; i < maxNum; i++)
            {
                result -= i;
            }
            return result;
        }

        //3.GetTriangleArea(int a, int b, int c);
        static double GetTriangleArea(int a, int b, int c)
        {
            if (a < 0 || b < 0 || c < 0)
            {
                return -1;
            }
            if (a + b <= c || a + c <= b || b + c <= a)
            {
                return -1;
            }
            double p = 0, result = 0;
            p = (a + b + c) / 2.0;
            result = Math.Sqrt(p * (p - a) * (p - b) * (p - c));

            return result;
        }

        //4.GetMaxNum(double a, double b, double c)
        static double GetMaxNum(double a, double b, double c)
        {
            double max = a;
            if (b > max)
            {
                max = b;
            }
            if (c > max)
            {
                max = c;
            }

            return max;
        }

        //5.printStar(int row);
        //*
        //***
        //*****
        static void PrintStar(int row)
        {
            for (int i = 0; i < row; i++)
            {
                for (int j = 0; j < i * 2 + 1; j++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
        }

        //6.judgeMult(int n); n != 1 * 2 * 3...* n
        static long JudgeMult(int n)
        {
            long result = 1;
            for (int i = 1; i <= n; i++)
            {
                result *= i;
            }
            return result;
        }
    }
}

3
1)IndexOf(int[] arr,int value)
从0开始检索value,检索到第一次出现的value就结束检索,并返回该元素的下标;
2)IndexOf(int[] arr,int value,int startIndex)
从startindex处开始往后检索,返回value第一次出现的下标;
3)SubArray(int[] arr,int startIndex);
从startIndex这个下标开始往后截取所有的元素存储到新数组中,并返回;
4)Select(int[] arr,int value)
已知数组是排好序的(从小到大),现在在这个数组中快速查找元素value;
并返回value的下标;

using System;

public class Test
{
    public static void Main()
    {
       int[] arr = {4,5,6,7,8};
       Console.WriteLine(IndexOf(arr,6));
       Console.WriteLine(IndexOf(arr,6,3));
       int[] brr = SubArray(arr,3);
       if(brr != null){
           foreach(var item in brr){
              Console.Write(item + " ");
           }
       }


       Console.WriteLine("\n"+Select(arr,5));
    }

    static int IndexOf(int[] arr,int value){
        for(int i = 0;i < arr.Length;i++){
            if(arr[i] == value){
                return i;
            }
        }
        return 0;
    }

    static int IndexOf(int[] arr,int value,int startIndex){
        for(int i = startIndex;i < arr.Length;i++){
            if(arr[i] == value){
                return i;
            }
        }
        return 0;
    }


    static int[]  SubArray(int[] array,int startIndex){
        if(startIndex<0 || startIndex>array.Length-1){
            return null;
        }
        int[] newArray = new int[array.Length-startIndex];
        for(int i = 0;i < newArray.Length;i ++){
            newArray[i] = array[i+startIndex];
        }
        return newArray;
    }

    static int Select(int[] arr, int value)
        {
            int index = -1;
            int left = 0;
            int right = arr.Length - 1;
            int mindle = 0;
            while (left <= right)
            {
                mindle = (left + right) / 2;
                //向左查找
                if (value < arr[mindle])
                {
                    right = mindle - 1;
                }
                else if (value > arr[mindle])
                {
                    //向右查找
                    left = mindle + 1;
                }
                else
                {
                    index = mindle;
                    break;
                }

            }
            return index;
        }

}

猜你喜欢

转载自blog.csdn.net/qq_34937637/article/details/80827230