两个极大正整数求和C++源程序

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

using namespace std;

int main()

{

string a, b;

int *sum;

int i, ja, jb;

cout << "请输入两个数字,每个数字以空格结尾:" << endl;

cin >> a >> b;

string temp;

if ( a.size() > b.size() ) // 如果a长度大于b,则交换两字符串

{

temp = a;

a = b;

b = temp;

}

// 在这后,就肯定是a的长度比b小,所以和的位数最大就是b的位数+1。

sum = new int[b.size()+1]; // 所以给和申请b的位数+1个位置。

sum[0] = 0;

char achar[1];

char bchar[1];

int carry = 0; // 记录进位

int sizeDif = b.size() - a.size(); // 记录两个数字的位数差

int count; // 记录和的位数

for ( ja = a.size()-1, jb = b.size()-1; ja >= 0; ja--, jb-- )

{

achar[0] = a[ja];

bchar[0] = b[jb];

sum[jb+1] = atoi(achar) + atoi(bchar) + carry;

carry = 0; // 清空进位标志位

if( sum[jb+1] > 9 )

{

carry = 1;

sum[jb+1] -= 10; // 使之成为一位数,方便输出。

}

}

for ( i = sizeDif-1; i >= 0 ; i-- )

{

bchar[0] = b[i];

sum[i+1] = atoi(bchar)+carry; // 转换为数字

carry = 0; // 清空进位标志位

if( sum[i+1] > 9 )

{

carry = 1;

sum[i+1] -= 10; // 使之成为一位数,方便输出。

}

}

cout << endl << "The process is:" << endl;

for ( i = 0; i <= sizeDif; i++ )

{

cout << " ";

}

cout << a << endl;

cout << "+" << b << endl;

for ( i = 0; i <= b.size(); i++ )

cout << "-";

cout << endl;

if ( carry == 1 ) // 当和的位数为b的位数+1时

{

cout << '1'; // 先输出最高位,否则就不输出。

}

else

{

cout << " ";

}

for ( i = 1; i <= b.size(); i++ )

cout << sum[i];

cout << endl;

cout << endl << "So the result is: ";

int remainder;

if ( carry == 1 ) // 当和的位数为b的位数+1时

{

count = b.size()+1;

sum[0] = 1;

remainder = count%4;

for ( i = 0; i < remainder; i++ )

cout << sum[i];

if ( remainder == 0 )

{

for ( ; remainder < 4; remainder++ )

cout << sum[remainder];

}

for ( i = remainder; i < count; i++ )

{

if ( (i-remainder) % 4 == 0)

cout << ',';

cout << sum[i];

}

}

else

{

count = b.size();

remainder = count%4;

for ( i = 1; i < remainder+1; i++ )

cout << sum[i];

for ( i = remainder+1; i <= count; i++ )

{

if ( (i-remainder-1) % 4 == 0)

cout << ',';

cout << sum[i];

}

}

cout << endl;

return 0;

}

相关文档
最新文档