大整数相加

45人阅读 评论(0) 收藏 举报
分类:

网上某位大神的思路很符合我的三观,顺着看下来竟然每行都看懂了,要是每个程序员思路都这么清晰就好了呢。

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;

int main()
{
    /*数组a和b用于倒序装入输入的字符串S1和S2,k为每次相加时的进位,len1和len2为输入长度*/
    int a[1000],b[1000],i,k,len1,len2;
    char S1[1000],S2[1000];
    while(scanf("%s%s",S1,S2)!=EOF)
    {
        memset(a,0,sizeof(a));//初始化
        memset(b,0,sizeof(b));//初始化
        k=0;//初始化
        len1=strlen(S1);
        len2=strlen(S2);
        /*倒序装入*/
        for(i=0;i<len1;i++)
            a[i]=S1[len1-1-i]-'0';
        for(i=0;i<len2;i++)
            b[i]=S2[len2-1-i]-'0';
        /*先从0开始相加,注意这里的技巧性哦*/
        for(i=0;i<len1&&i<len2;i++)
        {
            a[i]=a[i]+b[i]+k;
            k=a[i]/10;
            a[i]=a[i]%10;
        }
        /*到这,有可能会有一个长一点,就让那个长的继续加就可以了*/
        if(len1>len2)
        {
            while(i<len1)
            {
                a[i]=a[i]+k;
                k=a[i]/10;
                a[i]=a[i]%10;
                i++;
            }
        }
        if(len1<len2)
        {
            while(i<len2)
            {
                a[i]=b[i]+k;
                k=a[i]/10;
                a[i]=a[i]%10;
                i++;
            }
        }
        /*因为最后输出是倒序输出,因此第一个字符不能为0哦!所以就判断一下啦,如果为0就i--咯*/
        if(k)
            a[i]=k;
        else
            i--;
        /*倒序输出*/
        while(i>=0)
            printf("%d",a[i--]);
        printf("\n");
    }
    /*怎么样,是不是很简单呢?聪明的你学会了吗?*/
}

查看评论

复习C/C++编程之大数相加

两个数相加一直是C/C++最基础的问题,一般性的解法都是定义两个int型变量,然后输出两数相加的结果即可。可是众所周知,int型变量都有它的取值范围。对于不同系统不同编译环境,可能有所不同,比如16位...
  • u012169230
  • u012169230
  • 2016-04-04 20:03:07
  • 4204

C语言超大数相加

#include #include void reverse(char *s,int len); char * addLargeNumber(char *s1,char *s2); int...
  • hanangellove
  • hanangellove
  • 2015-01-07 08:54:46
  • 7955

C 语言 超大数相加和求余

超大数相加 这里超大数表示已经超出int、long、long long 范围的数字,所以不能简单的相加。此时就要用字符串,把输入的内容储存在字符串中,通过字符与数字之间的关系计算结果。 思路: ...
  • hanangellove
  • hanangellove
  • 2015-04-11 19:30:30
  • 5211

大整数求和

*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Wo...
  • vcx08
  • vcx08
  • 2016-09-09 21:28:42
  • 585

C++大整数相加

C++大整数相加算法,采用数组保存大整数,然后进行大整数的相加。#include #include char *LongAdd(char *b, char *c); int main() { ...
  • qq_29606255
  • qq_29606255
  • 2017-12-15 19:40:55
  • 103

C/C++“大数相加算法”

函数原型介绍: [cpp] view plaincopy // first和second:任意大小的十进制字符串整数,该函数主要解决超出int和long值域...
  • zeroyl
  • zeroyl
  • 2014-06-24 10:08:03
  • 936

C/C++实现大整数加减法

http://115.29.224.174/JudgeOnline/problem.php?id=1053采用存粹的字符串处理,涉及到 数字的优化(符号处理,去零) 字符串数字大小的比较 字符串的加法...
  • qq_26437925
  • qq_26437925
  • 2017-03-18 16:53:14
  • 1969

【JS】大整数相加,相乘

首先,对于大整数,是指超过规定类型的整数,它一般的存储类型为字符串类型char。所以大整数的加、乘,实际上就是模拟手工运算。做每一位的运算。 在JS中,需要将字符串中的每一位字符利用parseInt...
  • mine666
  • mine666
  • 2013-04-23 16:31:03
  • 1819

java实现大整数相加

/*大整数相加,java实现*/import java.util.*; public class Main2 { public static String str1, str2; public ...
  • liangguojunainia
  • liangguojunainia
  • 2014-03-14 11:21:12
  • 655

大整数相加

网上某位大神的思路很符合我的三观,顺着看下来竟然每行都看懂了,要是每个程序员思路都这么清晰就好了呢。#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;io...
  • shijie97
  • shijie97
  • 2018-04-15 21:42:50
  • 45
    个人资料
    持之以恒
    等级:
    访问量: 8969
    积分: 823
    排名: 6万+
    最新评论