解题思路:
大数加法,常规题,用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; }
0.0分
4 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:783 |
剪刀石头布 (C语言代码)不知道怎么直接在scanf中用枚举变量浏览:1436 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1177 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:626 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:561 |
1054题解浏览:516 |
蛇行矩阵 (C语言代码)浏览:560 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:856 |
简单的a+b (C语言代码)浏览:473 |