首页 > 其他 > 详细

两个超大数相加

时间:2015-03-20 00:03:52      阅读:358      评论:0      收藏:0      [点我收藏+]

解决超大数相加的问题的一种思路是把整形转化成字符串,废话不多说直接上代码,已经调试通过。


#include<iostream>
#include<string>
#include<cmath>
using namespace std;

string add(string str1, string str2)
{
	int i;
	string str;

	int len_str1 = str1.length();
	int len_str2 = str2.length();
	int n = abs(len_str1-len_str2);
	//长度对齐
	if(len_str1 < len_str2)
		for(i=0; i<n; i++)
			str1 = "0"+ str1;
	else
		for(i=0; i<n; i++)
            str2 = "0"+ str2;
	len_str1 = str1.length();	//此时两个字符串的长度一样

	int cf=0;	//进位标志位
	int temp;	//存放两个数相加的和
	for(i=len_str1-1; i>=0; i--)
	{
		temp = str1[i]-'0' + str2[i]-'0' + cf;	//把字符串转化为整型
		cf = temp/10;
		temp = temp%10;
		str = char(temp+'0') + str;
	}
	if(cf!=0)
		str = char(cf+'0') + str;
	return str;
}

int main()
{
	string str1, str2;
	cin >> str1;
	cin >> str2;
	cout << add(str1, str2) << endl;
	return 0;
}


两个超大数相加

原文:http://blog.csdn.net/xumesang/article/details/44466073

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!