面试中比较有意思的小题目

(1)不借助于C#自带的字符串转数值方法,把字符串转成对应的数值,比如“123” 转为123;“452.023” 转为452.023

方法如下:

public static double StrToNumber(string oldStr)
        {
            string[] groupParts = oldStr.Split('.');
            char[] integerPart = groupParts[0].ToCharArray();
            double result = 0;
            //整数部分
            for (int i = 0; i < integerPart.Length; i++)
            {
                char singleChar = integerPart[i];
                int asciiCode = (int)singleChar - 48;
                result += Math.Pow(10, integerPart.Length - i - 1) * asciiCode;
            }
            //小数部分
            if (groupParts.Length == 2)
            {
                char[] decimalPart = groupParts[1].ToCharArray();
                for (int i = 0; i < decimalPart.Length; i++)
                {
                    char singleChar = decimalPart[i];
                    int asciiCode = (int)singleChar - 48;
                    result += Math.Pow(10, -1 - i) * asciiCode;
                }
            }
            return result;
        }

(2)给出一个数组,打乱数组内部的元素顺序,比如{ 1, 3, 2, 6, 5, 7, 8, 9, 10, 0 } 变为 {10,7,6,1,9,5,3,2,0,8}

public static void RandomStrArray(string[] strArray)
        {
            Random random = new Random();
            for (int i = 0; i < strArray.Length - 1; i++)
            {
                int randomNumber = random.Next(i + 1, strArray.Length - 1);
                string temp = strArray[randomNumber];
                strArray[randomNumber] = strArray[i];
                strArray[i] = temp;
            }
        }

 

posted @ 2022-04-28 18:30  tuohaibei  阅读(46)  评论(0编辑  收藏  举报