大整数加法 顺序表

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int main()
{
int flag;int len1,len2,len3,len;
string a,b,c; int j=0;string swap;
int a1[100],b1[100],c1[200];

cout<<"请输入字符数组1和2:"<<endl;
cin>>a;
len1=a.length();
cin>>b;
len2=b.length();
if(len1<len2)//始终让长度大的在前面
{
swap=a;
a=b;
b=swap;
len=len1;
len1=len2;
len2=len;
}
// cout<<"len1 长度为:"<<len1<<endl;
//数组存数结构与现实数字正好相反 所以要颠倒
int len4=len1;
for(int i=0;i<len1;i++,len4--)
{
a1[len4-1]=a[i]-'0';
}

// cout<<"len2 长度为:"<<len2<<endl;
//数组存数结构与现实数字正好相反 所以要颠倒
int len5=len2;
for(int i=0;i<len2;i++,len5--)
{
b1[len5-1]=b[i]-'0';//字符减去符号‘0’则变成数字
}

for(j=0;j<=len2-1&&j<=len1-1;j++)
{
c1[j]=(a1[j]+b1[j]+flag)%10;//本位 注意进位标志flag
flag=(a1[j]+b1[j])/10;//进位

}
for(int i=len2;i<=len1-1;i++)
{
c1[i]=(a1[i]+flag)%10;
flag=(a1[i]+flag)/10;

}
c1[len1]=flag;
for(int i=len1;i>=0;i--)
{
cout<<c1[i];
}
}

 

 

 

posted @ 2017-03-11 23:37  mykonons  阅读(298)  评论(0)    收藏  举报