2981大整数加法

#include<iostream>
#include<cstring>
using namespace std;
#define MAX_LEN 200
int an1[MAX_LEN + 10];
int an2[MAX_LEN + 10];
char szLine1[MAX_LEN + 10];
char szLine2[MAX_LEN + 10];
int main()
{
    cin >> szLine1;
    cin >> szLine2;
    int i, j;

    //库函数memset是将地址an1开始的sizeof(an1)字节内容置成0;
    //memset在cstring内
    memset(an1, 0, sizeof(an1));//initialize;
    memset(an2, 0, sizeof(an2));//initialize;

     //将szLine1里的字符串数字存到an中;
    int nLen1 = strlen(szLine1);
    j = 0;
    for (i = nLen1 - 1; i >= 0; i--) {
        an1[j] = szLine1[i] - '0';/*s[i]是一个字符变量,当s="123"的时候,s[0]='1',s[1]='2',s[2]='3';
        这里的s[i] - '0'的实质就是将单个字符转化为单个数字。当字符类型的变量赋值给整型变量的时候,系统会自动将其转换成ASCII码。'0'的ASCII码为48,'1'为49,依次类推。
            n * 10的含义就是要将已处理的部分向左移一位。在刚才的字符串s转换到第二位的时候
            n = 12 * 10 + (51 - 48);
        这一段代码就是将一个字符串转换成数字。*/
        j++;
    }

    int nLen2 = strlen(szLine2);
    j = 0;
    for (i = nLen2 - 1; i >= 0; i--) {
        an2[j] = szLine2[i] - '0';
        j++;
    }

// 逐位相加
    for (i = 0; i < MAX_LEN; i++) {
        an1[i] += an2[i];//结果存在an1中;
        if (an1[i] >= 10) {//进位
            an1[i] -= 10;
            an1[i + 1]++;
        }
    }

    bool  bStartOutput = false;//用于跳过多余的前导0;
    for (i = MAX_LEN;i>=0; i--) {
        if (bStartOutput) {
            cout << an1[i];
        }
        else if (an1[i]) {
            cout << an1[i];
            bStartOutput = true;//遇到第一个非零数后开始输出
        }       
    }
    
        if (an1[i] == 0 && an2[j] == 0)//意外情况防止
        {
            cout << "0";
        }
    
    system("pause");
}

最后得考虑都为0的情况。

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

推荐阅读更多精彩内容

  • ——春天的主旋律 寒风冷月, 瑟瑟成冰。 落叶飘零, 霜寒露重。 忆青春年少, 无限风光。 摘一片红叶, 寄...
    春天的主旋律阅读 249评论 1 4
  • 十年前的我们都在憧憬着彼此的未来, 仅一屏之隔却来不及抓住屏幕中的你; 时光就像一个魔术师, 让我们的人生不停的错...
    老虎吃辣椒阅读 547评论 0 1
  • http://codeforces.com/problemset/problem/71/A 生词:abbrevia...
    codinRay阅读 333评论 0 0
  • 10月2日五点就起来了,今天要去日照岚山看货,物流停了,只能自己去拉货,正好出去转一转。早上吃了点饭就出发了,正值...
    a1eaf0825d24阅读 367评论 0 2
  • 每个人的生命里总会出现一个让自己爱到骨髓的人,然而是是非非都抵不过时间的考验,最后的最后我们还是没有在一起! ...
    妤梦阅读 259评论 0 0