各位先生们女士们,你们有没有过因为数字太大的缘故算不出数的情况呢???

今天我隆重退出一款老少皆宜的   高精度计算器 !!!!!

同志们,刚刚我打广告入迷了,现在回归正题啦!!!

这期文章我带来了我自治的一个高精度计算器,

不过只能算加法和乘法………………不过也没什么大碍啦!

那么现在……上代码!!!!


加法版:

#include <iostream>
#include <string>
using namespace std;

int A[1010], B[1010], sum[1010];

// 把字符串s存储的整数按照大整数的格式存入数组a中
void s2BIG(string s, int a[])
{
    int la = s.length();
    for (int i = 1; i <= la; i++)
    {
        // 数组a和十进制写法是反过来存储的
        a[i] = s[la - i] - '0';
    }
    a[0] = la; // 大整数的位数保存在a[0]
}

// 将x+y的结果存入数组z中
void addBIG(int x[], int y[], int z[])
{
    z[0] = max(x[0], y[0]);
    for (int i = 1; i <= z[0]; i++)
         z[i] = x[i] + y[i];
    for (int i = 1; i <= z[0]; i++)
    {
        z[i + 1] += z[i] / 10;
        z[i] %= 10;
        if (z[z[0] + 1]) z[0]++;
    }
}

// 用一行输出a记录的大整数(包括换行符)
void printBIG(int a[]) 
{
int la = a[0];  // 获得a的位数
for (int i = la; i >= 1; i--) // 从高位输出到低位
{
cout << a[i];
}
cout << endl; // 最后要输出一个换行
}

int main()
{
    string a, b;
    cin >> a >> b;
    
    return 0;
}

乘法版:


#include <iostream>
#include <string>
using namespace std;

int A[1010], mul[1010];

// 把字符串s存储的整数按照大整数的格式存入数组a中
void s2BIG(string s, int a[])
{
    int la = s.length();
    for (int i = 1; i <= la; i++)
    {
        // 数组a和十进制写法是反过来存储的
        a[i] = s[la - i] - '0';
    }
    a[0] = la; // 大整数的位数保存在a[0]
}

// 用一行输出a记录的大整数(包括换行符)
void printBIG(int a[]) 
{
int la = a[0];  // 获得a的位数
for (int i = la; i >= 1; i--) // 从高位输出到低位
{
cout << a[i];
}
cout << endl; // 最后要输出一个换行
}

void mulBIG(int x[], int y, int z[])
{
    z[0] = x[0];
    for (int i = 1; i <= z[0]; i++) // 每位求积
    {
    z[i] = x[i] * y;
    }
    for (int i = 1; i <= z[0]; i++)
    {
          z[i + 1] += z[i] / 10;
          z[i] %= 10;
          if(z[z[0] + 1] > 0)    z[0]++; //额外判定最高位进位
    }
}

int main()
{
    string a;
    cin >> a;
    int b;
    cin >> b;
    s2BIG(a, A);
    mulBIG(A, b, mul);
    printBIG(mul);
    return 0;
}

呵呵,代码都带来了,还不快来试试看?!

同志们我们下去文章见!!!!!!!!!!!!!

本站作者已申明原创,禁止转载!

文章内容属作者个人观点,不代表本站立场,如有侵权立删。

   口袋儿题库-青少儿编程自测题库