解题思路:
大数加法,常规题,用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++代码)浏览:1461 |
WU-C语言程序设计教程(第三版)课后习题11.11 (C++代码)(想学链表的可以看看)浏览:1357 |
用筛法求之N内的素数。 (C语言代码)浏览:807 |
1050题解(结构体数组与结构体指针的使用)浏览:1108 |
震宇大神的杀毒软件 (C语言代码)浏览:1080 |
时间转换 (C语言代码)浏览:628 |
简单的a+b (C语言代码)浏览:541 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:555 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:615 |
简单的a+b (C语言代码)浏览:641 |