bool jw = false;//两个数加起来是否要向前进一位
string result = "";//最后呈现的结果
protected void Button1_Click(object sender, EventArgs e)
{
string s1;//将字符数组中的字符转换为单个字符串因为ToInt32的重载中没有字符只有字符串
string s2;
int x1;//把得到的单个字符串转换为整型
int x2;
string str1 = TextBox1.Text.Trim();//获取用户输入任意位数的整型,不再受Int32,Int64,long等数据范围的限制
string str2 = TextBox2.Text.Trim();
char[] char1 = str1.ToCharArray();//将输入的值转换为字符因为只有这样才能实现多位数的相加
char[] char2 = str2.ToCharArray();
int length = (char1.Length > char2.Length) ? char1.Length : char2.Length;//找出输入两个数中位数较多的一个数
for (int i = length - 1; i >= 0; i--)//数组中索引是从左往右递增做算术只能从右往左运算
{
if (char1.Length > char2.Length)//输入第一个数的长度大于第二个
{
x1 = Convert.ToInt32(char1[i].ToString());//将字符转换为整型
if ((char1.Length - char2.Length) <= i)//考虑输入的两个数的位数不一定一样长
{
s2 = char2[i - (char1.Length - char2.Length)].ToString();//从右往左对应相加如:128+45是8+5,2+4
x2 = Convert.ToInt32(s2);
}
else
x2 = 0;//从右往左对应相加位数不足的补0如:128+45是8+5,2+4,1+0
ValueAdd(jw ? x1 + x2 + 1 : x1 + x2);//如果先前位数的和>=10那么现在这位数就得加1
}
else//输入第一个数的长度小于第二个
{
x2 = Convert.ToInt32(char2[i].ToString());
if ((char2.Length - char1.Length) <= i)
{
s1 = char1[i - (char2.Length - char1.Length)].ToString();
x1 = Convert.ToInt32(s1);
}
else
x1 = 0;
ValueAdd(jw ? x1 + x2 + 1 : x1 + x2);
}
TextBox3.Text = "长度为:" + result.Length + "结果为" + (jw ? "1" : "") + result;//输出结果的长度和值,jw=true时最前面要加1如:99+1=100而不是00
}
}
void ValueAdd(int value)
{
if (value >= 10)//如果现在位的和>=10高一位数就得加1
{
jw = true;
result = (value % 10) + result;//相当于value-10因为两个一位数相加和不可能大于20
}
else
{
jw = false;
result = value + result;//如果写成result + value这样结果会是反的如:12和21,更不要写成习惯性的result += value
}
}
<asp:TextBox ID="TextBox1" runat="server" Height="90px" TextMode="MultiLine" Width="919px"></asp:TextBox> <br />
<input id="Button2" type="button" value="+" style=" font-size:20px; width:154;"/><br />
<asp:TextBox ID="TextBox2" runat="server" TextMode="MultiLine" Width="917px" Height="90px"></asp:TextBox> <br />
<asp:Button ID="Button1" runat="server" Text="=" οnclick="Button1_Click" Font-Size="20px" Width="154px" /> <br />
<asp:TextBox ID="TextBox3" runat="server" Height="100px" TextMode="MultiLine" Width="919px" ReadOnly="True"></asp:TextBox>
大家可以试着写一下乘法思路都差不多一定要遵守的是依次得出个位数十位数百位数千位数…………还有就是在0乘别的数的时候要注意
这个都够强悍吧?