执行文件和项目文件
链接: http://pan.baidu.com/s/1dELptrr 密码: hndy
exe运行截图
计算器比较
原理
初始化,表格,将输入的A,B字符串填入表格
计算对应的乘积,注意错位,填入表格
考虑进位,将每一位对应的值,填入最后一行,最后一行连成的字符串即是C值
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace bigNum_form
{
public partial class Form1 : Form
{
private string a = "";
private string b = "";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox3.Text = "";
a = textBox1.Text;
b = textBox2.Text;
bigNum num = new bigNum { A = a, B = b };
num.initC();
num.compute();
num.go_loc();
num.answerOut();
textBox3.Text = num.Answer;
textBox3.Show();
}
public class bigNum
{
private string a = "";
private string b = "";
private string answer = "";
public string A
{
get
{
return a;
}
set
{
int i = 0, mark = 0;
while (i < value.Length)
{
if (!Char.IsNumber(value[i]))
{
mark = 1;
}
i++;
}
if (mark == 0)
a = value;
}
}
public string B
{
get
{
return b;
}
set
{
int i = 0, mark = 0;
while (i < value.Length)
{
if (!Char.IsNumber(value[i]))
{
mark = 1;
}
i++;
}
if (mark == 0)
b = value;
}
}
public string Answer
{
get
{
return answer;
}
}
private int[,] C = new int[100, 100];
public void initC()
{
//A第一行,1~a.length,填入C
for (int i = 1; i <= a.Length; i++)
{
C[0, i] = a[i - 1] - '0';
}
//B第一列,1~b.length,填入C
for (int j = 1; j <= b.Length; j++)
{
C[j, 0] = b[j - 1] - '0';
}
}
public void compute()
{
//遍历B
int miss = 0;//记录错位
for (int i = 1; i <= b.Length; i++)
{
for (int j = 1; j <= a.Length; j++)
{
C[i, j + miss] = C[i, 0] * C[0, j];
}
miss++;
}
}
public void go_loc()//进位
{
//从最后一列开始,没列相加
//总和%10——>最后行
//总和/10——>进位数
int c = 0;//进位数
int sum = 0;
for (int i = a.Length + b.Length - 1; i > 0; i--)
{
sum = 0;
for (int j = 1; j <= b.Length; j++)
{
sum += C[j, i];
}
sum += c;//低位进位数
C[b.Length + 1, i] = sum % 10;
c = sum / 10;
}
C[b.Length + 1, 0] = c;
}
public void answerOut()
{
Char an;
if (C[b.Length + 1, 0] != 0)
{
an = (Char)(C[b.Length + 1, 0] + '0');
answer += an.ToString();
}
for (int i = 1; i <= a.Length + b.Length - 1; i++)
{
an = (Char)(C[b.Length + 1, i] + '0');
answer += an.ToString();
}
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。