投稿 资料上传 提问 搜索
您现在的位置是: 首页 > 问答 > 正文

给定 2 个正整数 a,b ,a 和 b 最多可能有 40 位,求出 a +b 的和。 我的输出结果不对!求指点

要求多组输入
给定 2 个正整数 a,b ,a 和 b 最多可能有 40 位,求出 a +b 的和。
我的输出结果
33333333333333333333333333
22222222222222222222222222
22555555555555555555555555 

#include<iostream>
#include<cstring>
using namespace std;
int main(){
char s1[50],s2[50];
int a[50]={0},b[50]={0},l1,l2,c,k,i;
while(cin>>s1[50]>>s2[50]){
gets(s1);
gets(s2);
l1=strlen(s1);
l2=strlen(s2);
if(l1<l2) k=l2;
else k=l1;c=k;
for(i=0;i<l1;k--,i++)
a[k]=s1[l1-1-i]-'0';
for(k=c,i=0;i<l2;k--,i++)
b[k]=s2[l2-1-i]-'0';
for(i=c;i>=0;i--){
a[i]+=b[i];
if(a[i]>=10){
a[i]=10;
a[i-1]++;
}
}
if(a[0]!=0){
for(i=0;i<=c;i++)
cout<<a[i];
}else{
for(i=1;i<=c;i++)
cout<<a[i];
}
}
}


 

问题回复
  1. 浅怀感伤
    浅怀感伤IT技术之家

    #include<iostream>
    #include<string>
    #include<cstring>
    using namespace std;
    int main(){
    char s1[50],s2[50];
    int a[50]={0},b[50]={0},l1,l2,c,k,i;
    while(1){
    gets(s1);
    gets(s2);
    l1=strlen(s1);
    l2=strlen(s2);
    if(l1<l2) k=l2;
    else k=l1;c=k;
    for(i=0;i<l1;k--,i++)
    a[k]=s1[l1-1-i]-'0';
    for(k=c,i=0;i<l2;k--,i++)
    b[k]=s2[l2-1-i]-'0';
    for(i=c;i>=0;i--){
    a[i]+=b[i];
    if(a[i]>=10){
    a[i]=10;
    a[i-1]++;
    }
    }
    if(a[0]!=0){
    for(i=0;i<=c;i++)
    cout<<a[i];
    }else{
    for(i=1;i<=c;i++)
    cout<<a[i];
    }
    //这里可以换成别的逻辑,具体看你的题目怎么要求
    string s;
    cout << endl << "1=continue 2=exit";
    cin >> s;
    if (s == "2") break;
    fflush(stdin);
    }
    }

    请参考

    回复