美文网首页
2981大整数加法

2981大整数加法

作者: SUNRISE_05fd | 来源:发表于2018-10-16 22:05 被阅读0次
#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的情况。

相关文章

  • 整数加法

    题目描述:请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error输入描述:输入为一...

  • 大整数加法

    题目地址:http://noi.openjudge.cn/ch0106/10/题目:总时间限制: 1000ms 内...

  • 大整数加法

  • 大整数加法

    时间限制:3000 ms | 内存限制:65535 KB | 难度:3 描述 I have a very si...

  • js大位整数加法

    一、大位正整数相加 1.方法一 2.方法二

  • 2981大整数加法

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

  • 知识迁移

    远迁移与近迁移 解决相似的问题 比如数学代数,会用整数加法,则可以相似整数的加法问题 如果遇到意外情况该怎么办...

  • RNN入门(4)利用LSTM实现整数加法运算

      本文将介绍LSTM模型在实现整数加法方面的应用。  我们以0-255之间的整数加法为例,生成的结果在0到510...

  • Swift-整数的减法,乘法和除法

    题目:实现整数的减法,乘法和除法,只允许使用加法. 减法 减法是加法的另外一种形式,减法通过取反可以变成加法. ...

  • 第三章作业

    无符号的整数加法、乘法是mod2^32的加法、乘法; 证明: #include "stdafx.h" #inclu...

网友评论

      本文标题:2981大整数加法

      本文链接:https://www.haomeiwen.com/subject/zsukzftx.html