您的位置:首页 > 编程语言 > C语言/C++

杭电oj1002即用c++实现两个大数相加

2013-11-06 23:52 169 查看
#include<iostream>

#include<string>

#include<cstdio>

using namespace std;

int main()

{

string a,b;

int num,sum[1000];//数组尽量开大点,不然很容易越界!

cin>>num;

for(int l=0;l<num;l++)

{

cin>>a>>b;

int m=0,n=0,temp=0,i,k;

int q=0;//用于记录sum数组的长度!!

i=a.length();

k=b.length();

i=i-1;

k=k-1;

while(i>=0 && k>=0)//像是这样加,会一直加到一个数加完

{

m=a[i]-'0';

n=b[k]-'0';

sum[q++]=(temp+m+n)%10;

temp=(temp+m+n)/10;//temp取进位,并且加到下一次的加法中

i--;

k--;

}

//还需要处理一个长度的问题,判断哪个长,哪个短!

if(i>k)//a数比较大,确切的说是比较长!

{//cout<<"I am 1"<<endl;

while(i>=0)

{

m=a[i]-'0';

sum[q++]=(temp+m)%10;

temp=(temp+m)/10;

i--;

}

}

if(k>i)

{

while(k>=0)

{

m=b[k]-'0';

sum[q++]=(temp+m)%10;

temp=(temp+m)/10;

k--;

}

}

sum[q]=temp;

cout<<"Case "<<l+1<<":"<<endl;

cout<<a<<" + "<<b<<" = ";

if(sum[q]!=0) cout<<sum[q];

for(--q;q>=0;q--)

cout<<sum[q];

cout<<endl;

if(l<num-1) cout<<endl;

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: