高精度计算

一. 利用字符串的一维数组方法逐位运算:

高精度加法:

思路很简单,通过数组储存每一位数,然后相加进位。

#include <stdio.h>
#include <string.h>

int main() {
    char a[510] = { 0 }, b[510] = { 0 };
    int a1[510] = { 0 }, b1[510] = { 0 };
    int len_a, len_b;
    int i;
    scanf("%s%s", &a, &b);
    len_a = strlen(a); len_b = strlen(b);

    for (i = 0; i < len_a; i++) {
        a1[i] = a[len_a - i - 1] - '0';
    }
    for (i = 0; i < len_b; i++) {
        b1[i] = b[len_b - i - 1] - '0';
    }
    
    len_a = (len_a > len_b) ? len_a : len_b;

    for (i = 0; i <= len_a; i++) {
        a1[i] += b1[i];
        if (a1[i] >= 10) {
            a1[i] = a1[i] % 10;
            a1[i + 1]++;
        }
    }

    for (int j = len_a; j >= 0; j--) {
        if (j==len_a&&a1[j] == 0) continue;
        printf("%d", a1[j]);
    }
    
    return 0;
}

其中几个关键点:1.另外创建两个数组进行倒序存储,方便同位对其。

        2.用字符串接受数,便于比较长度,注意字符串转化为数组时,要使用 -'0' 的操作。

原文地址:https://www.cnblogs.com/porest/p/14150937.html