解题思路:

大数加法,常规题,用java肯定最方便(毕竟现成的库在那里),在这里还是用C++写吧。

字符串输入并且字符串输出,用字符串模拟加法运算的过程,从最后一位加起,用flag表示进位,每一次对应位数相加的结果进入新的字符串。(字符和数字的转化用'0')。


当两个字符串位数不一样时,较长的那个还要继续加,最后,考虑到得出的结果是否还有一次进位,单独用if判断一下。


最后,反转字符串str(肯定要反转啊,相加的结果是依次加进去的),利用reverse函数。

参考代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string add(string a,string b){
    int len1=a.size()-1,len2=b.size()-1;
    string str;
    int flag=0,sum=0;
    while(len1>=0&&len2>=0){
        sum=(a[len1--]-'0')+(b[len2--]-'0')+flag;
        flag=sum/10;
        sum=sum%10;
        str+=char(sum+'0');
    }
    while(len1>=0){
        sum=flag+(a[len1--]-'0');
        flag=sum/10;
        sum=sum%10;
        str+=char(sum+'0');
    }
    while(len2>=0){
        sum=flag+(b[len2--]-'0');
        flag=sum/10;
        sum=sum%10;
        str+=char(sum+'0');
    }
    if(flag)str+=char(flag+'0');
    reverse(str.begin(),str.end());
    return str;
}
int main(){
    string a,b;
    while(cin>>a>>b)
       cout<<add(a,b)<<endl;
	return 0;
}


点赞(2)
 

0.0分

4 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论