求一个大整数想加的最佳算法.
算法要求:和常规的加法相同.输入的两个数(可能是几千位),这个两个数个位与个位相加,十位与十位相加.百位与百位相加,千万位等相同.满10进位下面是我的思路.但还有很多BUG.但还有很多错误.希望高手再给我一种更好的算法,或是帮我把我的代码改进一下.
忠心感谢!
using System;namespace dostext
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字");
string s1 = Console.ReadLine();
Console.WriteLine("请输入第二个数字");
string s2 = Console.ReadLine();
string[] arr1 = new string[s1.Length];
string[] arr2 = new string[s2.Length];
int len = 0;//数组的长度
if (s2.Length > s1.Length)
{
s1 = s1.PadLeft(s2.Length, '0');
len = s2.Length;
}
else if (s2.Length <= s1.Length)
{
s2 = s2.PadLeft(s1.Length, '0');
len = s1.Length;
}
Console.WriteLine("{0} {1}", s1, s2);
int[] arr = new int[len+1];//用于保存结果的数组
int sum = 0;
char x1, x2;//定义单独取出的数
for (int j = len; j > 0; j--)
{
x1 = s1[j - 1];//单独取出要计算的数
x2 = s2[j - 1];
sum = (int)x1 + (int)x2 - 96;//将char类型的转换到int类型,并相加,除去多余的值.
if (sum >= 10)
{
arr[j - 1] += 1;
sum = sum % 10;
arr[j - 0] = sum;
}
else
arr[j - 1] = sum;
} int index = 0;
foreach (int n in arr)
{
if (n > 10)
{
arr[index - 1] += 1;
arr[index] = n % 10;
}
index++;
Console.Write(n);
}
}
}
}
算法要求:和常规的加法相同.输入的两个数(可能是几千位),这个两个数个位与个位相加,十位与十位相加.百位与百位相加,千万位等相同.满10进位下面是我的思路.但还有很多BUG.但还有很多错误.希望高手再给我一种更好的算法,或是帮我把我的代码改进一下.
忠心感谢!
using System;namespace dostext
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字");
string s1 = Console.ReadLine();
Console.WriteLine("请输入第二个数字");
string s2 = Console.ReadLine();
string[] arr1 = new string[s1.Length];
string[] arr2 = new string[s2.Length];
int len = 0;//数组的长度
if (s2.Length > s1.Length)
{
s1 = s1.PadLeft(s2.Length, '0');
len = s2.Length;
}
else if (s2.Length <= s1.Length)
{
s2 = s2.PadLeft(s1.Length, '0');
len = s1.Length;
}
Console.WriteLine("{0} {1}", s1, s2);
int[] arr = new int[len+1];//用于保存结果的数组
int sum = 0;
char x1, x2;//定义单独取出的数
for (int j = len; j > 0; j--)
{
x1 = s1[j - 1];//单独取出要计算的数
x2 = s2[j - 1];
sum = (int)x1 + (int)x2 - 96;//将char类型的转换到int类型,并相加,除去多余的值.
if (sum >= 10)
{
arr[j - 1] += 1;
sum = sum % 10;
arr[j - 0] = sum;
}
else
arr[j - 1] = sum;
} int index = 0;
foreach (int n in arr)
{
if (n > 10)
{
arr[index - 1] += 1;
arr[index] = n % 10;
}
index++;
Console.Write(n);
}
}
}
}
http://topic.csdn.net/u/20090926/22/1c8f99b7-5222-479d-b68e-5571033087e4.html