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

C/C++程序算法小练习--大整数加法

2016-12-05 21:45 597 查看
#include <iostream>
#include <cstring>
using namespace std;
void reverse_str(char *a,int size){
for(int i=0;i<size/2;++i){
char t=a[i];
a[i]=a[size-i-1];
a[size-i-1]=t;
}
}

void large_num_sum(){//两个大正整数相加
char a[1000]={0};
char b[1000]={0};
char c[1001]={0};
cin>>a;
cin>>b;
int a_len=strlen(a);
int b_len=strlen(b);
reverse_str(a,a_len);
reverse_str(b,b_len);
int max_len=a_len>b_len?a_len:b_len;
int i;
for(i=0;i<a_len&&i<b_len;++i){
c[i]+=a[i]+b[i]-'0'-'0';
if(c[i]>9){
c[i]-=10;
c[i+1]+=1;
}
}
if(i<a_len){
for(;i<a_len;++i){
c[i]+=a[i]-'0';
if(c[i]>9){
c[i]-=10;
c[i+1]+=1;
}
}
}
if(i<b_len){
for(;i<b_len;++i){
c[i]+=b[i]-'0';
if(c[i]>9){
c[i]-=10;
c[i+1]+=1;
}
}
}

int j;
for(j=max_len;j>0;--j){//去除多余的前导0,但至少要留一位数,防止出现全0结果时没有输出
if(c[j]!=0){
break;
}
}
for(int i=j;i>=0;--i){
cout<<(int)c[i];
}
cout<<endl;
}

int main()
{
large_num_sum();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 算法设计