要求多组输入
给定 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];
}
}
}
#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);
}
}
这不就是个高精度模板吗
#include <bits/stdc++.h>
using namespace std;
int a[201], b[201], c[202];
int main ()
{
string s1, s2;
cin>>s1;
cin>>s2;
int len1=s1.size();
int len2=s2.size();
int len=max(len1,len2);
for(int i=0;i<len1;i++)
a[i]=s1[len1-i-1]-'0';
for(int i=0;i<len2;i++)
b[i]=s2[len2-i-1]-'0';
for(int i=0;i<len;i++)
{
c[i]=c[i]+a[i]+b[i];
c[i+1]=c[i]/10;
c[i]=c[i]%10;
}
if(c[len]) len++;
for(int i=len-1;i>=0;i--)
cout<<c[i];
return 0;
}