计算两个长度未知的字符串数组的和

说明:因为这两个字符串数组的长度未知,因此我们不能使用任何一种基本的数据类型进行计算;

思路:我们将字符串进行拆分,成字符数组,然后,从最后一位数字进行计算,需要进位的进行进位;

如下:下面是小编写的程序,经过验证,没有问题!!!

        static void Main(string[] args)
        {
            string number1 = "123456789";
            string number2 = "12345123";
            //长度差
            int LenCha = Math.Abs(number1.Length - number2.Length);
            //用来存放结果
            string res="";
            string zeroNumber = "";
            if (number1.Length >= number2.Length)//把两个字符数组转化成长度为最大的加1的长度,不足在前面补0
            {
                number1 = "0" + number1;

                for (int i = 1; i <= (LenCha + 1); i++)
                {
                    zeroNumber += "0";
                }
                number2 = zeroNumber + number2;
            }
            else
            {
                number2 = "0" + number2;
                for (int i = 1; i <= (LenCha + 1); i++)
                {
                    zeroNumber += "0";
                }
                number1 = zeroNumber + number1;
            }
            char [] Num1=number1.ToCharArray();//字符数组
            char [] Num2=number2.ToCharArray();
            int jinweshu=0;
            for (int i = Num1.Length - 1; i >= 0; i--)
            {
                int curNum1 = int.Parse(Num1[i].ToString());//转化为int
                int curNum2 = int.Parse(Num2[i].ToString());
                //结果
                int curRes = (curNum1 + curNum2 + jinweshu) % 10;//求出两个数相加的结果,因为可能大于10,因此对10进行取余.
                res = curRes.ToString() + res;//连接结果
                //是否进位
                jinweshu = (curNum1 + curNum2 + jinweshu) / 10;
            }
            res = res.TrimStart('0');//如果第一个数是0,进行截取
            Console.WriteLine("number1" + number1);
            Console.WriteLine("number2" + number2);
            Console.WriteLine("result " + res.ToString());
            Console.ReadKey();
        }


猜你喜欢

转载自blog.csdn.net/U3DJueQi/article/details/78988393