这是一道C++编程题目 请各位C++高手们帮忙写一下代码 谢谢

2024-12-02 14:33:11
推荐回答(1个)
回答1:

#include
#include

using namespace std;

/**
* 大数的加法,利用字符串处理
* 注:如果需要追求速度,最好采用指针处理
*/

string add(const string str1, const string str2 )
{
int carry=0; // 标志“进位“变量,初始为0

int len1 = str1.length(); // 字符串1的长度
int len2 = str2.length(); //差胡 字符串2的长度

string result=""; // 记录计算结果

char ch;
int temp=0;
int i=len1-1;
int j=len2-1;
while(i>=0&&j>=0)
{
temp =(int)( str1[i]-'0' + str2[j]-'0' + carry ); // 计算对应某一位相加的结果
carry = temp/10; // 计算进位
ch = (char)(temp%10+'0'); // 将数字转化成字符
result = ch+result; // 将这一位连接到结果字符串
--i;
--j;
} // end while

while(i>=0) // 判断字符串1是否处理结束
{
temp =(int)( str1[i]-'0'+ carry ); // 计算对应某一位相加的结果
carry = temp/10; // 计算进位
ch = (char)(temp%10+'0'); // 将数字转化成字符
result = ch+result; // 将这一位连接到结果字符串
--i;
} // end while

while(j>=0) // 判断字符串2是否处理结束
{
temp =(int)( str2[j]-'0' + carry ); // 计算对应某一位相加的结果
carry = temp/10; // 计算伍庆册进位
ch = (char)(temp%10+'0'); // 将数字转腔宏化成字符
result = ch+result; // 将这一位连接到结果字符串
--j;
} // end while

// 对进位进行处理
if( carry!=0 )
{
ch =(char)(carry+'0');
result = ch + result;
}

return result; // 返回计算结果
}

int main()
{
string str1, str2;

int n;
cin>>n;
while(n--)
{
cin>>str1>>str2 ;
cout<