#include <iostream>
#include <cstdlib>
#include <cmath>
#include <deque>
#include <algorithm>
#include <numeric>
#include <iterator>
#include <sstream>
#include <iomanip>
#include <vector>
#include <string.h>
#include <string>
using namespace std;
void Add(char *str1, char *str2, char *str3)//大数的加法
{   //  str3 = str1 + str2;
    int i, j, i1, i2, tmp, carry;
    int len1 = (int)strlen(str1), len2 = (int)strlen(str2);
    char ch;
    i1 = len1 - 1;
    i2 = len2 - 1;
    j = carry = 0;
    for (; i1 >= 0 && i2 >= 0; ++j, --i1, --i2)
    {
        tmp = str1[i1] - '0' + str2[i2] - '0' + carry;
        carry = tmp / 10;
        str3[j] = tmp % 10 + '0';
    }
    while (i1 >= 0)
    {
        tmp = str1[i1--] - '0' + carry;
        carry = tmp / 10;
        str3[j++] = tmp % 10 + '0';
    }
    while (i2 >= 0)
    {
        tmp = str2[i2--] - '0' + carry;
        carry = tmp / 10;
        str3[j++] = tmp % 10 + '0';
    }
    if (carry)
    {
        str3[j++] = carry + '0';
    }
    str3[j] = '\0';
    for (i = 0, --j; i < j; ++i, --j)
    {
        ch = str3[i];
        str3[i] = str3[j];
        str3[j] = ch;
    }
    return ;
}
const int MAXSIZE = 1001;
int main()
{
    char str1[MAXSIZE], str2[MAXSIZE], str3[MAXSIZE];
    scanf("%s %s", str1, str2);
    if (strcmp(str1, "0"))
    {
        memset(str3, '0', sizeof(str3));
        Add(str1, str2, str3);
        printf("%s\n", str3);
    }
    else
    {
        if (strcmp(str2, "0"))
        {
            printf("%s\n-%s\n0\n0\n", str2, str2);
        }
        else
        {
            printf("0\n0\n0\n0\n");
        }
    }
    return 0;
}

解题思路:





注意事项:





参考代码:

点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论