C语言数组实现高精度(长位数)加法

计算高精度加法

Description
由键盘输入两个位数很长的整数(一行一个,最多不超过80位),试计算并输出这两个数的和。



输入样例
1234567890123456789353534532453453453434534
987654321098765324534534534534532


输出样例
1234567891111111110452299856987987987969066


提示
注意,一个普通的变量不能保存十多位长的整数

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 81

int main()
{
    char s[N];
    int a[N]={0}, b[N]={0}, result[N]={0};
    int i, aLen, bLen, longer, resultLen, temp;
    gets(s); aLen = strlen(s); for(i=0;i<aLen;i++) a[i] = s[aLen-1-i]-'0';
    gets(s); bLen = strlen(s); for(i=0;i<bLen;i++) b[i] = s[bLen-1-i]-'0';
    longer = (aLen>bLen ? aLen : bLen);
    for(i=0;i<longer;i++){
        result[i] += (a[i] + b[i]) % 10;
        result[i+1] += (a[i] + b[i]) / 10;
    }
    resultLen = result[longer]==0 ? longer : longer+1;
    for(i=0;i<resultLen/2;i++){
        temp = result[i];  result[i] = result[resultLen-1-i]; result[resultLen-1-i] = temp;
    }
    for(i=0;i<resultLen;i++) printf("%d", result[i]);
    return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。