说明:因为这两个字符串数组的长度未知,因此我们不能使用任何一种基本的数据类型进行计算;
思路:我们将字符串进行拆分,成字符数组,然后,从最后一位数字进行计算,需要进位的进行进位;
如下:下面是小编写的程序,经过验证,没有问题!!!
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();
}